[{"data":1,"prerenderedAt":11222},["ShallowReactive",2],{"navigation_docs":3,"-reference-best-practices":602,"-reference-best-practices-surround":11217},[4,35,85,138,318,479,538,577],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Start","\u002Fstart","1.start",[9,14,19,24,29],{"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",{"title":30,"path":31,"stem":32,"icon":33},"Choose your logger","\u002Fstart\u002Ftypescript-logging-library","1.start\u002F5.typescript-logging-library","i-lucide-file-code",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Learn","\u002Flearn","2.learn",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":66,"path":67,"stem":68,"icon":69},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":71,"path":72,"stem":73,"icon":74},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":76,"path":77,"stem":78,"icon":79},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":81,"path":82,"stem":83,"icon":84},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":86,"path":87,"stem":88,"children":89,"page":34},"CLI","\u002Fcli","3.cli",[90,93,98,103,108,113,118,123,128,133],{"title":41,"path":91,"stem":92,"icon":49},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":94,"path":95,"stem":96,"icon":97},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":99,"path":100,"stem":101,"icon":102},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":104,"path":105,"stem":106,"icon":107},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":109,"path":110,"stem":111,"icon":112},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":114,"path":115,"stem":116,"icon":117},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":119,"path":120,"stem":121,"icon":122},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":124,"path":125,"stem":126,"icon":127},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":129,"path":130,"stem":131,"icon":132},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":134,"path":135,"stem":136,"icon":137},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":139,"path":140,"stem":141,"children":142,"page":34},"Integrate","\u002Fintegrate","4.integrate",[143,147,230],{"title":41,"path":144,"stem":145,"icon":146},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":148,"path":149,"stem":150,"children":151,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[152,155,185,210],{"title":41,"path":153,"stem":154,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":156,"path":157,"stem":158,"children":159,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[160,165,170,175,180],{"title":161,"path":162,"stem":163,"icon":164},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":166,"path":167,"stem":168,"icon":169},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":171,"path":172,"stem":173,"icon":174},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":176,"path":177,"stem":178,"icon":179},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":181,"path":182,"stem":183,"icon":184},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":186,"path":187,"stem":188,"children":189,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[190,195,200,205],{"title":191,"path":192,"stem":193,"icon":194},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":196,"path":197,"stem":198,"icon":199},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":201,"path":202,"stem":203,"icon":204},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":206,"path":207,"stem":208,"icon":209},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":211,"path":212,"stem":213,"children":214,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[215,220,225],{"title":216,"path":217,"stem":218,"icon":219},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":221,"path":222,"stem":223,"icon":224},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":226,"path":227,"stem":228,"icon":229},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":231,"path":232,"stem":233,"children":234,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[235,239,244,249,254,259,264,269,274,279,284,289,294,299,303,308,313],{"title":41,"path":236,"stem":237,"icon":238},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":240,"path":241,"stem":242,"icon":243},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":245,"path":246,"stem":247,"icon":248},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":250,"path":251,"stem":252,"icon":253},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":255,"path":256,"stem":257,"icon":258},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":260,"path":261,"stem":262,"icon":263},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":265,"path":266,"stem":267,"icon":268},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":270,"path":271,"stem":272,"icon":273},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":275,"path":276,"stem":277,"icon":278},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":280,"path":281,"stem":282,"icon":283},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":285,"path":286,"stem":287,"icon":288},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":290,"path":291,"stem":292,"icon":293},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":295,"path":296,"stem":297,"icon":298},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":300,"path":301,"stem":302,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":304,"path":305,"stem":306,"icon":307},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":309,"path":310,"stem":311,"icon":312},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":314,"path":315,"stem":316,"icon":317},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":319,"path":320,"stem":321,"children":322,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[323,326,331,359,386,418,439,444,449,453],{"title":41,"path":324,"stem":325,"icon":107},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":327,"path":328,"stem":329,"icon":330},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":332,"icon":333,"path":334,"stem":335,"children":336,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[337,340,345,350,355],{"title":41,"path":338,"stem":339,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":341,"path":342,"stem":343,"icon":344},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":346,"path":347,"stem":348,"icon":349},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":351,"path":352,"stem":353,"icon":354},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":356,"path":357,"stem":358,"icon":137},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":360,"icon":361,"path":362,"stem":363,"children":364,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[365,368,373,378,382],{"title":41,"path":366,"stem":367,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":369,"path":370,"stem":371,"icon":372},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":374,"path":375,"stem":376,"icon":377},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":379,"path":380,"stem":381,"icon":330},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":383,"path":384,"stem":385,"icon":112},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":387,"icon":388,"path":389,"stem":390,"children":391,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[392,395,400,405,410,414],{"title":41,"path":393,"stem":394,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":396,"path":397,"stem":398,"icon":399},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":401,"path":402,"stem":403,"icon":404},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":406,"path":407,"stem":408,"icon":409},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":411,"path":412,"stem":413,"icon":388},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":415,"path":416,"stem":417,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":356,"icon":112,"path":419,"stem":420,"children":421,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[422,425,430,435],{"title":41,"path":423,"stem":424,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":426,"path":427,"stem":428,"icon":429},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":431,"path":432,"stem":433,"icon":434},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":436,"path":437,"stem":438,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":440,"path":441,"stem":442,"icon":443},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":445,"path":446,"stem":447,"icon":448},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":450,"path":451,"stem":452,"icon":434},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":454,"icon":455,"path":456,"stem":457,"children":458,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[459,462,467,472,475],{"title":41,"path":460,"stem":461,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":463,"path":464,"stem":465,"icon":466},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":468,"path":469,"stem":470,"icon":471},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":436,"path":473,"stem":474,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":415,"path":476,"stem":477,"icon":478},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":480,"path":481,"stem":482,"children":483,"page":34},"Extend","\u002Fextend","6.extend",[484,488,493,498,502,507,511,515,519,523,528,533],{"title":41,"path":485,"stem":486,"icon":487},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":489,"path":490,"stem":491,"icon":492},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":494,"path":495,"stem":496,"icon":497},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":499,"path":500,"stem":501,"icon":492},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":503,"path":504,"stem":505,"icon":506},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":415,"path":508,"stem":509,"icon":510},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":512,"path":513,"stem":514,"icon":487},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":516,"path":517,"stem":518,"icon":443},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":520,"path":521,"stem":522,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":524,"path":525,"stem":526,"icon":527},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":529,"path":530,"stem":531,"icon":532},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":534,"path":535,"stem":536,"icon":537},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":436,"path":539,"stem":540,"children":541,"page":34},"\u002Freference","7.reference",[542,546,551,554,559,563,568,572],{"title":41,"path":543,"stem":544,"icon":545},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":547,"path":548,"stem":549,"icon":550},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":383,"path":552,"stem":553,"icon":112},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":555,"path":556,"stem":557,"icon":558},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":560,"path":561,"stem":562,"icon":388},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":564,"path":565,"stem":566,"icon":567},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":569,"path":570,"stem":571,"icon":443},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":573,"path":574,"stem":575,"icon":576},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":578,"path":579,"stem":580,"children":581,"page":34},"Compare","\u002Fcompare","8.compare",[582,586,590,594,598],{"title":583,"path":584,"stem":585,"icon":567},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":587,"path":588,"stem":589,"icon":204},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":591,"path":592,"stem":593,"icon":567},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":595,"path":596,"stem":597,"icon":567},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":599,"path":600,"stem":601,"icon":567},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":603,"title":560,"body":604,"description":11207,"extension":11208,"links":11209,"meta":11213,"navigation":11214,"path":561,"seo":11215,"stem":562,"__hash__":11216},"docs\u002F7.reference\u002F4.best-practices.md",{"type":605,"value":606,"toc":11188},"minimark",[607,611,616,628,706,711,714,717,1669,1684,1692,1696,1701,1704,2770,2774,2777,3377,3380,4508,4512,4515,10491,10495,10499,10502,10506,10545,10549,10599,10603,10628,10632,10635,10819,10823,10937,10941,10944,11151,11163,11167,11184],[608,609,610],"p",{},"A wide event carries every field the request touched, which is what makes it queryable and what makes an accidental secret permanent. This page covers what to keep out, what to redact, and what production costs.",[612,613,615],"h2",{"id":614},"what-not-to-log","What NOT to Log",[608,617,618,619,623,624],{},"The same accumulation that makes a wide event worth querying puts a secret in your drain the moment one reaches ",[620,621,622],"code",{},"log.set",". ",[625,626,627],"strong",{},"Never log:",[629,630,631,647],"table",{},[632,633,634],"thead",{},[635,636,637,641,644],"tr",{},[638,639,640],"th",{},"Category",[638,642,643],{},"Examples",[638,645,646],{},"Risk",[648,649,650,662,673,684,695],"tbody",{},[635,651,652,656,659],{},[653,654,655],"td",{},"Credentials",[653,657,658],{},"Passwords, API keys, tokens, secrets",[653,660,661],{},"Account compromise",[635,663,664,667,670],{},[653,665,666],{},"Payment data",[653,668,669],{},"Full card numbers, CVV, bank accounts",[653,671,672],{},"PCI compliance violation",[635,674,675,678,681],{},[653,676,677],{},"Personal data (PII)",[653,679,680],{},"SSN, passport numbers, driver's license",[653,682,683],{},"Privacy laws (GDPR, CCPA)",[635,685,686,689,692],{},[653,687,688],{},"Health data",[653,690,691],{},"Medical records, diagnoses",[653,693,694],{},"HIPAA violation",[635,696,697,700,703],{},[653,698,699],{},"Authentication",[653,701,702],{},"Session tokens, JWTs, refresh tokens",[653,704,705],{},"Session hijacking",[707,708,710],"callout",{"color":709,"icon":59},"error","Logs are often accessible to your entire team and may be stored in third-party services. Treat them as semi-public.",[612,712,71],{"id":713},"auto-redaction",[608,715,716],{},"The simplest way to protect PII is to enable built-in auto-redaction:",[718,719,720,767,885,988,1054,1138,1224,1282,1336,1394,1448,1502,1568,1622],"framework-tabs",{},[721,722,728],"pre",{"className":723,"code":724,"filename":240,"language":725,"meta":726,"style":727},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","evlog: {\n  redact: true,\n}\n","typescript","nuxt.config.ts","",[620,729,730,746,761],{"__ignoreMap":727},[731,732,735,739,743],"span",{"class":733,"line":734},"line",1,[731,736,738],{"class":737},"sBMFI","evlog",[731,740,742],{"class":741},"sMK4o",":",[731,744,745],{"class":741}," {\n",[731,747,749,752,754,758],{"class":733,"line":748},2,[731,750,751],{"class":737},"  redact",[731,753,742],{"class":741},[731,755,757],{"class":756},"sfNiH"," true",[731,759,760],{"class":741},",\n",[731,762,764],{"class":733,"line":763},3,[731,765,766],{"class":741},"}\n",[721,768,771],{"className":723,"code":769,"filename":255,"language":725,"meta":770,"style":727},"import { defineConfig } from 'nitro'\nimport evlog from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineConfig({\n  modules: [evlog({ redact: true })],\n})\n","nitro.config.ts",[620,772,773,802,819,825,843,876],{"__ignoreMap":727},[731,774,775,779,782,786,789,792,795,799],{"class":733,"line":734},[731,776,778],{"class":777},"s7zQu","import",[731,780,781],{"class":741}," {",[731,783,785],{"class":784},"sTEyZ"," defineConfig",[731,787,788],{"class":741}," }",[731,790,791],{"class":777}," from",[731,793,794],{"class":741}," '",[731,796,798],{"class":797},"sfazB","nitro",[731,800,801],{"class":741},"'\n",[731,803,804,806,809,812,814,817],{"class":733,"line":748},[731,805,778],{"class":777},[731,807,808],{"class":784}," evlog ",[731,810,811],{"class":777},"from",[731,813,794],{"class":741},[731,815,816],{"class":797},"evlog\u002Fnitro\u002Fv3",[731,818,801],{"class":741},[731,820,821],{"class":733,"line":763},[731,822,824],{"emptyLinePlaceholder":823},true,"\n",[731,826,828,831,834,837,840],{"class":733,"line":827},4,[731,829,830],{"class":777},"export",[731,832,833],{"class":777}," default",[731,835,785],{"class":836},"s2Zo4",[731,838,839],{"class":784},"(",[731,841,842],{"class":741},"{\n",[731,844,846,850,852,855,857,859,862,865,867,869,871,874],{"class":733,"line":845},5,[731,847,849],{"class":848},"swJcz","  modules",[731,851,742],{"class":741},[731,853,854],{"class":784}," [",[731,856,738],{"class":836},[731,858,839],{"class":784},[731,860,861],{"class":741},"{",[731,863,864],{"class":848}," redact",[731,866,742],{"class":741},[731,868,757],{"class":756},[731,870,788],{"class":741},[731,872,873],{"class":784},")]",[731,875,760],{"class":741},[731,877,879,882],{"class":733,"line":878},6,[731,880,881],{"class":741},"}",[731,883,884],{"class":784},")\n",[721,886,889],{"className":723,"code":887,"filename":245,"language":725,"meta":888,"style":727},"import { createEvlog } from 'evlog\u002Fnext'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  redact: true,\n})\n","lib\u002Fevlog.ts",[620,890,891,911,915,955,972,982],{"__ignoreMap":727},[731,892,893,895,897,900,902,904,906,909],{"class":733,"line":734},[731,894,778],{"class":777},[731,896,781],{"class":741},[731,898,899],{"class":784}," createEvlog",[731,901,788],{"class":741},[731,903,791],{"class":777},[731,905,794],{"class":741},[731,907,908],{"class":797},"evlog\u002Fnext",[731,910,801],{"class":741},[731,912,913],{"class":733,"line":748},[731,914,824],{"emptyLinePlaceholder":823},[731,916,917,919,923,925,928,931,934,936,939,941,944,946,949,951,953],{"class":733,"line":763},[731,918,830],{"class":777},[731,920,922],{"class":921},"spNyl"," const",[731,924,781],{"class":741},[731,926,927],{"class":784}," withEvlog",[731,929,930],{"class":741},",",[731,932,933],{"class":784}," useLogger",[731,935,930],{"class":741},[731,937,938],{"class":784}," log",[731,940,930],{"class":741},[731,942,943],{"class":784}," createError ",[731,945,881],{"class":741},[731,947,948],{"class":741}," =",[731,950,899],{"class":836},[731,952,839],{"class":784},[731,954,842],{"class":741},[731,956,957,960,962,964,967,970],{"class":733,"line":827},[731,958,959],{"class":848},"  service",[731,961,742],{"class":741},[731,963,794],{"class":741},[731,965,966],{"class":797},"my-app",[731,968,969],{"class":741},"'",[731,971,760],{"class":741},[731,973,974,976,978,980],{"class":733,"line":845},[731,975,751],{"class":848},[731,977,742],{"class":741},[731,979,757],{"class":756},[731,981,760],{"class":741},[731,983,984,986],{"class":733,"line":878},[731,985,881],{"class":741},[731,987,884],{"class":784},[721,989,992],{"className":723,"code":990,"filename":250,"language":725,"meta":991,"style":727},"import { createEvlogHooks } from 'evlog\u002Fsveltekit'\n\nexport const { handle, handleError } = createEvlogHooks({ redact: true })\n","src\u002Fhooks.server.ts",[620,993,994,1014,1018],{"__ignoreMap":727},[731,995,996,998,1000,1003,1005,1007,1009,1012],{"class":733,"line":734},[731,997,778],{"class":777},[731,999,781],{"class":741},[731,1001,1002],{"class":784}," createEvlogHooks",[731,1004,788],{"class":741},[731,1006,791],{"class":777},[731,1008,794],{"class":741},[731,1010,1011],{"class":797},"evlog\u002Fsveltekit",[731,1013,801],{"class":741},[731,1015,1016],{"class":733,"line":748},[731,1017,824],{"emptyLinePlaceholder":823},[731,1019,1020,1022,1024,1026,1029,1031,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052],{"class":733,"line":763},[731,1021,830],{"class":777},[731,1023,922],{"class":921},[731,1025,781],{"class":741},[731,1027,1028],{"class":784}," handle",[731,1030,930],{"class":741},[731,1032,1033],{"class":784}," handleError ",[731,1035,881],{"class":741},[731,1037,948],{"class":741},[731,1039,1002],{"class":836},[731,1041,839],{"class":784},[731,1043,861],{"class":741},[731,1045,864],{"class":848},[731,1047,742],{"class":741},[731,1049,757],{"class":756},[731,1051,788],{"class":741},[731,1053,884],{"class":784},[721,1055,1056],{"className":723,"code":769,"filename":260,"language":725,"meta":770,"style":727},[620,1057,1058,1076,1090,1094,1106,1132],{"__ignoreMap":727},[731,1059,1060,1062,1064,1066,1068,1070,1072,1074],{"class":733,"line":734},[731,1061,778],{"class":777},[731,1063,781],{"class":741},[731,1065,785],{"class":784},[731,1067,788],{"class":741},[731,1069,791],{"class":777},[731,1071,794],{"class":741},[731,1073,798],{"class":797},[731,1075,801],{"class":741},[731,1077,1078,1080,1082,1084,1086,1088],{"class":733,"line":748},[731,1079,778],{"class":777},[731,1081,808],{"class":784},[731,1083,811],{"class":777},[731,1085,794],{"class":741},[731,1087,816],{"class":797},[731,1089,801],{"class":741},[731,1091,1092],{"class":733,"line":763},[731,1093,824],{"emptyLinePlaceholder":823},[731,1095,1096,1098,1100,1102,1104],{"class":733,"line":827},[731,1097,830],{"class":777},[731,1099,833],{"class":777},[731,1101,785],{"class":836},[731,1103,839],{"class":784},[731,1105,842],{"class":741},[731,1107,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130],{"class":733,"line":845},[731,1109,849],{"class":848},[731,1111,742],{"class":741},[731,1113,854],{"class":784},[731,1115,738],{"class":836},[731,1117,839],{"class":784},[731,1119,861],{"class":741},[731,1121,864],{"class":848},[731,1123,742],{"class":741},[731,1125,757],{"class":756},[731,1127,788],{"class":741},[731,1129,873],{"class":784},[731,1131,760],{"class":741},[731,1133,1134,1136],{"class":733,"line":878},[731,1135,881],{"class":741},[731,1137,884],{"class":784},[721,1139,1142],{"className":723,"code":1140,"filename":290,"language":725,"meta":1141,"style":727},"import { evlog } from 'evlog\u002Freact-router'\n\nexport const middleware: Route.MiddlewareFunction[] = [\n  evlog({ redact: true }),\n]\n","app\u002Froot.tsx",[620,1143,1144,1164,1168,1197,1219],{"__ignoreMap":727},[731,1145,1146,1148,1150,1153,1155,1157,1159,1162],{"class":733,"line":734},[731,1147,778],{"class":777},[731,1149,781],{"class":741},[731,1151,1152],{"class":784}," evlog",[731,1154,788],{"class":741},[731,1156,791],{"class":777},[731,1158,794],{"class":741},[731,1160,1161],{"class":797},"evlog\u002Freact-router",[731,1163,801],{"class":741},[731,1165,1166],{"class":733,"line":748},[731,1167,824],{"emptyLinePlaceholder":823},[731,1169,1170,1172,1174,1177,1179,1182,1185,1188,1191,1194],{"class":733,"line":763},[731,1171,830],{"class":777},[731,1173,922],{"class":921},[731,1175,1176],{"class":784}," middleware",[731,1178,742],{"class":741},[731,1180,1181],{"class":737}," Route",[731,1183,1184],{"class":741},".",[731,1186,1187],{"class":737},"MiddlewareFunction",[731,1189,1190],{"class":784},"[] ",[731,1192,1193],{"class":741},"=",[731,1195,1196],{"class":784}," [\n",[731,1198,1199,1202,1204,1206,1208,1210,1212,1214,1217],{"class":733,"line":827},[731,1200,1201],{"class":836},"  evlog",[731,1203,839],{"class":784},[731,1205,861],{"class":741},[731,1207,864],{"class":848},[731,1209,742],{"class":741},[731,1211,757],{"class":756},[731,1213,788],{"class":741},[731,1215,1216],{"class":784},")",[731,1218,760],{"class":741},[731,1220,1221],{"class":733,"line":845},[731,1222,1223],{"class":784},"]\n",[721,1225,1228],{"className":723,"code":1226,"filename":275,"language":725,"meta":1227,"style":727},"import { evlog } from 'evlog\u002Fhono'\n\napp.use(evlog({ redact: true }))\n","src\u002Findex.ts",[620,1229,1230,1249,1253],{"__ignoreMap":727},[731,1231,1232,1234,1236,1238,1240,1242,1244,1247],{"class":733,"line":734},[731,1233,778],{"class":777},[731,1235,781],{"class":741},[731,1237,1152],{"class":784},[731,1239,788],{"class":741},[731,1241,791],{"class":777},[731,1243,794],{"class":741},[731,1245,1246],{"class":797},"evlog\u002Fhono",[731,1248,801],{"class":741},[731,1250,1251],{"class":733,"line":748},[731,1252,824],{"emptyLinePlaceholder":823},[731,1254,1255,1258,1260,1263,1265,1267,1269,1271,1273,1275,1277,1279],{"class":733,"line":763},[731,1256,1257],{"class":784},"app",[731,1259,1184],{"class":741},[731,1261,1262],{"class":836},"use",[731,1264,839],{"class":784},[731,1266,738],{"class":836},[731,1268,839],{"class":784},[731,1270,861],{"class":741},[731,1272,864],{"class":848},[731,1274,742],{"class":741},[731,1276,757],{"class":756},[731,1278,788],{"class":741},[731,1280,1281],{"class":784},"))\n",[721,1283,1285],{"className":723,"code":1284,"filename":270,"language":725,"meta":1227,"style":727},"import { evlog } from 'evlog\u002Fexpress'\n\napp.use(evlog({ redact: true }))\n",[620,1286,1287,1306,1310],{"__ignoreMap":727},[731,1288,1289,1291,1293,1295,1297,1299,1301,1304],{"class":733,"line":734},[731,1290,778],{"class":777},[731,1292,781],{"class":741},[731,1294,1152],{"class":784},[731,1296,788],{"class":741},[731,1298,791],{"class":777},[731,1300,794],{"class":741},[731,1302,1303],{"class":797},"evlog\u002Fexpress",[731,1305,801],{"class":741},[731,1307,1308],{"class":733,"line":748},[731,1309,824],{"emptyLinePlaceholder":823},[731,1311,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334],{"class":733,"line":763},[731,1313,1257],{"class":784},[731,1315,1184],{"class":741},[731,1317,1262],{"class":836},[731,1319,839],{"class":784},[731,1321,738],{"class":836},[731,1323,839],{"class":784},[731,1325,861],{"class":741},[731,1327,864],{"class":848},[731,1329,742],{"class":741},[731,1331,757],{"class":756},[731,1333,788],{"class":741},[731,1335,1281],{"class":784},[721,1337,1339],{"className":723,"code":1338,"filename":280,"language":725,"meta":1227,"style":727},"import { evlog } from 'evlog\u002Ffastify'\n\nawait app.register(evlog, { redact: true })\n",[620,1340,1341,1360,1364],{"__ignoreMap":727},[731,1342,1343,1345,1347,1349,1351,1353,1355,1358],{"class":733,"line":734},[731,1344,778],{"class":777},[731,1346,781],{"class":741},[731,1348,1152],{"class":784},[731,1350,788],{"class":741},[731,1352,791],{"class":777},[731,1354,794],{"class":741},[731,1356,1357],{"class":797},"evlog\u002Ffastify",[731,1359,801],{"class":741},[731,1361,1362],{"class":733,"line":748},[731,1363,824],{"emptyLinePlaceholder":823},[731,1365,1366,1369,1372,1374,1377,1380,1382,1384,1386,1388,1390,1392],{"class":733,"line":763},[731,1367,1368],{"class":777},"await",[731,1370,1371],{"class":784}," app",[731,1373,1184],{"class":741},[731,1375,1376],{"class":836},"register",[731,1378,1379],{"class":784},"(evlog",[731,1381,930],{"class":741},[731,1383,781],{"class":741},[731,1385,864],{"class":848},[731,1387,742],{"class":741},[731,1389,757],{"class":756},[731,1391,788],{"class":741},[731,1393,884],{"class":784},[721,1395,1397],{"className":723,"code":1396,"filename":285,"language":725,"meta":1227,"style":727},"import { evlog } from 'evlog\u002Felysia'\n\napp.use(evlog({ redact: true }))\n",[620,1398,1399,1418,1422],{"__ignoreMap":727},[731,1400,1401,1403,1405,1407,1409,1411,1413,1416],{"class":733,"line":734},[731,1402,778],{"class":777},[731,1404,781],{"class":741},[731,1406,1152],{"class":784},[731,1408,788],{"class":741},[731,1410,791],{"class":777},[731,1412,794],{"class":741},[731,1414,1415],{"class":797},"evlog\u002Felysia",[731,1417,801],{"class":741},[731,1419,1420],{"class":733,"line":748},[731,1421,824],{"emptyLinePlaceholder":823},[731,1423,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444,1446],{"class":733,"line":763},[731,1425,1257],{"class":784},[731,1427,1184],{"class":741},[731,1429,1262],{"class":836},[731,1431,839],{"class":784},[731,1433,738],{"class":836},[731,1435,839],{"class":784},[731,1437,861],{"class":741},[731,1439,864],{"class":848},[731,1441,742],{"class":741},[731,1443,757],{"class":756},[731,1445,788],{"class":741},[731,1447,1281],{"class":784},[721,1449,1452],{"className":723,"code":1450,"filename":265,"language":725,"meta":1451,"style":727},"import { EvlogModule } from 'evlog\u002Fnestjs'\n\nEvlogModule.forRoot({ redact: true })\n","src\u002Fapp.module.ts",[620,1453,1454,1474,1478],{"__ignoreMap":727},[731,1455,1456,1458,1460,1463,1465,1467,1469,1472],{"class":733,"line":734},[731,1457,778],{"class":777},[731,1459,781],{"class":741},[731,1461,1462],{"class":784}," EvlogModule",[731,1464,788],{"class":741},[731,1466,791],{"class":777},[731,1468,794],{"class":741},[731,1470,1471],{"class":797},"evlog\u002Fnestjs",[731,1473,801],{"class":741},[731,1475,1476],{"class":733,"line":748},[731,1477,824],{"emptyLinePlaceholder":823},[731,1479,1480,1483,1485,1488,1490,1492,1494,1496,1498,1500],{"class":733,"line":763},[731,1481,1482],{"class":784},"EvlogModule",[731,1484,1184],{"class":741},[731,1486,1487],{"class":836},"forRoot",[731,1489,839],{"class":784},[731,1491,861],{"class":741},[731,1493,864],{"class":848},[731,1495,742],{"class":741},[731,1497,757],{"class":756},[731,1499,788],{"class":741},[731,1501,884],{"class":784},[721,1503,1506],{"className":723,"code":1504,"filename":309,"language":725,"meta":1505,"style":727},"import { withEvlog } from 'evlog\u002Forpc'\n\nconst handler = withEvlog(new RPCHandler(router), { redact: true })\n","server\u002Forpc.ts",[620,1507,1508,1527,1531],{"__ignoreMap":727},[731,1509,1510,1512,1514,1516,1518,1520,1522,1525],{"class":733,"line":734},[731,1511,778],{"class":777},[731,1513,781],{"class":741},[731,1515,927],{"class":784},[731,1517,788],{"class":741},[731,1519,791],{"class":777},[731,1521,794],{"class":741},[731,1523,1524],{"class":797},"evlog\u002Forpc",[731,1526,801],{"class":741},[731,1528,1529],{"class":733,"line":748},[731,1530,824],{"emptyLinePlaceholder":823},[731,1532,1533,1536,1539,1541,1543,1545,1548,1551,1554,1556,1558,1560,1562,1564,1566],{"class":733,"line":763},[731,1534,1535],{"class":921},"const",[731,1537,1538],{"class":784}," handler ",[731,1540,1193],{"class":741},[731,1542,927],{"class":836},[731,1544,839],{"class":784},[731,1546,1547],{"class":741},"new",[731,1549,1550],{"class":836}," RPCHandler",[731,1552,1553],{"class":784},"(router)",[731,1555,930],{"class":741},[731,1557,781],{"class":741},[731,1559,864],{"class":848},[731,1561,742],{"class":741},[731,1563,757],{"class":756},[731,1565,788],{"class":741},[731,1567,884],{"class":784},[721,1569,1572],{"className":723,"code":1570,"filename":295,"language":725,"meta":1571,"style":727},"import { withEvlog } from 'evlog\u002Fworkers'\n\nexport default withEvlog(handler, { redact: true })\n","src\u002Fworker.ts",[620,1573,1574,1593,1597],{"__ignoreMap":727},[731,1575,1576,1578,1580,1582,1584,1586,1588,1591],{"class":733,"line":734},[731,1577,778],{"class":777},[731,1579,781],{"class":741},[731,1581,927],{"class":784},[731,1583,788],{"class":741},[731,1585,791],{"class":777},[731,1587,794],{"class":741},[731,1589,1590],{"class":797},"evlog\u002Fworkers",[731,1592,801],{"class":741},[731,1594,1595],{"class":733,"line":748},[731,1596,824],{"emptyLinePlaceholder":823},[731,1598,1599,1601,1603,1605,1608,1610,1612,1614,1616,1618,1620],{"class":733,"line":763},[731,1600,830],{"class":777},[731,1602,833],{"class":777},[731,1604,927],{"class":836},[731,1606,1607],{"class":784},"(handler",[731,1609,930],{"class":741},[731,1611,781],{"class":741},[731,1613,864],{"class":848},[731,1615,742],{"class":741},[731,1617,757],{"class":756},[731,1619,788],{"class":741},[731,1621,884],{"class":784},[721,1623,1625],{"className":723,"code":1624,"filename":300,"language":725,"meta":1227,"style":727},"import { initLogger } from 'evlog'\n\ninitLogger({ redact: true })\n",[620,1626,1627,1646,1650],{"__ignoreMap":727},[731,1628,1629,1631,1633,1636,1638,1640,1642,1644],{"class":733,"line":734},[731,1630,778],{"class":777},[731,1632,781],{"class":741},[731,1634,1635],{"class":784}," initLogger",[731,1637,788],{"class":741},[731,1639,791],{"class":777},[731,1641,794],{"class":741},[731,1643,738],{"class":797},[731,1645,801],{"class":741},[731,1647,1648],{"class":733,"line":748},[731,1649,824],{"emptyLinePlaceholder":823},[731,1651,1652,1655,1657,1659,1661,1663,1665,1667],{"class":733,"line":763},[731,1653,1654],{"class":836},"initLogger",[731,1656,839],{"class":784},[731,1658,861],{"class":741},[731,1660,864],{"class":848},[731,1662,742],{"class":741},[731,1664,757],{"class":756},[731,1666,788],{"class":741},[731,1668,884],{"class":784},[608,1670,1671,1672,1675,1676,1679,1680,1683],{},"This masks credit cards (",[620,1673,1674],{},"****1111","), emails (",[620,1677,1678],{},"a***@***.com","), IPs, phone numbers, JWTs, Bearer tokens, and IBANs in every wide event, before console output and before any drain. See ",[1681,1682,71],"a",{"href":72}," for the full configuration reference.",[707,1685,1687,1688,1691],{"color":1686,"icon":388},"success","Auto-redaction is a safety net, not a replacement for careful logging. Always prefer explicit field selection and combine with ",[620,1689,1690],{},"redact: true"," for defense in depth.",[612,1693,1695],{"id":1694},"sanitize-before-the-field-is-set","Sanitize before the field is set",[1697,1698,1700],"h3",{"id":1699},"manual-field-selection","Manual Field Selection",[608,1702,1703],{},"The safest approach is to explicitly select which fields to log:",[718,1705,1706,1927,2130,2359,2574],{},[721,1707,1710],{"className":723,"code":1708,"filename":240,"language":725,"meta":1709,"style":727},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  const body = await readBody(event)\n\n  \u002F\u002F ❌ NEVER log the entire request body\n  \u002F\u002F log.set({ body })\n\n  \u002F\u002F ✅ Explicitly select safe fields\n  log.set({\n    user: {\n      id: body.id,\n      email: maskEmail(body.email),\n      \u002F\u002F password: body.password ← NEVER include\n    },\n  })\n})\n","server\u002Fapi\u002Fuser\u002Fupdate.post.ts",[620,1711,1712,1730,1734,1762,1779,1783,1804,1809,1816,1822,1827,1833,1848,1858,1875,1900,1906,1912,1920],{"__ignoreMap":727},[731,1713,1714,1716,1718,1720,1722,1724,1726,1728],{"class":733,"line":734},[731,1715,778],{"class":777},[731,1717,781],{"class":741},[731,1719,933],{"class":784},[731,1721,788],{"class":741},[731,1723,791],{"class":777},[731,1725,794],{"class":741},[731,1727,738],{"class":797},[731,1729,801],{"class":741},[731,1731,1732],{"class":733,"line":748},[731,1733,824],{"emptyLinePlaceholder":823},[731,1735,1736,1738,1740,1743,1745,1748,1751,1755,1757,1760],{"class":733,"line":763},[731,1737,830],{"class":777},[731,1739,833],{"class":777},[731,1741,1742],{"class":836}," defineEventHandler",[731,1744,839],{"class":784},[731,1746,1747],{"class":921},"async",[731,1749,1750],{"class":741}," (",[731,1752,1754],{"class":1753},"sHdIc","event",[731,1756,1216],{"class":741},[731,1758,1759],{"class":921}," =>",[731,1761,745],{"class":741},[731,1763,1764,1767,1769,1771,1773,1775,1777],{"class":733,"line":827},[731,1765,1766],{"class":921},"  const",[731,1768,938],{"class":784},[731,1770,948],{"class":741},[731,1772,933],{"class":836},[731,1774,839],{"class":848},[731,1776,1754],{"class":784},[731,1778,884],{"class":848},[731,1780,1781],{"class":733,"line":845},[731,1782,824],{"emptyLinePlaceholder":823},[731,1784,1785,1787,1790,1792,1795,1798,1800,1802],{"class":733,"line":878},[731,1786,1766],{"class":921},[731,1788,1789],{"class":784}," body",[731,1791,948],{"class":741},[731,1793,1794],{"class":777}," await",[731,1796,1797],{"class":836}," readBody",[731,1799,839],{"class":848},[731,1801,1754],{"class":784},[731,1803,884],{"class":848},[731,1805,1807],{"class":733,"line":1806},7,[731,1808,824],{"emptyLinePlaceholder":823},[731,1810,1812],{"class":733,"line":1811},8,[731,1813,1815],{"class":1814},"sHwdD","  \u002F\u002F ❌ NEVER log the entire request body\n",[731,1817,1819],{"class":733,"line":1818},9,[731,1820,1821],{"class":1814},"  \u002F\u002F log.set({ body })\n",[731,1823,1825],{"class":733,"line":1824},10,[731,1826,824],{"emptyLinePlaceholder":823},[731,1828,1830],{"class":733,"line":1829},11,[731,1831,1832],{"class":1814},"  \u002F\u002F ✅ Explicitly select safe fields\n",[731,1834,1836,1839,1841,1844,1846],{"class":733,"line":1835},12,[731,1837,1838],{"class":784},"  log",[731,1840,1184],{"class":741},[731,1842,1843],{"class":836},"set",[731,1845,839],{"class":848},[731,1847,842],{"class":741},[731,1849,1851,1854,1856],{"class":733,"line":1850},13,[731,1852,1853],{"class":848},"    user",[731,1855,742],{"class":741},[731,1857,745],{"class":741},[731,1859,1861,1864,1866,1868,1870,1873],{"class":733,"line":1860},14,[731,1862,1863],{"class":848},"      id",[731,1865,742],{"class":741},[731,1867,1789],{"class":784},[731,1869,1184],{"class":741},[731,1871,1872],{"class":784},"id",[731,1874,760],{"class":741},[731,1876,1878,1881,1883,1886,1888,1891,1893,1896,1898],{"class":733,"line":1877},15,[731,1879,1880],{"class":848},"      email",[731,1882,742],{"class":741},[731,1884,1885],{"class":836}," maskEmail",[731,1887,839],{"class":848},[731,1889,1890],{"class":784},"body",[731,1892,1184],{"class":741},[731,1894,1895],{"class":784},"email",[731,1897,1216],{"class":848},[731,1899,760],{"class":741},[731,1901,1903],{"class":733,"line":1902},16,[731,1904,1905],{"class":1814},"      \u002F\u002F password: body.password ← NEVER include\n",[731,1907,1909],{"class":733,"line":1908},17,[731,1910,1911],{"class":741},"    },\n",[731,1913,1915,1918],{"class":733,"line":1914},18,[731,1916,1917],{"class":741},"  }",[731,1919,884],{"class":848},[731,1921,1923,1925],{"class":733,"line":1922},19,[731,1924,881],{"class":741},[731,1926,884],{"class":784},[721,1928,1931],{"className":723,"code":1929,"filename":255,"language":725,"meta":1930,"style":727},"import { defineHandler } from 'nitro\u002Fh3'\nimport { useLogger } from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineHandler(async (event) => {\n  const log = useLogger(event)\n\n  const body = await readBody(event)\n\n  \u002F\u002F ❌ NEVER log the entire request body\n  \u002F\u002F log.set({ body })\n\n  \u002F\u002F ✅ Explicitly select safe fields\n  log.set({\n    user: {\n      id: body.id,\n      email: maskEmail(body.email),\n      \u002F\u002F password: body.password ← NEVER include\n    },\n  })\n})\n","routes\u002Fapi\u002Fuser\u002Fupdate.post.ts",[620,1932,1933,1953,1971,1975,1997,2013,2017,2035,2039,2043,2047,2051,2055,2067,2075,2089,2109,2113,2117,2123],{"__ignoreMap":727},[731,1934,1935,1937,1939,1942,1944,1946,1948,1951],{"class":733,"line":734},[731,1936,778],{"class":777},[731,1938,781],{"class":741},[731,1940,1941],{"class":784}," defineHandler",[731,1943,788],{"class":741},[731,1945,791],{"class":777},[731,1947,794],{"class":741},[731,1949,1950],{"class":797},"nitro\u002Fh3",[731,1952,801],{"class":741},[731,1954,1955,1957,1959,1961,1963,1965,1967,1969],{"class":733,"line":748},[731,1956,778],{"class":777},[731,1958,781],{"class":741},[731,1960,933],{"class":784},[731,1962,788],{"class":741},[731,1964,791],{"class":777},[731,1966,794],{"class":741},[731,1968,816],{"class":797},[731,1970,801],{"class":741},[731,1972,1973],{"class":733,"line":763},[731,1974,824],{"emptyLinePlaceholder":823},[731,1976,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995],{"class":733,"line":827},[731,1978,830],{"class":777},[731,1980,833],{"class":777},[731,1982,1941],{"class":836},[731,1984,839],{"class":784},[731,1986,1747],{"class":921},[731,1988,1750],{"class":741},[731,1990,1754],{"class":1753},[731,1992,1216],{"class":741},[731,1994,1759],{"class":921},[731,1996,745],{"class":741},[731,1998,1999,2001,2003,2005,2007,2009,2011],{"class":733,"line":845},[731,2000,1766],{"class":921},[731,2002,938],{"class":784},[731,2004,948],{"class":741},[731,2006,933],{"class":836},[731,2008,839],{"class":848},[731,2010,1754],{"class":784},[731,2012,884],{"class":848},[731,2014,2015],{"class":733,"line":878},[731,2016,824],{"emptyLinePlaceholder":823},[731,2018,2019,2021,2023,2025,2027,2029,2031,2033],{"class":733,"line":1806},[731,2020,1766],{"class":921},[731,2022,1789],{"class":784},[731,2024,948],{"class":741},[731,2026,1794],{"class":777},[731,2028,1797],{"class":836},[731,2030,839],{"class":848},[731,2032,1754],{"class":784},[731,2034,884],{"class":848},[731,2036,2037],{"class":733,"line":1811},[731,2038,824],{"emptyLinePlaceholder":823},[731,2040,2041],{"class":733,"line":1818},[731,2042,1815],{"class":1814},[731,2044,2045],{"class":733,"line":1824},[731,2046,1821],{"class":1814},[731,2048,2049],{"class":733,"line":1829},[731,2050,824],{"emptyLinePlaceholder":823},[731,2052,2053],{"class":733,"line":1835},[731,2054,1832],{"class":1814},[731,2056,2057,2059,2061,2063,2065],{"class":733,"line":1850},[731,2058,1838],{"class":784},[731,2060,1184],{"class":741},[731,2062,1843],{"class":836},[731,2064,839],{"class":848},[731,2066,842],{"class":741},[731,2068,2069,2071,2073],{"class":733,"line":1860},[731,2070,1853],{"class":848},[731,2072,742],{"class":741},[731,2074,745],{"class":741},[731,2076,2077,2079,2081,2083,2085,2087],{"class":733,"line":1877},[731,2078,1863],{"class":848},[731,2080,742],{"class":741},[731,2082,1789],{"class":784},[731,2084,1184],{"class":741},[731,2086,1872],{"class":784},[731,2088,760],{"class":741},[731,2090,2091,2093,2095,2097,2099,2101,2103,2105,2107],{"class":733,"line":1902},[731,2092,1880],{"class":848},[731,2094,742],{"class":741},[731,2096,1885],{"class":836},[731,2098,839],{"class":848},[731,2100,1890],{"class":784},[731,2102,1184],{"class":741},[731,2104,1895],{"class":784},[731,2106,1216],{"class":848},[731,2108,760],{"class":741},[731,2110,2111],{"class":733,"line":1908},[731,2112,1905],{"class":1814},[731,2114,2115],{"class":733,"line":1914},[731,2116,1911],{"class":741},[731,2118,2119,2121],{"class":733,"line":1922},[731,2120,1917],{"class":741},[731,2122,884],{"class":848},[731,2124,2126,2128],{"class":733,"line":2125},20,[731,2127,881],{"class":741},[731,2129,884],{"class":784},[721,2131,2134],{"className":723,"code":2132,"filename":245,"language":725,"meta":2133,"style":727},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async (request: Request) => {\n  const log = useLogger()\n\n  const body = await request.json()\n\n  \u002F\u002F ❌ NEVER log the entire request body\n  \u002F\u002F log.set({ body })\n\n  \u002F\u002F ✅ Explicitly select safe fields\n  log.set({\n    user: {\n      id: body.id,\n      email: maskEmail(body.email),\n      \u002F\u002F password: body.password ← NEVER include\n    },\n  })\n\n  return Response.json({ ok: true })\n})\n","app\u002Fapi\u002Fuser\u002Fupdate\u002Froute.ts",[620,2135,2136,2159,2163,2196,2209,2213,2233,2237,2241,2245,2249,2253,2265,2273,2287,2307,2311,2315,2321,2325,2352],{"__ignoreMap":727},[731,2137,2138,2140,2142,2144,2146,2148,2150,2152,2154,2157],{"class":733,"line":734},[731,2139,778],{"class":777},[731,2141,781],{"class":741},[731,2143,927],{"class":784},[731,2145,930],{"class":741},[731,2147,933],{"class":784},[731,2149,788],{"class":741},[731,2151,791],{"class":777},[731,2153,794],{"class":741},[731,2155,2156],{"class":797},"@\u002Flib\u002Fevlog",[731,2158,801],{"class":741},[731,2160,2161],{"class":733,"line":748},[731,2162,824],{"emptyLinePlaceholder":823},[731,2164,2165,2167,2169,2172,2174,2176,2178,2180,2182,2185,2187,2190,2192,2194],{"class":733,"line":763},[731,2166,830],{"class":777},[731,2168,922],{"class":921},[731,2170,2171],{"class":784}," POST ",[731,2173,1193],{"class":741},[731,2175,927],{"class":836},[731,2177,839],{"class":784},[731,2179,1747],{"class":921},[731,2181,1750],{"class":741},[731,2183,2184],{"class":1753},"request",[731,2186,742],{"class":741},[731,2188,2189],{"class":737}," Request",[731,2191,1216],{"class":741},[731,2193,1759],{"class":921},[731,2195,745],{"class":741},[731,2197,2198,2200,2202,2204,2206],{"class":733,"line":827},[731,2199,1766],{"class":921},[731,2201,938],{"class":784},[731,2203,948],{"class":741},[731,2205,933],{"class":836},[731,2207,2208],{"class":848},"()\n",[731,2210,2211],{"class":733,"line":845},[731,2212,824],{"emptyLinePlaceholder":823},[731,2214,2215,2217,2219,2221,2223,2226,2228,2231],{"class":733,"line":878},[731,2216,1766],{"class":921},[731,2218,1789],{"class":784},[731,2220,948],{"class":741},[731,2222,1794],{"class":777},[731,2224,2225],{"class":784}," request",[731,2227,1184],{"class":741},[731,2229,2230],{"class":836},"json",[731,2232,2208],{"class":848},[731,2234,2235],{"class":733,"line":1806},[731,2236,824],{"emptyLinePlaceholder":823},[731,2238,2239],{"class":733,"line":1811},[731,2240,1815],{"class":1814},[731,2242,2243],{"class":733,"line":1818},[731,2244,1821],{"class":1814},[731,2246,2247],{"class":733,"line":1824},[731,2248,824],{"emptyLinePlaceholder":823},[731,2250,2251],{"class":733,"line":1829},[731,2252,1832],{"class":1814},[731,2254,2255,2257,2259,2261,2263],{"class":733,"line":1835},[731,2256,1838],{"class":784},[731,2258,1184],{"class":741},[731,2260,1843],{"class":836},[731,2262,839],{"class":848},[731,2264,842],{"class":741},[731,2266,2267,2269,2271],{"class":733,"line":1850},[731,2268,1853],{"class":848},[731,2270,742],{"class":741},[731,2272,745],{"class":741},[731,2274,2275,2277,2279,2281,2283,2285],{"class":733,"line":1860},[731,2276,1863],{"class":848},[731,2278,742],{"class":741},[731,2280,1789],{"class":784},[731,2282,1184],{"class":741},[731,2284,1872],{"class":784},[731,2286,760],{"class":741},[731,2288,2289,2291,2293,2295,2297,2299,2301,2303,2305],{"class":733,"line":1877},[731,2290,1880],{"class":848},[731,2292,742],{"class":741},[731,2294,1885],{"class":836},[731,2296,839],{"class":848},[731,2298,1890],{"class":784},[731,2300,1184],{"class":741},[731,2302,1895],{"class":784},[731,2304,1216],{"class":848},[731,2306,760],{"class":741},[731,2308,2309],{"class":733,"line":1902},[731,2310,1905],{"class":1814},[731,2312,2313],{"class":733,"line":1908},[731,2314,1911],{"class":741},[731,2316,2317,2319],{"class":733,"line":1914},[731,2318,1917],{"class":741},[731,2320,884],{"class":848},[731,2322,2323],{"class":733,"line":1922},[731,2324,824],{"emptyLinePlaceholder":823},[731,2326,2327,2330,2333,2335,2337,2339,2341,2344,2346,2348,2350],{"class":733,"line":2125},[731,2328,2329],{"class":777},"  return",[731,2331,2332],{"class":784}," Response",[731,2334,1184],{"class":741},[731,2336,2230],{"class":836},[731,2338,839],{"class":848},[731,2340,861],{"class":741},[731,2342,2343],{"class":848}," ok",[731,2345,742],{"class":741},[731,2347,757],{"class":756},[731,2349,788],{"class":741},[731,2351,884],{"class":848},[731,2353,2355,2357],{"class":733,"line":2354},21,[731,2356,881],{"class":741},[731,2358,884],{"class":784},[721,2360,2362],{"className":723,"code":2361,"filename":275,"language":725,"meta":1227,"style":727},"app.post('\u002Fapi\u002Fuser\u002Fupdate', async (c) => {\n  const log = c.get('log')\n\n  const body = await c.req.json()\n\n  \u002F\u002F ❌ NEVER log the entire request body\n  \u002F\u002F log.set({ body })\n\n  \u002F\u002F ✅ Explicitly select safe fields\n  log.set({\n    user: {\n      id: body.id,\n      email: maskEmail(body.email),\n      \u002F\u002F password: body.password ← NEVER include\n    },\n  })\n\n  return c.json({ ok: true })\n})\n",[620,2363,2364,2398,2425,2429,2452,2456,2460,2464,2468,2472,2484,2492,2506,2526,2530,2534,2540,2544,2568],{"__ignoreMap":727},[731,2365,2366,2368,2370,2373,2375,2377,2380,2382,2384,2387,2389,2392,2394,2396],{"class":733,"line":734},[731,2367,1257],{"class":784},[731,2369,1184],{"class":741},[731,2371,2372],{"class":836},"post",[731,2374,839],{"class":784},[731,2376,969],{"class":741},[731,2378,2379],{"class":797},"\u002Fapi\u002Fuser\u002Fupdate",[731,2381,969],{"class":741},[731,2383,930],{"class":741},[731,2385,2386],{"class":921}," async",[731,2388,1750],{"class":741},[731,2390,2391],{"class":1753},"c",[731,2393,1216],{"class":741},[731,2395,1759],{"class":921},[731,2397,745],{"class":741},[731,2399,2400,2402,2404,2406,2409,2411,2414,2416,2418,2421,2423],{"class":733,"line":748},[731,2401,1766],{"class":921},[731,2403,938],{"class":784},[731,2405,948],{"class":741},[731,2407,2408],{"class":784}," c",[731,2410,1184],{"class":741},[731,2412,2413],{"class":836},"get",[731,2415,839],{"class":848},[731,2417,969],{"class":741},[731,2419,2420],{"class":797},"log",[731,2422,969],{"class":741},[731,2424,884],{"class":848},[731,2426,2427],{"class":733,"line":763},[731,2428,824],{"emptyLinePlaceholder":823},[731,2430,2431,2433,2435,2437,2439,2441,2443,2446,2448,2450],{"class":733,"line":827},[731,2432,1766],{"class":921},[731,2434,1789],{"class":784},[731,2436,948],{"class":741},[731,2438,1794],{"class":777},[731,2440,2408],{"class":784},[731,2442,1184],{"class":741},[731,2444,2445],{"class":784},"req",[731,2447,1184],{"class":741},[731,2449,2230],{"class":836},[731,2451,2208],{"class":848},[731,2453,2454],{"class":733,"line":845},[731,2455,824],{"emptyLinePlaceholder":823},[731,2457,2458],{"class":733,"line":878},[731,2459,1815],{"class":1814},[731,2461,2462],{"class":733,"line":1806},[731,2463,1821],{"class":1814},[731,2465,2466],{"class":733,"line":1811},[731,2467,824],{"emptyLinePlaceholder":823},[731,2469,2470],{"class":733,"line":1818},[731,2471,1832],{"class":1814},[731,2473,2474,2476,2478,2480,2482],{"class":733,"line":1824},[731,2475,1838],{"class":784},[731,2477,1184],{"class":741},[731,2479,1843],{"class":836},[731,2481,839],{"class":848},[731,2483,842],{"class":741},[731,2485,2486,2488,2490],{"class":733,"line":1829},[731,2487,1853],{"class":848},[731,2489,742],{"class":741},[731,2491,745],{"class":741},[731,2493,2494,2496,2498,2500,2502,2504],{"class":733,"line":1835},[731,2495,1863],{"class":848},[731,2497,742],{"class":741},[731,2499,1789],{"class":784},[731,2501,1184],{"class":741},[731,2503,1872],{"class":784},[731,2505,760],{"class":741},[731,2507,2508,2510,2512,2514,2516,2518,2520,2522,2524],{"class":733,"line":1850},[731,2509,1880],{"class":848},[731,2511,742],{"class":741},[731,2513,1885],{"class":836},[731,2515,839],{"class":848},[731,2517,1890],{"class":784},[731,2519,1184],{"class":741},[731,2521,1895],{"class":784},[731,2523,1216],{"class":848},[731,2525,760],{"class":741},[731,2527,2528],{"class":733,"line":1860},[731,2529,1905],{"class":1814},[731,2531,2532],{"class":733,"line":1877},[731,2533,1911],{"class":741},[731,2535,2536,2538],{"class":733,"line":1902},[731,2537,1917],{"class":741},[731,2539,884],{"class":848},[731,2541,2542],{"class":733,"line":1908},[731,2543,824],{"emptyLinePlaceholder":823},[731,2545,2546,2548,2550,2552,2554,2556,2558,2560,2562,2564,2566],{"class":733,"line":1914},[731,2547,2329],{"class":777},[731,2549,2408],{"class":784},[731,2551,1184],{"class":741},[731,2553,2230],{"class":836},[731,2555,839],{"class":848},[731,2557,861],{"class":741},[731,2559,2343],{"class":848},[731,2561,742],{"class":741},[731,2563,757],{"class":756},[731,2565,788],{"class":741},[731,2567,884],{"class":848},[731,2569,2570,2572],{"class":733,"line":1922},[731,2571,881],{"class":741},[731,2573,884],{"class":784},[721,2575,2577],{"className":723,"code":2576,"filename":270,"language":725,"meta":1227,"style":727},"app.post('\u002Fapi\u002Fuser\u002Fupdate', async (req, res) => {\n  const log = req.log\n\n  const body = req.body\n\n  \u002F\u002F ❌ NEVER log the entire request body\n  \u002F\u002F log.set({ body })\n\n  \u002F\u002F ✅ Explicitly select safe fields\n  log.set({\n    user: {\n      id: body.id,\n      email: maskEmail(body.email),\n      \u002F\u002F password: body.password ← NEVER include\n    },\n  })\n\n  res.json({ ok: true })\n})\n",[620,2578,2579,2614,2630,2634,2649,2653,2657,2661,2665,2669,2681,2689,2703,2723,2727,2731,2737,2741,2764],{"__ignoreMap":727},[731,2580,2581,2583,2585,2587,2589,2591,2593,2595,2597,2599,2601,2603,2605,2608,2610,2612],{"class":733,"line":734},[731,2582,1257],{"class":784},[731,2584,1184],{"class":741},[731,2586,2372],{"class":836},[731,2588,839],{"class":784},[731,2590,969],{"class":741},[731,2592,2379],{"class":797},[731,2594,969],{"class":741},[731,2596,930],{"class":741},[731,2598,2386],{"class":921},[731,2600,1750],{"class":741},[731,2602,2445],{"class":1753},[731,2604,930],{"class":741},[731,2606,2607],{"class":1753}," res",[731,2609,1216],{"class":741},[731,2611,1759],{"class":921},[731,2613,745],{"class":741},[731,2615,2616,2618,2620,2622,2625,2627],{"class":733,"line":748},[731,2617,1766],{"class":921},[731,2619,938],{"class":784},[731,2621,948],{"class":741},[731,2623,2624],{"class":784}," req",[731,2626,1184],{"class":741},[731,2628,2629],{"class":784},"log\n",[731,2631,2632],{"class":733,"line":763},[731,2633,824],{"emptyLinePlaceholder":823},[731,2635,2636,2638,2640,2642,2644,2646],{"class":733,"line":827},[731,2637,1766],{"class":921},[731,2639,1789],{"class":784},[731,2641,948],{"class":741},[731,2643,2624],{"class":784},[731,2645,1184],{"class":741},[731,2647,2648],{"class":784},"body\n",[731,2650,2651],{"class":733,"line":845},[731,2652,824],{"emptyLinePlaceholder":823},[731,2654,2655],{"class":733,"line":878},[731,2656,1815],{"class":1814},[731,2658,2659],{"class":733,"line":1806},[731,2660,1821],{"class":1814},[731,2662,2663],{"class":733,"line":1811},[731,2664,824],{"emptyLinePlaceholder":823},[731,2666,2667],{"class":733,"line":1818},[731,2668,1832],{"class":1814},[731,2670,2671,2673,2675,2677,2679],{"class":733,"line":1824},[731,2672,1838],{"class":784},[731,2674,1184],{"class":741},[731,2676,1843],{"class":836},[731,2678,839],{"class":848},[731,2680,842],{"class":741},[731,2682,2683,2685,2687],{"class":733,"line":1829},[731,2684,1853],{"class":848},[731,2686,742],{"class":741},[731,2688,745],{"class":741},[731,2690,2691,2693,2695,2697,2699,2701],{"class":733,"line":1835},[731,2692,1863],{"class":848},[731,2694,742],{"class":741},[731,2696,1789],{"class":784},[731,2698,1184],{"class":741},[731,2700,1872],{"class":784},[731,2702,760],{"class":741},[731,2704,2705,2707,2709,2711,2713,2715,2717,2719,2721],{"class":733,"line":1850},[731,2706,1880],{"class":848},[731,2708,742],{"class":741},[731,2710,1885],{"class":836},[731,2712,839],{"class":848},[731,2714,1890],{"class":784},[731,2716,1184],{"class":741},[731,2718,1895],{"class":784},[731,2720,1216],{"class":848},[731,2722,760],{"class":741},[731,2724,2725],{"class":733,"line":1860},[731,2726,1905],{"class":1814},[731,2728,2729],{"class":733,"line":1877},[731,2730,1911],{"class":741},[731,2732,2733,2735],{"class":733,"line":1902},[731,2734,1917],{"class":741},[731,2736,884],{"class":848},[731,2738,2739],{"class":733,"line":1908},[731,2740,824],{"emptyLinePlaceholder":823},[731,2742,2743,2746,2748,2750,2752,2754,2756,2758,2760,2762],{"class":733,"line":1914},[731,2744,2745],{"class":784},"  res",[731,2747,1184],{"class":741},[731,2749,2230],{"class":836},[731,2751,839],{"class":848},[731,2753,861],{"class":741},[731,2755,2343],{"class":848},[731,2757,742],{"class":741},[731,2759,757],{"class":756},[731,2761,788],{"class":741},[731,2763,884],{"class":848},[731,2765,2766,2768],{"class":733,"line":1922},[731,2767,881],{"class":741},[731,2769,884],{"class":784},[1697,2771,2773],{"id":2772},"helper-functions","Helper Functions",[608,2775,2776],{},"Create utility functions to sanitize common data types:",[2778,2779,2780],"code-collapse",{},[721,2781,2784],{"className":723,"code":2782,"filename":2783,"language":725,"meta":727,"style":727},"\u002F** Masks email: john.doe@example.com → j***.d**@e***.com *\u002F\nexport function maskEmail(email: string): string {\n  const [local, domain] = email.split('@')\n  if (!domain) return '***'\n  const [domainName, tld] = domain.split('.')\n  return `${local[0]}***@${domainName[0]}***.${tld}`\n}\n\n\u002F** Masks card number: 4242424242424242 → ****4242 *\u002F\nexport function maskCard(card: string): string {\n  return `****${card.slice(-4)}`\n}\n\n\u002F** Truncates long IDs for readability *\u002F\nexport function truncateId(id: string, length = 8): string {\n  if (id.length \u003C= length) return id\n  return `${id.slice(0, length)}...`\n}\n\n\u002F** Removes sensitive fields from an object *\u002F\nexport function sanitize\u003CT extends Record\u003Cstring, unknown>>(\n  obj: T,\n  sensitiveKeys: string[] = ['password', 'token', 'secret', 'apiKey', 'authorization']\n): Partial\u003CT> {\n  const result = { ...obj }\n  for (const key of sensitiveKeys) {\n    if (key in result) {\n      delete result[key]\n    }\n  }\n  return result\n}\n","server\u002Futils\u002Fsanitize.ts",[620,2785,2786,2801,2826,2863,2889,2923,2967,2971,2975,2980,3004,3035,3039,3043,3048,3081,3106,3135,3139,3143,3148,3182,3195,3256,3273,3294,3317,3337,3352,3358,3364,3372],{"__ignoreMap":727},[731,2787,2788,2791,2794,2798],{"class":733,"line":734},[731,2789,2790],{"class":1814},"\u002F** Masks email: john.doe",[731,2792,2793],{"class":777},"@",[731,2795,2797],{"class":2796},"s6hCs","example",[731,2799,2800],{"class":1814},".com → j***.d**@e***.com *\u002F\n",[731,2802,2803,2805,2808,2810,2812,2814,2816,2819,2822,2824],{"class":733,"line":748},[731,2804,830],{"class":777},[731,2806,2807],{"class":921}," function",[731,2809,1885],{"class":836},[731,2811,839],{"class":741},[731,2813,1895],{"class":1753},[731,2815,742],{"class":741},[731,2817,2818],{"class":737}," string",[731,2820,2821],{"class":741},"):",[731,2823,2818],{"class":737},[731,2825,745],{"class":741},[731,2827,2828,2830,2832,2835,2837,2840,2843,2845,2848,2850,2853,2855,2857,2859,2861],{"class":733,"line":763},[731,2829,1766],{"class":921},[731,2831,854],{"class":741},[731,2833,2834],{"class":784},"local",[731,2836,930],{"class":741},[731,2838,2839],{"class":784}," domain",[731,2841,2842],{"class":741},"]",[731,2844,948],{"class":741},[731,2846,2847],{"class":784}," email",[731,2849,1184],{"class":741},[731,2851,2852],{"class":836},"split",[731,2854,839],{"class":848},[731,2856,969],{"class":741},[731,2858,2793],{"class":797},[731,2860,969],{"class":741},[731,2862,884],{"class":848},[731,2864,2865,2868,2870,2873,2876,2879,2882,2884,2887],{"class":733,"line":827},[731,2866,2867],{"class":777},"  if",[731,2869,1750],{"class":848},[731,2871,2872],{"class":741},"!",[731,2874,2875],{"class":784},"domain",[731,2877,2878],{"class":848},") ",[731,2880,2881],{"class":777},"return",[731,2883,794],{"class":741},[731,2885,2886],{"class":797},"***",[731,2888,801],{"class":741},[731,2890,2891,2893,2895,2898,2900,2903,2905,2907,2909,2911,2913,2915,2917,2919,2921],{"class":733,"line":845},[731,2892,1766],{"class":921},[731,2894,854],{"class":741},[731,2896,2897],{"class":784},"domainName",[731,2899,930],{"class":741},[731,2901,2902],{"class":784}," tld",[731,2904,2842],{"class":741},[731,2906,948],{"class":741},[731,2908,2839],{"class":784},[731,2910,1184],{"class":741},[731,2912,2852],{"class":836},[731,2914,839],{"class":848},[731,2916,969],{"class":741},[731,2918,1184],{"class":797},[731,2920,969],{"class":741},[731,2922,884],{"class":848},[731,2924,2925,2927,2930,2933,2937,2939,2941,2944,2947,2950,2952,2954,2956,2959,2961,2964],{"class":733,"line":878},[731,2926,2329],{"class":777},[731,2928,2929],{"class":741}," `${",[731,2931,2932],{"class":784},"local[",[731,2934,2936],{"class":2935},"sbssI","0",[731,2938,2842],{"class":784},[731,2940,881],{"class":741},[731,2942,2943],{"class":797},"***@",[731,2945,2946],{"class":741},"${",[731,2948,2949],{"class":784},"domainName[",[731,2951,2936],{"class":2935},[731,2953,2842],{"class":784},[731,2955,881],{"class":741},[731,2957,2958],{"class":797},"***.",[731,2960,2946],{"class":741},[731,2962,2963],{"class":784},"tld",[731,2965,2966],{"class":741},"}`\n",[731,2968,2969],{"class":733,"line":1806},[731,2970,766],{"class":741},[731,2972,2973],{"class":733,"line":1811},[731,2974,824],{"emptyLinePlaceholder":823},[731,2976,2977],{"class":733,"line":1818},[731,2978,2979],{"class":1814},"\u002F** Masks card number: 4242424242424242 → ****4242 *\u002F\n",[731,2981,2982,2984,2986,2989,2991,2994,2996,2998,3000,3002],{"class":733,"line":1824},[731,2983,830],{"class":777},[731,2985,2807],{"class":921},[731,2987,2988],{"class":836}," maskCard",[731,2990,839],{"class":741},[731,2992,2993],{"class":1753},"card",[731,2995,742],{"class":741},[731,2997,2818],{"class":737},[731,2999,2821],{"class":741},[731,3001,2818],{"class":737},[731,3003,745],{"class":741},[731,3005,3006,3008,3011,3014,3016,3018,3020,3023,3025,3028,3031,3033],{"class":733,"line":1829},[731,3007,2329],{"class":777},[731,3009,3010],{"class":741}," `",[731,3012,3013],{"class":797},"****",[731,3015,2946],{"class":741},[731,3017,2993],{"class":784},[731,3019,1184],{"class":741},[731,3021,3022],{"class":836},"slice",[731,3024,839],{"class":784},[731,3026,3027],{"class":741},"-",[731,3029,3030],{"class":2935},"4",[731,3032,1216],{"class":784},[731,3034,2966],{"class":741},[731,3036,3037],{"class":733,"line":1835},[731,3038,766],{"class":741},[731,3040,3041],{"class":733,"line":1850},[731,3042,824],{"emptyLinePlaceholder":823},[731,3044,3045],{"class":733,"line":1860},[731,3046,3047],{"class":1814},"\u002F** Truncates long IDs for readability *\u002F\n",[731,3049,3050,3052,3054,3057,3059,3061,3063,3065,3067,3070,3072,3075,3077,3079],{"class":733,"line":1877},[731,3051,830],{"class":777},[731,3053,2807],{"class":921},[731,3055,3056],{"class":836}," truncateId",[731,3058,839],{"class":741},[731,3060,1872],{"class":1753},[731,3062,742],{"class":741},[731,3064,2818],{"class":737},[731,3066,930],{"class":741},[731,3068,3069],{"class":1753}," length",[731,3071,948],{"class":741},[731,3073,3074],{"class":2935}," 8",[731,3076,2821],{"class":741},[731,3078,2818],{"class":737},[731,3080,745],{"class":741},[731,3082,3083,3085,3087,3089,3091,3094,3097,3099,3101,3103],{"class":733,"line":1902},[731,3084,2867],{"class":777},[731,3086,1750],{"class":848},[731,3088,1872],{"class":784},[731,3090,1184],{"class":741},[731,3092,3093],{"class":784},"length",[731,3095,3096],{"class":741}," \u003C=",[731,3098,3069],{"class":784},[731,3100,2878],{"class":848},[731,3102,2881],{"class":777},[731,3104,3105],{"class":784}," id\n",[731,3107,3108,3110,3112,3114,3116,3118,3120,3122,3124,3127,3129,3132],{"class":733,"line":1908},[731,3109,2329],{"class":777},[731,3111,2929],{"class":741},[731,3113,1872],{"class":784},[731,3115,1184],{"class":741},[731,3117,3022],{"class":836},[731,3119,839],{"class":784},[731,3121,2936],{"class":2935},[731,3123,930],{"class":741},[731,3125,3126],{"class":784}," length)",[731,3128,881],{"class":741},[731,3130,3131],{"class":797},"...",[731,3133,3134],{"class":741},"`\n",[731,3136,3137],{"class":733,"line":1914},[731,3138,766],{"class":741},[731,3140,3141],{"class":733,"line":1922},[731,3142,824],{"emptyLinePlaceholder":823},[731,3144,3145],{"class":733,"line":2125},[731,3146,3147],{"class":1814},"\u002F** Removes sensitive fields from an object *\u002F\n",[731,3149,3150,3152,3154,3157,3160,3163,3166,3169,3171,3174,3176,3179],{"class":733,"line":2354},[731,3151,830],{"class":777},[731,3153,2807],{"class":921},[731,3155,3156],{"class":836}," sanitize",[731,3158,3159],{"class":741},"\u003C",[731,3161,3162],{"class":737},"T",[731,3164,3165],{"class":921}," extends",[731,3167,3168],{"class":737}," Record",[731,3170,3159],{"class":741},[731,3172,3173],{"class":737},"string",[731,3175,930],{"class":741},[731,3177,3178],{"class":737}," unknown",[731,3180,3181],{"class":741},">>(\n",[731,3183,3185,3188,3190,3193],{"class":733,"line":3184},22,[731,3186,3187],{"class":1753},"  obj",[731,3189,742],{"class":741},[731,3191,3192],{"class":737}," T",[731,3194,760],{"class":741},[731,3196,3198,3201,3203,3205,3207,3209,3211,3213,3216,3218,3220,3222,3225,3227,3229,3231,3234,3236,3238,3240,3243,3245,3247,3249,3252,3254],{"class":733,"line":3197},23,[731,3199,3200],{"class":1753},"  sensitiveKeys",[731,3202,742],{"class":741},[731,3204,2818],{"class":737},[731,3206,1190],{"class":784},[731,3208,1193],{"class":741},[731,3210,854],{"class":784},[731,3212,969],{"class":741},[731,3214,3215],{"class":797},"password",[731,3217,969],{"class":741},[731,3219,930],{"class":741},[731,3221,794],{"class":741},[731,3223,3224],{"class":797},"token",[731,3226,969],{"class":741},[731,3228,930],{"class":741},[731,3230,794],{"class":741},[731,3232,3233],{"class":797},"secret",[731,3235,969],{"class":741},[731,3237,930],{"class":741},[731,3239,794],{"class":741},[731,3241,3242],{"class":797},"apiKey",[731,3244,969],{"class":741},[731,3246,930],{"class":741},[731,3248,794],{"class":741},[731,3250,3251],{"class":797},"authorization",[731,3253,969],{"class":741},[731,3255,1223],{"class":784},[731,3257,3259,3261,3264,3266,3268,3271],{"class":733,"line":3258},24,[731,3260,2821],{"class":741},[731,3262,3263],{"class":737}," Partial",[731,3265,3159],{"class":741},[731,3267,3162],{"class":737},[731,3269,3270],{"class":741},">",[731,3272,745],{"class":741},[731,3274,3276,3278,3281,3283,3285,3288,3291],{"class":733,"line":3275},25,[731,3277,1766],{"class":921},[731,3279,3280],{"class":784}," result",[731,3282,948],{"class":741},[731,3284,781],{"class":741},[731,3286,3287],{"class":741}," ...",[731,3289,3290],{"class":784},"obj",[731,3292,3293],{"class":741}," }\n",[731,3295,3297,3300,3302,3304,3307,3310,3313,3315],{"class":733,"line":3296},26,[731,3298,3299],{"class":777},"  for",[731,3301,1750],{"class":848},[731,3303,1535],{"class":921},[731,3305,3306],{"class":784}," key",[731,3308,3309],{"class":741}," of",[731,3311,3312],{"class":784}," sensitiveKeys",[731,3314,2878],{"class":848},[731,3316,842],{"class":741},[731,3318,3320,3323,3325,3328,3331,3333,3335],{"class":733,"line":3319},27,[731,3321,3322],{"class":777},"    if",[731,3324,1750],{"class":848},[731,3326,3327],{"class":784},"key",[731,3329,3330],{"class":741}," in",[731,3332,3280],{"class":784},[731,3334,2878],{"class":848},[731,3336,842],{"class":741},[731,3338,3340,3343,3345,3348,3350],{"class":733,"line":3339},28,[731,3341,3342],{"class":741},"      delete",[731,3344,3280],{"class":784},[731,3346,3347],{"class":848},"[",[731,3349,3327],{"class":784},[731,3351,1223],{"class":848},[731,3353,3355],{"class":733,"line":3354},29,[731,3356,3357],{"class":741},"    }\n",[731,3359,3361],{"class":733,"line":3360},30,[731,3362,3363],{"class":741},"  }\n",[731,3365,3367,3369],{"class":733,"line":3366},31,[731,3368,2329],{"class":777},[731,3370,3371],{"class":784}," result\n",[731,3373,3375],{"class":733,"line":3374},32,[731,3376,766],{"class":741},[608,3378,3379],{},"Usage:",[718,3381,3382,3595,3819,4061,4293],{},[721,3383,3386],{"className":723,"code":3384,"filename":240,"language":725,"meta":3385,"style":727},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  const { user, card } = await readBody(event)\n\n  log.set({\n    user: {\n      id: user.id,\n      email: maskEmail(user.email),\n    },\n    payment: {\n      last4: maskCard(card.number),\n      \u002F\u002F ❌ Never: number, cvv, expiry\n    },\n  })\n})\n","server\u002Fapi\u002Fcheckout.post.ts",[620,3387,3388,3406,3410,3432,3448,3452,3480,3484,3496,3504,3518,3539,3543,3552,3574,3579,3583,3589],{"__ignoreMap":727},[731,3389,3390,3392,3394,3396,3398,3400,3402,3404],{"class":733,"line":734},[731,3391,778],{"class":777},[731,3393,781],{"class":741},[731,3395,933],{"class":784},[731,3397,788],{"class":741},[731,3399,791],{"class":777},[731,3401,794],{"class":741},[731,3403,738],{"class":797},[731,3405,801],{"class":741},[731,3407,3408],{"class":733,"line":748},[731,3409,824],{"emptyLinePlaceholder":823},[731,3411,3412,3414,3416,3418,3420,3422,3424,3426,3428,3430],{"class":733,"line":763},[731,3413,830],{"class":777},[731,3415,833],{"class":777},[731,3417,1742],{"class":836},[731,3419,839],{"class":784},[731,3421,1747],{"class":921},[731,3423,1750],{"class":741},[731,3425,1754],{"class":1753},[731,3427,1216],{"class":741},[731,3429,1759],{"class":921},[731,3431,745],{"class":741},[731,3433,3434,3436,3438,3440,3442,3444,3446],{"class":733,"line":827},[731,3435,1766],{"class":921},[731,3437,938],{"class":784},[731,3439,948],{"class":741},[731,3441,933],{"class":836},[731,3443,839],{"class":848},[731,3445,1754],{"class":784},[731,3447,884],{"class":848},[731,3449,3450],{"class":733,"line":845},[731,3451,824],{"emptyLinePlaceholder":823},[731,3453,3454,3456,3458,3461,3463,3466,3468,3470,3472,3474,3476,3478],{"class":733,"line":878},[731,3455,1766],{"class":921},[731,3457,781],{"class":741},[731,3459,3460],{"class":784}," user",[731,3462,930],{"class":741},[731,3464,3465],{"class":784}," card",[731,3467,788],{"class":741},[731,3469,948],{"class":741},[731,3471,1794],{"class":777},[731,3473,1797],{"class":836},[731,3475,839],{"class":848},[731,3477,1754],{"class":784},[731,3479,884],{"class":848},[731,3481,3482],{"class":733,"line":1806},[731,3483,824],{"emptyLinePlaceholder":823},[731,3485,3486,3488,3490,3492,3494],{"class":733,"line":1811},[731,3487,1838],{"class":784},[731,3489,1184],{"class":741},[731,3491,1843],{"class":836},[731,3493,839],{"class":848},[731,3495,842],{"class":741},[731,3497,3498,3500,3502],{"class":733,"line":1818},[731,3499,1853],{"class":848},[731,3501,742],{"class":741},[731,3503,745],{"class":741},[731,3505,3506,3508,3510,3512,3514,3516],{"class":733,"line":1824},[731,3507,1863],{"class":848},[731,3509,742],{"class":741},[731,3511,3460],{"class":784},[731,3513,1184],{"class":741},[731,3515,1872],{"class":784},[731,3517,760],{"class":741},[731,3519,3520,3522,3524,3526,3528,3531,3533,3535,3537],{"class":733,"line":1829},[731,3521,1880],{"class":848},[731,3523,742],{"class":741},[731,3525,1885],{"class":836},[731,3527,839],{"class":848},[731,3529,3530],{"class":784},"user",[731,3532,1184],{"class":741},[731,3534,1895],{"class":784},[731,3536,1216],{"class":848},[731,3538,760],{"class":741},[731,3540,3541],{"class":733,"line":1835},[731,3542,1911],{"class":741},[731,3544,3545,3548,3550],{"class":733,"line":1850},[731,3546,3547],{"class":848},"    payment",[731,3549,742],{"class":741},[731,3551,745],{"class":741},[731,3553,3554,3557,3559,3561,3563,3565,3567,3570,3572],{"class":733,"line":1860},[731,3555,3556],{"class":848},"      last4",[731,3558,742],{"class":741},[731,3560,2988],{"class":836},[731,3562,839],{"class":848},[731,3564,2993],{"class":784},[731,3566,1184],{"class":741},[731,3568,3569],{"class":784},"number",[731,3571,1216],{"class":848},[731,3573,760],{"class":741},[731,3575,3576],{"class":733,"line":1877},[731,3577,3578],{"class":1814},"      \u002F\u002F ❌ Never: number, cvv, expiry\n",[731,3580,3581],{"class":733,"line":1902},[731,3582,1911],{"class":741},[731,3584,3585,3587],{"class":733,"line":1908},[731,3586,1917],{"class":741},[731,3588,884],{"class":848},[731,3590,3591,3593],{"class":733,"line":1914},[731,3592,881],{"class":741},[731,3594,884],{"class":784},[721,3596,3599],{"className":723,"code":3597,"filename":255,"language":725,"meta":3598,"style":727},"import { defineHandler } from 'nitro\u002Fh3'\nimport { useLogger } from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineHandler(async (event) => {\n  const log = useLogger(event)\n\n  const { user, card } = await readBody(event)\n\n  log.set({\n    user: {\n      id: user.id,\n      email: maskEmail(user.email),\n    },\n    payment: {\n      last4: maskCard(card.number),\n      \u002F\u002F ❌ Never: number, cvv, expiry\n    },\n  })\n})\n","routes\u002Fapi\u002Fcheckout.post.ts",[620,3600,3601,3619,3637,3641,3663,3679,3683,3709,3713,3725,3733,3747,3767,3771,3779,3799,3803,3807,3813],{"__ignoreMap":727},[731,3602,3603,3605,3607,3609,3611,3613,3615,3617],{"class":733,"line":734},[731,3604,778],{"class":777},[731,3606,781],{"class":741},[731,3608,1941],{"class":784},[731,3610,788],{"class":741},[731,3612,791],{"class":777},[731,3614,794],{"class":741},[731,3616,1950],{"class":797},[731,3618,801],{"class":741},[731,3620,3621,3623,3625,3627,3629,3631,3633,3635],{"class":733,"line":748},[731,3622,778],{"class":777},[731,3624,781],{"class":741},[731,3626,933],{"class":784},[731,3628,788],{"class":741},[731,3630,791],{"class":777},[731,3632,794],{"class":741},[731,3634,816],{"class":797},[731,3636,801],{"class":741},[731,3638,3639],{"class":733,"line":763},[731,3640,824],{"emptyLinePlaceholder":823},[731,3642,3643,3645,3647,3649,3651,3653,3655,3657,3659,3661],{"class":733,"line":827},[731,3644,830],{"class":777},[731,3646,833],{"class":777},[731,3648,1941],{"class":836},[731,3650,839],{"class":784},[731,3652,1747],{"class":921},[731,3654,1750],{"class":741},[731,3656,1754],{"class":1753},[731,3658,1216],{"class":741},[731,3660,1759],{"class":921},[731,3662,745],{"class":741},[731,3664,3665,3667,3669,3671,3673,3675,3677],{"class":733,"line":845},[731,3666,1766],{"class":921},[731,3668,938],{"class":784},[731,3670,948],{"class":741},[731,3672,933],{"class":836},[731,3674,839],{"class":848},[731,3676,1754],{"class":784},[731,3678,884],{"class":848},[731,3680,3681],{"class":733,"line":878},[731,3682,824],{"emptyLinePlaceholder":823},[731,3684,3685,3687,3689,3691,3693,3695,3697,3699,3701,3703,3705,3707],{"class":733,"line":1806},[731,3686,1766],{"class":921},[731,3688,781],{"class":741},[731,3690,3460],{"class":784},[731,3692,930],{"class":741},[731,3694,3465],{"class":784},[731,3696,788],{"class":741},[731,3698,948],{"class":741},[731,3700,1794],{"class":777},[731,3702,1797],{"class":836},[731,3704,839],{"class":848},[731,3706,1754],{"class":784},[731,3708,884],{"class":848},[731,3710,3711],{"class":733,"line":1811},[731,3712,824],{"emptyLinePlaceholder":823},[731,3714,3715,3717,3719,3721,3723],{"class":733,"line":1818},[731,3716,1838],{"class":784},[731,3718,1184],{"class":741},[731,3720,1843],{"class":836},[731,3722,839],{"class":848},[731,3724,842],{"class":741},[731,3726,3727,3729,3731],{"class":733,"line":1824},[731,3728,1853],{"class":848},[731,3730,742],{"class":741},[731,3732,745],{"class":741},[731,3734,3735,3737,3739,3741,3743,3745],{"class":733,"line":1829},[731,3736,1863],{"class":848},[731,3738,742],{"class":741},[731,3740,3460],{"class":784},[731,3742,1184],{"class":741},[731,3744,1872],{"class":784},[731,3746,760],{"class":741},[731,3748,3749,3751,3753,3755,3757,3759,3761,3763,3765],{"class":733,"line":1835},[731,3750,1880],{"class":848},[731,3752,742],{"class":741},[731,3754,1885],{"class":836},[731,3756,839],{"class":848},[731,3758,3530],{"class":784},[731,3760,1184],{"class":741},[731,3762,1895],{"class":784},[731,3764,1216],{"class":848},[731,3766,760],{"class":741},[731,3768,3769],{"class":733,"line":1850},[731,3770,1911],{"class":741},[731,3772,3773,3775,3777],{"class":733,"line":1860},[731,3774,3547],{"class":848},[731,3776,742],{"class":741},[731,3778,745],{"class":741},[731,3780,3781,3783,3785,3787,3789,3791,3793,3795,3797],{"class":733,"line":1877},[731,3782,3556],{"class":848},[731,3784,742],{"class":741},[731,3786,2988],{"class":836},[731,3788,839],{"class":848},[731,3790,2993],{"class":784},[731,3792,1184],{"class":741},[731,3794,3569],{"class":784},[731,3796,1216],{"class":848},[731,3798,760],{"class":741},[731,3800,3801],{"class":733,"line":1902},[731,3802,3578],{"class":1814},[731,3804,3805],{"class":733,"line":1908},[731,3806,1911],{"class":741},[731,3808,3809,3811],{"class":733,"line":1914},[731,3810,1917],{"class":741},[731,3812,884],{"class":848},[731,3814,3815,3817],{"class":733,"line":1922},[731,3816,881],{"class":741},[731,3818,884],{"class":784},[721,3820,3823],{"className":723,"code":3821,"filename":245,"language":725,"meta":3822,"style":727},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async (request: Request) => {\n  const log = useLogger()\n\n  const { user, card } = await request.json()\n\n  log.set({\n    user: {\n      id: user.id,\n      email: maskEmail(user.email),\n    },\n    payment: {\n      last4: maskCard(card.number),\n      \u002F\u002F ❌ Never: number, cvv, expiry\n    },\n  })\n\n  return Response.json({ ok: true })\n})\n","app\u002Fapi\u002Fcheckout\u002Froute.ts",[620,3824,3825,3847,3851,3881,3893,3897,3923,3927,3939,3947,3961,3981,3985,3993,4013,4017,4021,4027,4031,4055],{"__ignoreMap":727},[731,3826,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845],{"class":733,"line":734},[731,3828,778],{"class":777},[731,3830,781],{"class":741},[731,3832,927],{"class":784},[731,3834,930],{"class":741},[731,3836,933],{"class":784},[731,3838,788],{"class":741},[731,3840,791],{"class":777},[731,3842,794],{"class":741},[731,3844,2156],{"class":797},[731,3846,801],{"class":741},[731,3848,3849],{"class":733,"line":748},[731,3850,824],{"emptyLinePlaceholder":823},[731,3852,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873,3875,3877,3879],{"class":733,"line":763},[731,3854,830],{"class":777},[731,3856,922],{"class":921},[731,3858,2171],{"class":784},[731,3860,1193],{"class":741},[731,3862,927],{"class":836},[731,3864,839],{"class":784},[731,3866,1747],{"class":921},[731,3868,1750],{"class":741},[731,3870,2184],{"class":1753},[731,3872,742],{"class":741},[731,3874,2189],{"class":737},[731,3876,1216],{"class":741},[731,3878,1759],{"class":921},[731,3880,745],{"class":741},[731,3882,3883,3885,3887,3889,3891],{"class":733,"line":827},[731,3884,1766],{"class":921},[731,3886,938],{"class":784},[731,3888,948],{"class":741},[731,3890,933],{"class":836},[731,3892,2208],{"class":848},[731,3894,3895],{"class":733,"line":845},[731,3896,824],{"emptyLinePlaceholder":823},[731,3898,3899,3901,3903,3905,3907,3909,3911,3913,3915,3917,3919,3921],{"class":733,"line":878},[731,3900,1766],{"class":921},[731,3902,781],{"class":741},[731,3904,3460],{"class":784},[731,3906,930],{"class":741},[731,3908,3465],{"class":784},[731,3910,788],{"class":741},[731,3912,948],{"class":741},[731,3914,1794],{"class":777},[731,3916,2225],{"class":784},[731,3918,1184],{"class":741},[731,3920,2230],{"class":836},[731,3922,2208],{"class":848},[731,3924,3925],{"class":733,"line":1806},[731,3926,824],{"emptyLinePlaceholder":823},[731,3928,3929,3931,3933,3935,3937],{"class":733,"line":1811},[731,3930,1838],{"class":784},[731,3932,1184],{"class":741},[731,3934,1843],{"class":836},[731,3936,839],{"class":848},[731,3938,842],{"class":741},[731,3940,3941,3943,3945],{"class":733,"line":1818},[731,3942,1853],{"class":848},[731,3944,742],{"class":741},[731,3946,745],{"class":741},[731,3948,3949,3951,3953,3955,3957,3959],{"class":733,"line":1824},[731,3950,1863],{"class":848},[731,3952,742],{"class":741},[731,3954,3460],{"class":784},[731,3956,1184],{"class":741},[731,3958,1872],{"class":784},[731,3960,760],{"class":741},[731,3962,3963,3965,3967,3969,3971,3973,3975,3977,3979],{"class":733,"line":1829},[731,3964,1880],{"class":848},[731,3966,742],{"class":741},[731,3968,1885],{"class":836},[731,3970,839],{"class":848},[731,3972,3530],{"class":784},[731,3974,1184],{"class":741},[731,3976,1895],{"class":784},[731,3978,1216],{"class":848},[731,3980,760],{"class":741},[731,3982,3983],{"class":733,"line":1835},[731,3984,1911],{"class":741},[731,3986,3987,3989,3991],{"class":733,"line":1850},[731,3988,3547],{"class":848},[731,3990,742],{"class":741},[731,3992,745],{"class":741},[731,3994,3995,3997,3999,4001,4003,4005,4007,4009,4011],{"class":733,"line":1860},[731,3996,3556],{"class":848},[731,3998,742],{"class":741},[731,4000,2988],{"class":836},[731,4002,839],{"class":848},[731,4004,2993],{"class":784},[731,4006,1184],{"class":741},[731,4008,3569],{"class":784},[731,4010,1216],{"class":848},[731,4012,760],{"class":741},[731,4014,4015],{"class":733,"line":1877},[731,4016,3578],{"class":1814},[731,4018,4019],{"class":733,"line":1902},[731,4020,1911],{"class":741},[731,4022,4023,4025],{"class":733,"line":1908},[731,4024,1917],{"class":741},[731,4026,884],{"class":848},[731,4028,4029],{"class":733,"line":1914},[731,4030,824],{"emptyLinePlaceholder":823},[731,4032,4033,4035,4037,4039,4041,4043,4045,4047,4049,4051,4053],{"class":733,"line":1922},[731,4034,2329],{"class":777},[731,4036,2332],{"class":784},[731,4038,1184],{"class":741},[731,4040,2230],{"class":836},[731,4042,839],{"class":848},[731,4044,861],{"class":741},[731,4046,2343],{"class":848},[731,4048,742],{"class":741},[731,4050,757],{"class":756},[731,4052,788],{"class":741},[731,4054,884],{"class":848},[731,4056,4057,4059],{"class":733,"line":2125},[731,4058,881],{"class":741},[731,4060,884],{"class":784},[721,4062,4064],{"className":723,"code":4063,"filename":275,"language":725,"meta":1227,"style":727},"app.post('\u002Fapi\u002Fcheckout', async (c) => {\n  const log = c.get('log')\n\n  const { user, card } = await c.req.json()\n\n  log.set({\n    user: {\n      id: user.id,\n      email: maskEmail(user.email),\n    },\n    payment: {\n      last4: maskCard(card.number),\n      \u002F\u002F ❌ Never: number, cvv, expiry\n    },\n  })\n\n  return c.json({ ok: true })\n})\n",[620,4065,4066,4097,4121,4125,4155,4159,4171,4179,4193,4213,4217,4225,4245,4249,4253,4259,4263,4287],{"__ignoreMap":727},[731,4067,4068,4070,4072,4074,4076,4078,4081,4083,4085,4087,4089,4091,4093,4095],{"class":733,"line":734},[731,4069,1257],{"class":784},[731,4071,1184],{"class":741},[731,4073,2372],{"class":836},[731,4075,839],{"class":784},[731,4077,969],{"class":741},[731,4079,4080],{"class":797},"\u002Fapi\u002Fcheckout",[731,4082,969],{"class":741},[731,4084,930],{"class":741},[731,4086,2386],{"class":921},[731,4088,1750],{"class":741},[731,4090,2391],{"class":1753},[731,4092,1216],{"class":741},[731,4094,1759],{"class":921},[731,4096,745],{"class":741},[731,4098,4099,4101,4103,4105,4107,4109,4111,4113,4115,4117,4119],{"class":733,"line":748},[731,4100,1766],{"class":921},[731,4102,938],{"class":784},[731,4104,948],{"class":741},[731,4106,2408],{"class":784},[731,4108,1184],{"class":741},[731,4110,2413],{"class":836},[731,4112,839],{"class":848},[731,4114,969],{"class":741},[731,4116,2420],{"class":797},[731,4118,969],{"class":741},[731,4120,884],{"class":848},[731,4122,4123],{"class":733,"line":763},[731,4124,824],{"emptyLinePlaceholder":823},[731,4126,4127,4129,4131,4133,4135,4137,4139,4141,4143,4145,4147,4149,4151,4153],{"class":733,"line":827},[731,4128,1766],{"class":921},[731,4130,781],{"class":741},[731,4132,3460],{"class":784},[731,4134,930],{"class":741},[731,4136,3465],{"class":784},[731,4138,788],{"class":741},[731,4140,948],{"class":741},[731,4142,1794],{"class":777},[731,4144,2408],{"class":784},[731,4146,1184],{"class":741},[731,4148,2445],{"class":784},[731,4150,1184],{"class":741},[731,4152,2230],{"class":836},[731,4154,2208],{"class":848},[731,4156,4157],{"class":733,"line":845},[731,4158,824],{"emptyLinePlaceholder":823},[731,4160,4161,4163,4165,4167,4169],{"class":733,"line":878},[731,4162,1838],{"class":784},[731,4164,1184],{"class":741},[731,4166,1843],{"class":836},[731,4168,839],{"class":848},[731,4170,842],{"class":741},[731,4172,4173,4175,4177],{"class":733,"line":1806},[731,4174,1853],{"class":848},[731,4176,742],{"class":741},[731,4178,745],{"class":741},[731,4180,4181,4183,4185,4187,4189,4191],{"class":733,"line":1811},[731,4182,1863],{"class":848},[731,4184,742],{"class":741},[731,4186,3460],{"class":784},[731,4188,1184],{"class":741},[731,4190,1872],{"class":784},[731,4192,760],{"class":741},[731,4194,4195,4197,4199,4201,4203,4205,4207,4209,4211],{"class":733,"line":1818},[731,4196,1880],{"class":848},[731,4198,742],{"class":741},[731,4200,1885],{"class":836},[731,4202,839],{"class":848},[731,4204,3530],{"class":784},[731,4206,1184],{"class":741},[731,4208,1895],{"class":784},[731,4210,1216],{"class":848},[731,4212,760],{"class":741},[731,4214,4215],{"class":733,"line":1824},[731,4216,1911],{"class":741},[731,4218,4219,4221,4223],{"class":733,"line":1829},[731,4220,3547],{"class":848},[731,4222,742],{"class":741},[731,4224,745],{"class":741},[731,4226,4227,4229,4231,4233,4235,4237,4239,4241,4243],{"class":733,"line":1835},[731,4228,3556],{"class":848},[731,4230,742],{"class":741},[731,4232,2988],{"class":836},[731,4234,839],{"class":848},[731,4236,2993],{"class":784},[731,4238,1184],{"class":741},[731,4240,3569],{"class":784},[731,4242,1216],{"class":848},[731,4244,760],{"class":741},[731,4246,4247],{"class":733,"line":1850},[731,4248,3578],{"class":1814},[731,4250,4251],{"class":733,"line":1860},[731,4252,1911],{"class":741},[731,4254,4255,4257],{"class":733,"line":1877},[731,4256,1917],{"class":741},[731,4258,884],{"class":848},[731,4260,4261],{"class":733,"line":1902},[731,4262,824],{"emptyLinePlaceholder":823},[731,4264,4265,4267,4269,4271,4273,4275,4277,4279,4281,4283,4285],{"class":733,"line":1908},[731,4266,2329],{"class":777},[731,4268,2408],{"class":784},[731,4270,1184],{"class":741},[731,4272,2230],{"class":836},[731,4274,839],{"class":848},[731,4276,861],{"class":741},[731,4278,2343],{"class":848},[731,4280,742],{"class":741},[731,4282,757],{"class":756},[731,4284,788],{"class":741},[731,4286,884],{"class":848},[731,4288,4289,4291],{"class":733,"line":1914},[731,4290,881],{"class":741},[731,4292,884],{"class":784},[721,4294,4296],{"className":723,"code":4295,"filename":270,"language":725,"meta":1227,"style":727},"app.post('\u002Fapi\u002Fcheckout', async (req, res) => {\n  const log = req.log\n\n  const { user, card } = req.body\n\n  log.set({\n    user: {\n      id: user.id,\n      email: maskEmail(user.email),\n    },\n    payment: {\n      last4: maskCard(card.number),\n      \u002F\u002F ❌ Never: number, cvv, expiry\n    },\n  })\n\n  res.json({ ok: true })\n})\n",[620,4297,4298,4332,4346,4350,4372,4376,4388,4396,4410,4430,4434,4442,4462,4466,4470,4476,4480,4502],{"__ignoreMap":727},[731,4299,4300,4302,4304,4306,4308,4310,4312,4314,4316,4318,4320,4322,4324,4326,4328,4330],{"class":733,"line":734},[731,4301,1257],{"class":784},[731,4303,1184],{"class":741},[731,4305,2372],{"class":836},[731,4307,839],{"class":784},[731,4309,969],{"class":741},[731,4311,4080],{"class":797},[731,4313,969],{"class":741},[731,4315,930],{"class":741},[731,4317,2386],{"class":921},[731,4319,1750],{"class":741},[731,4321,2445],{"class":1753},[731,4323,930],{"class":741},[731,4325,2607],{"class":1753},[731,4327,1216],{"class":741},[731,4329,1759],{"class":921},[731,4331,745],{"class":741},[731,4333,4334,4336,4338,4340,4342,4344],{"class":733,"line":748},[731,4335,1766],{"class":921},[731,4337,938],{"class":784},[731,4339,948],{"class":741},[731,4341,2624],{"class":784},[731,4343,1184],{"class":741},[731,4345,2629],{"class":784},[731,4347,4348],{"class":733,"line":763},[731,4349,824],{"emptyLinePlaceholder":823},[731,4351,4352,4354,4356,4358,4360,4362,4364,4366,4368,4370],{"class":733,"line":827},[731,4353,1766],{"class":921},[731,4355,781],{"class":741},[731,4357,3460],{"class":784},[731,4359,930],{"class":741},[731,4361,3465],{"class":784},[731,4363,788],{"class":741},[731,4365,948],{"class":741},[731,4367,2624],{"class":784},[731,4369,1184],{"class":741},[731,4371,2648],{"class":784},[731,4373,4374],{"class":733,"line":845},[731,4375,824],{"emptyLinePlaceholder":823},[731,4377,4378,4380,4382,4384,4386],{"class":733,"line":878},[731,4379,1838],{"class":784},[731,4381,1184],{"class":741},[731,4383,1843],{"class":836},[731,4385,839],{"class":848},[731,4387,842],{"class":741},[731,4389,4390,4392,4394],{"class":733,"line":1806},[731,4391,1853],{"class":848},[731,4393,742],{"class":741},[731,4395,745],{"class":741},[731,4397,4398,4400,4402,4404,4406,4408],{"class":733,"line":1811},[731,4399,1863],{"class":848},[731,4401,742],{"class":741},[731,4403,3460],{"class":784},[731,4405,1184],{"class":741},[731,4407,1872],{"class":784},[731,4409,760],{"class":741},[731,4411,4412,4414,4416,4418,4420,4422,4424,4426,4428],{"class":733,"line":1818},[731,4413,1880],{"class":848},[731,4415,742],{"class":741},[731,4417,1885],{"class":836},[731,4419,839],{"class":848},[731,4421,3530],{"class":784},[731,4423,1184],{"class":741},[731,4425,1895],{"class":784},[731,4427,1216],{"class":848},[731,4429,760],{"class":741},[731,4431,4432],{"class":733,"line":1824},[731,4433,1911],{"class":741},[731,4435,4436,4438,4440],{"class":733,"line":1829},[731,4437,3547],{"class":848},[731,4439,742],{"class":741},[731,4441,745],{"class":741},[731,4443,4444,4446,4448,4450,4452,4454,4456,4458,4460],{"class":733,"line":1835},[731,4445,3556],{"class":848},[731,4447,742],{"class":741},[731,4449,2988],{"class":836},[731,4451,839],{"class":848},[731,4453,2993],{"class":784},[731,4455,1184],{"class":741},[731,4457,3569],{"class":784},[731,4459,1216],{"class":848},[731,4461,760],{"class":741},[731,4463,4464],{"class":733,"line":1850},[731,4465,3578],{"class":1814},[731,4467,4468],{"class":733,"line":1860},[731,4469,1911],{"class":741},[731,4471,4472,4474],{"class":733,"line":1877},[731,4473,1917],{"class":741},[731,4475,884],{"class":848},[731,4477,4478],{"class":733,"line":1902},[731,4479,824],{"emptyLinePlaceholder":823},[731,4481,4482,4484,4486,4488,4490,4492,4494,4496,4498,4500],{"class":733,"line":1908},[731,4483,2745],{"class":784},[731,4485,1184],{"class":741},[731,4487,2230],{"class":836},[731,4489,839],{"class":848},[731,4491,861],{"class":741},[731,4493,2343],{"class":848},[731,4495,742],{"class":741},[731,4497,757],{"class":756},[731,4499,788],{"class":741},[731,4501,884],{"class":848},[731,4503,4504,4506],{"class":733,"line":1914},[731,4505,881],{"class":741},[731,4507,884],{"class":784},[1697,4509,4511],{"id":4510},"drain-hook-filtering","Drain Hook Filtering",[608,4513,4514],{},"As a last line of defense, filter sensitive data before sending to external services:",[718,4516,4517,4989,5427,5875,6298,6739,7179,7594,8009,8424,8839,9250,9671,10084],{},[721,4518,4521],{"className":723,"code":4519,"filename":240,"language":725,"meta":4520,"style":727},"const SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', (ctx) => {\n    \u002F\u002F Sanitize before sending to external service\n    ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n  })\n})\n","server\u002Fplugins\u002Fevlog.ts",[620,4522,4523,4584,4588,4611,4648,4683,4687,4712,4749,4795,4859,4863,4869,4873,4877,4899,4936,4941,4977,4983],{"__ignoreMap":727},[731,4524,4525,4527,4530,4532,4534,4536,4538,4540,4542,4544,4546,4548,4550,4552,4554,4556,4558,4560,4563,4565,4567,4569,4571,4573,4575,4577,4580,4582],{"class":733,"line":734},[731,4526,1535],{"class":921},[731,4528,4529],{"class":784}," SENSITIVE_KEYS ",[731,4531,1193],{"class":741},[731,4533,854],{"class":784},[731,4535,969],{"class":741},[731,4537,3215],{"class":797},[731,4539,969],{"class":741},[731,4541,930],{"class":741},[731,4543,794],{"class":741},[731,4545,3224],{"class":797},[731,4547,969],{"class":741},[731,4549,930],{"class":741},[731,4551,794],{"class":741},[731,4553,3233],{"class":797},[731,4555,969],{"class":741},[731,4557,930],{"class":741},[731,4559,794],{"class":741},[731,4561,4562],{"class":797},"apikey",[731,4564,969],{"class":741},[731,4566,930],{"class":741},[731,4568,794],{"class":741},[731,4570,3251],{"class":797},[731,4572,969],{"class":741},[731,4574,930],{"class":741},[731,4576,794],{"class":741},[731,4578,4579],{"class":797},"cookie",[731,4581,969],{"class":741},[731,4583,1223],{"class":784},[731,4585,4586],{"class":733,"line":748},[731,4587,824],{"emptyLinePlaceholder":823},[731,4589,4590,4593,4596,4598,4601,4603,4605,4607,4609],{"class":733,"line":763},[731,4591,4592],{"class":921},"function",[731,4594,4595],{"class":836}," deepSanitize",[731,4597,839],{"class":741},[731,4599,4600],{"class":1753},"value",[731,4602,742],{"class":741},[731,4604,3178],{"class":737},[731,4606,2821],{"class":741},[731,4608,3178],{"class":737},[731,4610,745],{"class":741},[731,4612,4613,4615,4617,4620,4622,4625,4627,4629,4632,4634,4637,4639,4641,4643,4646],{"class":733,"line":827},[731,4614,2867],{"class":777},[731,4616,1750],{"class":848},[731,4618,4619],{"class":784},"Array",[731,4621,1184],{"class":741},[731,4623,4624],{"class":836},"isArray",[731,4626,839],{"class":848},[731,4628,4600],{"class":784},[731,4630,4631],{"class":848},")) ",[731,4633,2881],{"class":777},[731,4635,4636],{"class":784}," value",[731,4638,1184],{"class":741},[731,4640,99],{"class":836},[731,4642,839],{"class":848},[731,4644,4645],{"class":784},"deepSanitize",[731,4647,884],{"class":848},[731,4649,4650,4652,4654,4656,4658,4661,4664,4666,4669,4671,4674,4676,4678,4680],{"class":733,"line":845},[731,4651,2867],{"class":777},[731,4653,1750],{"class":848},[731,4655,2872],{"class":741},[731,4657,4600],{"class":784},[731,4659,4660],{"class":741}," ||",[731,4662,4663],{"class":741}," typeof",[731,4665,4636],{"class":784},[731,4667,4668],{"class":741}," !==",[731,4670,794],{"class":741},[731,4672,4673],{"class":797},"object",[731,4675,969],{"class":741},[731,4677,2878],{"class":848},[731,4679,2881],{"class":777},[731,4681,4682],{"class":784}," value\n",[731,4684,4685],{"class":733,"line":878},[731,4686,824],{"emptyLinePlaceholder":823},[731,4688,4689,4691,4693,4695,4697,4699,4701,4703,4705,4707,4709],{"class":733,"line":1806},[731,4690,1766],{"class":921},[731,4692,3280],{"class":784},[731,4694,742],{"class":741},[731,4696,3168],{"class":737},[731,4698,3159],{"class":741},[731,4700,3173],{"class":737},[731,4702,930],{"class":741},[731,4704,3178],{"class":737},[731,4706,3270],{"class":741},[731,4708,948],{"class":741},[731,4710,4711],{"class":741}," {}\n",[731,4713,4714,4716,4718,4720,4722,4724,4726,4729,4731,4733,4736,4738,4741,4743,4745,4747],{"class":733,"line":1811},[731,4715,3299],{"class":777},[731,4717,1750],{"class":848},[731,4719,1535],{"class":921},[731,4721,854],{"class":741},[731,4723,3327],{"class":784},[731,4725,930],{"class":741},[731,4727,4728],{"class":784}," nested",[731,4730,2842],{"class":741},[731,4732,3309],{"class":741},[731,4734,4735],{"class":784}," Object",[731,4737,1184],{"class":741},[731,4739,4740],{"class":836},"entries",[731,4742,839],{"class":848},[731,4744,4600],{"class":784},[731,4746,4631],{"class":848},[731,4748,842],{"class":741},[731,4750,4751,4754,4757,4759,4761,4763,4766,4769,4771,4774,4776,4779,4782,4785,4788,4790,4793],{"class":733,"line":1818},[731,4752,4753],{"class":921},"    const",[731,4755,4756],{"class":784}," name",[731,4758,948],{"class":741},[731,4760,3306],{"class":784},[731,4762,1184],{"class":741},[731,4764,4765],{"class":836},"toLowerCase",[731,4767,4768],{"class":848},"()",[731,4770,1184],{"class":741},[731,4772,4773],{"class":836},"replace",[731,4775,839],{"class":848},[731,4777,4778],{"class":741},"\u002F[",[731,4780,4781],{"class":797},"-_",[731,4783,4784],{"class":741},"]\u002F",[731,4786,4787],{"class":2935},"g",[731,4789,930],{"class":741},[731,4791,4792],{"class":741}," ''",[731,4794,884],{"class":848},[731,4796,4797,4800,4802,4804,4807,4809,4812,4814,4817,4819,4822,4824,4826,4828,4831,4833,4835,4837,4840,4842,4845,4847,4850,4852,4854,4857],{"class":733,"line":1824},[731,4798,4799],{"class":784},"    result",[731,4801,3347],{"class":848},[731,4803,3327],{"class":784},[731,4805,4806],{"class":848},"] ",[731,4808,1193],{"class":741},[731,4810,4811],{"class":784}," SENSITIVE_KEYS",[731,4813,1184],{"class":741},[731,4815,4816],{"class":836},"some",[731,4818,839],{"class":848},[731,4820,4821],{"class":1753},"k",[731,4823,1759],{"class":921},[731,4825,4756],{"class":784},[731,4827,1184],{"class":741},[731,4829,4830],{"class":836},"includes",[731,4832,839],{"class":848},[731,4834,4821],{"class":784},[731,4836,4631],{"class":848},[731,4838,4839],{"class":741},"?",[731,4841,794],{"class":741},[731,4843,4844],{"class":797},"[REDACTED]",[731,4846,969],{"class":741},[731,4848,4849],{"class":741}," :",[731,4851,4595],{"class":836},[731,4853,839],{"class":848},[731,4855,4856],{"class":784},"nested",[731,4858,884],{"class":848},[731,4860,4861],{"class":733,"line":1829},[731,4862,3363],{"class":741},[731,4864,4865,4867],{"class":733,"line":1835},[731,4866,2329],{"class":777},[731,4868,3371],{"class":784},[731,4870,4871],{"class":733,"line":1850},[731,4872,766],{"class":741},[731,4874,4875],{"class":733,"line":1860},[731,4876,824],{"emptyLinePlaceholder":823},[731,4878,4879,4881,4883,4886,4888,4890,4893,4895,4897],{"class":733,"line":1877},[731,4880,830],{"class":777},[731,4882,833],{"class":777},[731,4884,4885],{"class":836}," defineNitroPlugin",[731,4887,839],{"class":784},[731,4889,839],{"class":741},[731,4891,4892],{"class":1753},"nitroApp",[731,4894,1216],{"class":741},[731,4896,1759],{"class":921},[731,4898,745],{"class":741},[731,4900,4901,4904,4906,4909,4911,4914,4916,4918,4921,4923,4925,4927,4930,4932,4934],{"class":733,"line":1902},[731,4902,4903],{"class":784},"  nitroApp",[731,4905,1184],{"class":741},[731,4907,4908],{"class":784},"hooks",[731,4910,1184],{"class":741},[731,4912,4913],{"class":836},"hook",[731,4915,839],{"class":848},[731,4917,969],{"class":741},[731,4919,4920],{"class":797},"evlog:drain",[731,4922,969],{"class":741},[731,4924,930],{"class":741},[731,4926,1750],{"class":741},[731,4928,4929],{"class":1753},"ctx",[731,4931,1216],{"class":741},[731,4933,1759],{"class":921},[731,4935,745],{"class":741},[731,4937,4938],{"class":733,"line":1908},[731,4939,4940],{"class":1814},"    \u002F\u002F Sanitize before sending to external service\n",[731,4942,4943,4946,4948,4950,4952,4954,4956,4958,4960,4962,4964,4967,4969,4972,4974],{"class":733,"line":1914},[731,4944,4945],{"class":784},"    ctx",[731,4947,1184],{"class":741},[731,4949,1754],{"class":784},[731,4951,948],{"class":741},[731,4953,4595],{"class":836},[731,4955,839],{"class":848},[731,4957,4929],{"class":784},[731,4959,1184],{"class":741},[731,4961,1754],{"class":784},[731,4963,2878],{"class":848},[731,4965,4966],{"class":777},"as",[731,4968,4663],{"class":741},[731,4970,4971],{"class":784}," ctx",[731,4973,1184],{"class":741},[731,4975,4976],{"class":784},"event\n",[731,4978,4979,4981],{"class":733,"line":1922},[731,4980,1917],{"class":741},[731,4982,884],{"class":848},[731,4984,4985,4987],{"class":733,"line":2125},[731,4986,881],{"class":741},[731,4988,884],{"class":784},[721,4990,4992],{"className":723,"code":4991,"filename":255,"language":725,"meta":4520,"style":727},"import { definePlugin } from 'nitro'\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\n\nexport default definePlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', (ctx) => {\n    \u002F\u002F Sanitize before sending to external service\n    ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n  })\n})\n",[620,4993,4994,5013,5071,5075,5095,5127,5157,5161,5185,5219,5255,5309,5313,5319,5323,5327,5347,5379,5383,5415,5421],{"__ignoreMap":727},[731,4995,4996,4998,5000,5003,5005,5007,5009,5011],{"class":733,"line":734},[731,4997,778],{"class":777},[731,4999,781],{"class":741},[731,5001,5002],{"class":784}," definePlugin",[731,5004,788],{"class":741},[731,5006,791],{"class":777},[731,5008,794],{"class":741},[731,5010,798],{"class":797},[731,5012,801],{"class":741},[731,5014,5015,5017,5019,5021,5023,5025,5027,5029,5031,5033,5035,5037,5039,5041,5043,5045,5047,5049,5051,5053,5055,5057,5059,5061,5063,5065,5067,5069],{"class":733,"line":748},[731,5016,1535],{"class":921},[731,5018,4529],{"class":784},[731,5020,1193],{"class":741},[731,5022,854],{"class":784},[731,5024,969],{"class":741},[731,5026,3215],{"class":797},[731,5028,969],{"class":741},[731,5030,930],{"class":741},[731,5032,794],{"class":741},[731,5034,3224],{"class":797},[731,5036,969],{"class":741},[731,5038,930],{"class":741},[731,5040,794],{"class":741},[731,5042,3233],{"class":797},[731,5044,969],{"class":741},[731,5046,930],{"class":741},[731,5048,794],{"class":741},[731,5050,4562],{"class":797},[731,5052,969],{"class":741},[731,5054,930],{"class":741},[731,5056,794],{"class":741},[731,5058,3251],{"class":797},[731,5060,969],{"class":741},[731,5062,930],{"class":741},[731,5064,794],{"class":741},[731,5066,4579],{"class":797},[731,5068,969],{"class":741},[731,5070,1223],{"class":784},[731,5072,5073],{"class":733,"line":763},[731,5074,824],{"emptyLinePlaceholder":823},[731,5076,5077,5079,5081,5083,5085,5087,5089,5091,5093],{"class":733,"line":827},[731,5078,4592],{"class":921},[731,5080,4595],{"class":836},[731,5082,839],{"class":741},[731,5084,4600],{"class":1753},[731,5086,742],{"class":741},[731,5088,3178],{"class":737},[731,5090,2821],{"class":741},[731,5092,3178],{"class":737},[731,5094,745],{"class":741},[731,5096,5097,5099,5101,5103,5105,5107,5109,5111,5113,5115,5117,5119,5121,5123,5125],{"class":733,"line":845},[731,5098,2867],{"class":777},[731,5100,1750],{"class":848},[731,5102,4619],{"class":784},[731,5104,1184],{"class":741},[731,5106,4624],{"class":836},[731,5108,839],{"class":848},[731,5110,4600],{"class":784},[731,5112,4631],{"class":848},[731,5114,2881],{"class":777},[731,5116,4636],{"class":784},[731,5118,1184],{"class":741},[731,5120,99],{"class":836},[731,5122,839],{"class":848},[731,5124,4645],{"class":784},[731,5126,884],{"class":848},[731,5128,5129,5131,5133,5135,5137,5139,5141,5143,5145,5147,5149,5151,5153,5155],{"class":733,"line":878},[731,5130,2867],{"class":777},[731,5132,1750],{"class":848},[731,5134,2872],{"class":741},[731,5136,4600],{"class":784},[731,5138,4660],{"class":741},[731,5140,4663],{"class":741},[731,5142,4636],{"class":784},[731,5144,4668],{"class":741},[731,5146,794],{"class":741},[731,5148,4673],{"class":797},[731,5150,969],{"class":741},[731,5152,2878],{"class":848},[731,5154,2881],{"class":777},[731,5156,4682],{"class":784},[731,5158,5159],{"class":733,"line":1806},[731,5160,824],{"emptyLinePlaceholder":823},[731,5162,5163,5165,5167,5169,5171,5173,5175,5177,5179,5181,5183],{"class":733,"line":1811},[731,5164,1766],{"class":921},[731,5166,3280],{"class":784},[731,5168,742],{"class":741},[731,5170,3168],{"class":737},[731,5172,3159],{"class":741},[731,5174,3173],{"class":737},[731,5176,930],{"class":741},[731,5178,3178],{"class":737},[731,5180,3270],{"class":741},[731,5182,948],{"class":741},[731,5184,4711],{"class":741},[731,5186,5187,5189,5191,5193,5195,5197,5199,5201,5203,5205,5207,5209,5211,5213,5215,5217],{"class":733,"line":1818},[731,5188,3299],{"class":777},[731,5190,1750],{"class":848},[731,5192,1535],{"class":921},[731,5194,854],{"class":741},[731,5196,3327],{"class":784},[731,5198,930],{"class":741},[731,5200,4728],{"class":784},[731,5202,2842],{"class":741},[731,5204,3309],{"class":741},[731,5206,4735],{"class":784},[731,5208,1184],{"class":741},[731,5210,4740],{"class":836},[731,5212,839],{"class":848},[731,5214,4600],{"class":784},[731,5216,4631],{"class":848},[731,5218,842],{"class":741},[731,5220,5221,5223,5225,5227,5229,5231,5233,5235,5237,5239,5241,5243,5245,5247,5249,5251,5253],{"class":733,"line":1824},[731,5222,4753],{"class":921},[731,5224,4756],{"class":784},[731,5226,948],{"class":741},[731,5228,3306],{"class":784},[731,5230,1184],{"class":741},[731,5232,4765],{"class":836},[731,5234,4768],{"class":848},[731,5236,1184],{"class":741},[731,5238,4773],{"class":836},[731,5240,839],{"class":848},[731,5242,4778],{"class":741},[731,5244,4781],{"class":797},[731,5246,4784],{"class":741},[731,5248,4787],{"class":2935},[731,5250,930],{"class":741},[731,5252,4792],{"class":741},[731,5254,884],{"class":848},[731,5256,5257,5259,5261,5263,5265,5267,5269,5271,5273,5275,5277,5279,5281,5283,5285,5287,5289,5291,5293,5295,5297,5299,5301,5303,5305,5307],{"class":733,"line":1829},[731,5258,4799],{"class":784},[731,5260,3347],{"class":848},[731,5262,3327],{"class":784},[731,5264,4806],{"class":848},[731,5266,1193],{"class":741},[731,5268,4811],{"class":784},[731,5270,1184],{"class":741},[731,5272,4816],{"class":836},[731,5274,839],{"class":848},[731,5276,4821],{"class":1753},[731,5278,1759],{"class":921},[731,5280,4756],{"class":784},[731,5282,1184],{"class":741},[731,5284,4830],{"class":836},[731,5286,839],{"class":848},[731,5288,4821],{"class":784},[731,5290,4631],{"class":848},[731,5292,4839],{"class":741},[731,5294,794],{"class":741},[731,5296,4844],{"class":797},[731,5298,969],{"class":741},[731,5300,4849],{"class":741},[731,5302,4595],{"class":836},[731,5304,839],{"class":848},[731,5306,4856],{"class":784},[731,5308,884],{"class":848},[731,5310,5311],{"class":733,"line":1835},[731,5312,3363],{"class":741},[731,5314,5315,5317],{"class":733,"line":1850},[731,5316,2329],{"class":777},[731,5318,3371],{"class":784},[731,5320,5321],{"class":733,"line":1860},[731,5322,766],{"class":741},[731,5324,5325],{"class":733,"line":1877},[731,5326,824],{"emptyLinePlaceholder":823},[731,5328,5329,5331,5333,5335,5337,5339,5341,5343,5345],{"class":733,"line":1902},[731,5330,830],{"class":777},[731,5332,833],{"class":777},[731,5334,5002],{"class":836},[731,5336,839],{"class":784},[731,5338,839],{"class":741},[731,5340,4892],{"class":1753},[731,5342,1216],{"class":741},[731,5344,1759],{"class":921},[731,5346,745],{"class":741},[731,5348,5349,5351,5353,5355,5357,5359,5361,5363,5365,5367,5369,5371,5373,5375,5377],{"class":733,"line":1908},[731,5350,4903],{"class":784},[731,5352,1184],{"class":741},[731,5354,4908],{"class":784},[731,5356,1184],{"class":741},[731,5358,4913],{"class":836},[731,5360,839],{"class":848},[731,5362,969],{"class":741},[731,5364,4920],{"class":797},[731,5366,969],{"class":741},[731,5368,930],{"class":741},[731,5370,1750],{"class":741},[731,5372,4929],{"class":1753},[731,5374,1216],{"class":741},[731,5376,1759],{"class":921},[731,5378,745],{"class":741},[731,5380,5381],{"class":733,"line":1914},[731,5382,4940],{"class":1814},[731,5384,5385,5387,5389,5391,5393,5395,5397,5399,5401,5403,5405,5407,5409,5411,5413],{"class":733,"line":1922},[731,5386,4945],{"class":784},[731,5388,1184],{"class":741},[731,5390,1754],{"class":784},[731,5392,948],{"class":741},[731,5394,4595],{"class":836},[731,5396,839],{"class":848},[731,5398,4929],{"class":784},[731,5400,1184],{"class":741},[731,5402,1754],{"class":784},[731,5404,2878],{"class":848},[731,5406,4966],{"class":777},[731,5408,4663],{"class":741},[731,5410,4971],{"class":784},[731,5412,1184],{"class":741},[731,5414,4976],{"class":784},[731,5416,5417,5419],{"class":733,"line":2125},[731,5418,1917],{"class":741},[731,5420,884],{"class":848},[731,5422,5423,5425],{"class":733,"line":2354},[731,5424,881],{"class":741},[731,5426,884],{"class":784},[721,5428,5430],{"className":723,"code":5429,"filename":245,"language":725,"meta":888,"style":727},"import { createEvlog } from 'evlog\u002Fnext'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[620,5431,5432,5450,5454,5512,5516,5536,5568,5598,5602,5626,5660,5696,5750,5754,5760,5764,5796,5810,5827,5832,5865,5869],{"__ignoreMap":727},[731,5433,5434,5436,5438,5440,5442,5444,5446,5448],{"class":733,"line":734},[731,5435,778],{"class":777},[731,5437,781],{"class":741},[731,5439,899],{"class":784},[731,5441,788],{"class":741},[731,5443,791],{"class":777},[731,5445,794],{"class":741},[731,5447,908],{"class":797},[731,5449,801],{"class":741},[731,5451,5452],{"class":733,"line":748},[731,5453,824],{"emptyLinePlaceholder":823},[731,5455,5456,5458,5460,5462,5464,5466,5468,5470,5472,5474,5476,5478,5480,5482,5484,5486,5488,5490,5492,5494,5496,5498,5500,5502,5504,5506,5508,5510],{"class":733,"line":763},[731,5457,1535],{"class":921},[731,5459,4529],{"class":784},[731,5461,1193],{"class":741},[731,5463,854],{"class":784},[731,5465,969],{"class":741},[731,5467,3215],{"class":797},[731,5469,969],{"class":741},[731,5471,930],{"class":741},[731,5473,794],{"class":741},[731,5475,3224],{"class":797},[731,5477,969],{"class":741},[731,5479,930],{"class":741},[731,5481,794],{"class":741},[731,5483,3233],{"class":797},[731,5485,969],{"class":741},[731,5487,930],{"class":741},[731,5489,794],{"class":741},[731,5491,4562],{"class":797},[731,5493,969],{"class":741},[731,5495,930],{"class":741},[731,5497,794],{"class":741},[731,5499,3251],{"class":797},[731,5501,969],{"class":741},[731,5503,930],{"class":741},[731,5505,794],{"class":741},[731,5507,4579],{"class":797},[731,5509,969],{"class":741},[731,5511,1223],{"class":784},[731,5513,5514],{"class":733,"line":827},[731,5515,824],{"emptyLinePlaceholder":823},[731,5517,5518,5520,5522,5524,5526,5528,5530,5532,5534],{"class":733,"line":845},[731,5519,4592],{"class":921},[731,5521,4595],{"class":836},[731,5523,839],{"class":741},[731,5525,4600],{"class":1753},[731,5527,742],{"class":741},[731,5529,3178],{"class":737},[731,5531,2821],{"class":741},[731,5533,3178],{"class":737},[731,5535,745],{"class":741},[731,5537,5538,5540,5542,5544,5546,5548,5550,5552,5554,5556,5558,5560,5562,5564,5566],{"class":733,"line":878},[731,5539,2867],{"class":777},[731,5541,1750],{"class":848},[731,5543,4619],{"class":784},[731,5545,1184],{"class":741},[731,5547,4624],{"class":836},[731,5549,839],{"class":848},[731,5551,4600],{"class":784},[731,5553,4631],{"class":848},[731,5555,2881],{"class":777},[731,5557,4636],{"class":784},[731,5559,1184],{"class":741},[731,5561,99],{"class":836},[731,5563,839],{"class":848},[731,5565,4645],{"class":784},[731,5567,884],{"class":848},[731,5569,5570,5572,5574,5576,5578,5580,5582,5584,5586,5588,5590,5592,5594,5596],{"class":733,"line":1806},[731,5571,2867],{"class":777},[731,5573,1750],{"class":848},[731,5575,2872],{"class":741},[731,5577,4600],{"class":784},[731,5579,4660],{"class":741},[731,5581,4663],{"class":741},[731,5583,4636],{"class":784},[731,5585,4668],{"class":741},[731,5587,794],{"class":741},[731,5589,4673],{"class":797},[731,5591,969],{"class":741},[731,5593,2878],{"class":848},[731,5595,2881],{"class":777},[731,5597,4682],{"class":784},[731,5599,5600],{"class":733,"line":1811},[731,5601,824],{"emptyLinePlaceholder":823},[731,5603,5604,5606,5608,5610,5612,5614,5616,5618,5620,5622,5624],{"class":733,"line":1818},[731,5605,1766],{"class":921},[731,5607,3280],{"class":784},[731,5609,742],{"class":741},[731,5611,3168],{"class":737},[731,5613,3159],{"class":741},[731,5615,3173],{"class":737},[731,5617,930],{"class":741},[731,5619,3178],{"class":737},[731,5621,3270],{"class":741},[731,5623,948],{"class":741},[731,5625,4711],{"class":741},[731,5627,5628,5630,5632,5634,5636,5638,5640,5642,5644,5646,5648,5650,5652,5654,5656,5658],{"class":733,"line":1824},[731,5629,3299],{"class":777},[731,5631,1750],{"class":848},[731,5633,1535],{"class":921},[731,5635,854],{"class":741},[731,5637,3327],{"class":784},[731,5639,930],{"class":741},[731,5641,4728],{"class":784},[731,5643,2842],{"class":741},[731,5645,3309],{"class":741},[731,5647,4735],{"class":784},[731,5649,1184],{"class":741},[731,5651,4740],{"class":836},[731,5653,839],{"class":848},[731,5655,4600],{"class":784},[731,5657,4631],{"class":848},[731,5659,842],{"class":741},[731,5661,5662,5664,5666,5668,5670,5672,5674,5676,5678,5680,5682,5684,5686,5688,5690,5692,5694],{"class":733,"line":1829},[731,5663,4753],{"class":921},[731,5665,4756],{"class":784},[731,5667,948],{"class":741},[731,5669,3306],{"class":784},[731,5671,1184],{"class":741},[731,5673,4765],{"class":836},[731,5675,4768],{"class":848},[731,5677,1184],{"class":741},[731,5679,4773],{"class":836},[731,5681,839],{"class":848},[731,5683,4778],{"class":741},[731,5685,4781],{"class":797},[731,5687,4784],{"class":741},[731,5689,4787],{"class":2935},[731,5691,930],{"class":741},[731,5693,4792],{"class":741},[731,5695,884],{"class":848},[731,5697,5698,5700,5702,5704,5706,5708,5710,5712,5714,5716,5718,5720,5722,5724,5726,5728,5730,5732,5734,5736,5738,5740,5742,5744,5746,5748],{"class":733,"line":1835},[731,5699,4799],{"class":784},[731,5701,3347],{"class":848},[731,5703,3327],{"class":784},[731,5705,4806],{"class":848},[731,5707,1193],{"class":741},[731,5709,4811],{"class":784},[731,5711,1184],{"class":741},[731,5713,4816],{"class":836},[731,5715,839],{"class":848},[731,5717,4821],{"class":1753},[731,5719,1759],{"class":921},[731,5721,4756],{"class":784},[731,5723,1184],{"class":741},[731,5725,4830],{"class":836},[731,5727,839],{"class":848},[731,5729,4821],{"class":784},[731,5731,4631],{"class":848},[731,5733,4839],{"class":741},[731,5735,794],{"class":741},[731,5737,4844],{"class":797},[731,5739,969],{"class":741},[731,5741,4849],{"class":741},[731,5743,4595],{"class":836},[731,5745,839],{"class":848},[731,5747,4856],{"class":784},[731,5749,884],{"class":848},[731,5751,5752],{"class":733,"line":1850},[731,5753,3363],{"class":741},[731,5755,5756,5758],{"class":733,"line":1860},[731,5757,2329],{"class":777},[731,5759,3371],{"class":784},[731,5761,5762],{"class":733,"line":1877},[731,5763,766],{"class":741},[731,5765,5766,5768,5770,5772,5774,5776,5778,5780,5782,5784,5786,5788,5790,5792,5794],{"class":733,"line":1902},[731,5767,830],{"class":777},[731,5769,922],{"class":921},[731,5771,781],{"class":741},[731,5773,927],{"class":784},[731,5775,930],{"class":741},[731,5777,933],{"class":784},[731,5779,930],{"class":741},[731,5781,938],{"class":784},[731,5783,930],{"class":741},[731,5785,943],{"class":784},[731,5787,881],{"class":741},[731,5789,948],{"class":741},[731,5791,899],{"class":836},[731,5793,839],{"class":784},[731,5795,842],{"class":741},[731,5797,5798,5800,5802,5804,5806,5808],{"class":733,"line":1908},[731,5799,959],{"class":848},[731,5801,742],{"class":741},[731,5803,794],{"class":741},[731,5805,966],{"class":797},[731,5807,969],{"class":741},[731,5809,760],{"class":741},[731,5811,5812,5815,5817,5819,5821,5823,5825],{"class":733,"line":1914},[731,5813,5814],{"class":836},"  drain",[731,5816,742],{"class":741},[731,5818,1750],{"class":741},[731,5820,4929],{"class":1753},[731,5822,1216],{"class":741},[731,5824,1759],{"class":921},[731,5826,745],{"class":741},[731,5828,5829],{"class":733,"line":1922},[731,5830,5831],{"class":1814},"      \u002F\u002F Sanitize before sending to external service\n",[731,5833,5834,5837,5839,5841,5843,5845,5847,5849,5851,5853,5855,5857,5859,5861,5863],{"class":733,"line":2125},[731,5835,5836],{"class":784},"      ctx",[731,5838,1184],{"class":741},[731,5840,1754],{"class":784},[731,5842,948],{"class":741},[731,5844,4595],{"class":836},[731,5846,839],{"class":848},[731,5848,4929],{"class":784},[731,5850,1184],{"class":741},[731,5852,1754],{"class":784},[731,5854,2878],{"class":848},[731,5856,4966],{"class":777},[731,5858,4663],{"class":741},[731,5860,4971],{"class":784},[731,5862,1184],{"class":741},[731,5864,4976],{"class":784},[731,5866,5867],{"class":733,"line":2354},[731,5868,1911],{"class":741},[731,5870,5871,5873],{"class":733,"line":3184},[731,5872,881],{"class":741},[731,5874,884],{"class":784},[721,5876,5878],{"className":723,"code":5877,"filename":250,"language":725,"meta":991,"style":727},"import { createEvlogHooks } from 'evlog\u002Fsveltekit'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nexport const { handle, handleError } = createEvlogHooks({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[620,5879,5880,5898,5902,5960,5964,5984,6016,6046,6050,6074,6108,6144,6198,6202,6208,6212,6236,6252,6256,6288,6292],{"__ignoreMap":727},[731,5881,5882,5884,5886,5888,5890,5892,5894,5896],{"class":733,"line":734},[731,5883,778],{"class":777},[731,5885,781],{"class":741},[731,5887,1002],{"class":784},[731,5889,788],{"class":741},[731,5891,791],{"class":777},[731,5893,794],{"class":741},[731,5895,1011],{"class":797},[731,5897,801],{"class":741},[731,5899,5900],{"class":733,"line":748},[731,5901,824],{"emptyLinePlaceholder":823},[731,5903,5904,5906,5908,5910,5912,5914,5916,5918,5920,5922,5924,5926,5928,5930,5932,5934,5936,5938,5940,5942,5944,5946,5948,5950,5952,5954,5956,5958],{"class":733,"line":763},[731,5905,1535],{"class":921},[731,5907,4529],{"class":784},[731,5909,1193],{"class":741},[731,5911,854],{"class":784},[731,5913,969],{"class":741},[731,5915,3215],{"class":797},[731,5917,969],{"class":741},[731,5919,930],{"class":741},[731,5921,794],{"class":741},[731,5923,3224],{"class":797},[731,5925,969],{"class":741},[731,5927,930],{"class":741},[731,5929,794],{"class":741},[731,5931,3233],{"class":797},[731,5933,969],{"class":741},[731,5935,930],{"class":741},[731,5937,794],{"class":741},[731,5939,4562],{"class":797},[731,5941,969],{"class":741},[731,5943,930],{"class":741},[731,5945,794],{"class":741},[731,5947,3251],{"class":797},[731,5949,969],{"class":741},[731,5951,930],{"class":741},[731,5953,794],{"class":741},[731,5955,4579],{"class":797},[731,5957,969],{"class":741},[731,5959,1223],{"class":784},[731,5961,5962],{"class":733,"line":827},[731,5963,824],{"emptyLinePlaceholder":823},[731,5965,5966,5968,5970,5972,5974,5976,5978,5980,5982],{"class":733,"line":845},[731,5967,4592],{"class":921},[731,5969,4595],{"class":836},[731,5971,839],{"class":741},[731,5973,4600],{"class":1753},[731,5975,742],{"class":741},[731,5977,3178],{"class":737},[731,5979,2821],{"class":741},[731,5981,3178],{"class":737},[731,5983,745],{"class":741},[731,5985,5986,5988,5990,5992,5994,5996,5998,6000,6002,6004,6006,6008,6010,6012,6014],{"class":733,"line":878},[731,5987,2867],{"class":777},[731,5989,1750],{"class":848},[731,5991,4619],{"class":784},[731,5993,1184],{"class":741},[731,5995,4624],{"class":836},[731,5997,839],{"class":848},[731,5999,4600],{"class":784},[731,6001,4631],{"class":848},[731,6003,2881],{"class":777},[731,6005,4636],{"class":784},[731,6007,1184],{"class":741},[731,6009,99],{"class":836},[731,6011,839],{"class":848},[731,6013,4645],{"class":784},[731,6015,884],{"class":848},[731,6017,6018,6020,6022,6024,6026,6028,6030,6032,6034,6036,6038,6040,6042,6044],{"class":733,"line":1806},[731,6019,2867],{"class":777},[731,6021,1750],{"class":848},[731,6023,2872],{"class":741},[731,6025,4600],{"class":784},[731,6027,4660],{"class":741},[731,6029,4663],{"class":741},[731,6031,4636],{"class":784},[731,6033,4668],{"class":741},[731,6035,794],{"class":741},[731,6037,4673],{"class":797},[731,6039,969],{"class":741},[731,6041,2878],{"class":848},[731,6043,2881],{"class":777},[731,6045,4682],{"class":784},[731,6047,6048],{"class":733,"line":1811},[731,6049,824],{"emptyLinePlaceholder":823},[731,6051,6052,6054,6056,6058,6060,6062,6064,6066,6068,6070,6072],{"class":733,"line":1818},[731,6053,1766],{"class":921},[731,6055,3280],{"class":784},[731,6057,742],{"class":741},[731,6059,3168],{"class":737},[731,6061,3159],{"class":741},[731,6063,3173],{"class":737},[731,6065,930],{"class":741},[731,6067,3178],{"class":737},[731,6069,3270],{"class":741},[731,6071,948],{"class":741},[731,6073,4711],{"class":741},[731,6075,6076,6078,6080,6082,6084,6086,6088,6090,6092,6094,6096,6098,6100,6102,6104,6106],{"class":733,"line":1824},[731,6077,3299],{"class":777},[731,6079,1750],{"class":848},[731,6081,1535],{"class":921},[731,6083,854],{"class":741},[731,6085,3327],{"class":784},[731,6087,930],{"class":741},[731,6089,4728],{"class":784},[731,6091,2842],{"class":741},[731,6093,3309],{"class":741},[731,6095,4735],{"class":784},[731,6097,1184],{"class":741},[731,6099,4740],{"class":836},[731,6101,839],{"class":848},[731,6103,4600],{"class":784},[731,6105,4631],{"class":848},[731,6107,842],{"class":741},[731,6109,6110,6112,6114,6116,6118,6120,6122,6124,6126,6128,6130,6132,6134,6136,6138,6140,6142],{"class":733,"line":1829},[731,6111,4753],{"class":921},[731,6113,4756],{"class":784},[731,6115,948],{"class":741},[731,6117,3306],{"class":784},[731,6119,1184],{"class":741},[731,6121,4765],{"class":836},[731,6123,4768],{"class":848},[731,6125,1184],{"class":741},[731,6127,4773],{"class":836},[731,6129,839],{"class":848},[731,6131,4778],{"class":741},[731,6133,4781],{"class":797},[731,6135,4784],{"class":741},[731,6137,4787],{"class":2935},[731,6139,930],{"class":741},[731,6141,4792],{"class":741},[731,6143,884],{"class":848},[731,6145,6146,6148,6150,6152,6154,6156,6158,6160,6162,6164,6166,6168,6170,6172,6174,6176,6178,6180,6182,6184,6186,6188,6190,6192,6194,6196],{"class":733,"line":1835},[731,6147,4799],{"class":784},[731,6149,3347],{"class":848},[731,6151,3327],{"class":784},[731,6153,4806],{"class":848},[731,6155,1193],{"class":741},[731,6157,4811],{"class":784},[731,6159,1184],{"class":741},[731,6161,4816],{"class":836},[731,6163,839],{"class":848},[731,6165,4821],{"class":1753},[731,6167,1759],{"class":921},[731,6169,4756],{"class":784},[731,6171,1184],{"class":741},[731,6173,4830],{"class":836},[731,6175,839],{"class":848},[731,6177,4821],{"class":784},[731,6179,4631],{"class":848},[731,6181,4839],{"class":741},[731,6183,794],{"class":741},[731,6185,4844],{"class":797},[731,6187,969],{"class":741},[731,6189,4849],{"class":741},[731,6191,4595],{"class":836},[731,6193,839],{"class":848},[731,6195,4856],{"class":784},[731,6197,884],{"class":848},[731,6199,6200],{"class":733,"line":1850},[731,6201,3363],{"class":741},[731,6203,6204,6206],{"class":733,"line":1860},[731,6205,2329],{"class":777},[731,6207,3371],{"class":784},[731,6209,6210],{"class":733,"line":1877},[731,6211,766],{"class":741},[731,6213,6214,6216,6218,6220,6222,6224,6226,6228,6230,6232,6234],{"class":733,"line":1902},[731,6215,830],{"class":777},[731,6217,922],{"class":921},[731,6219,781],{"class":741},[731,6221,1028],{"class":784},[731,6223,930],{"class":741},[731,6225,1033],{"class":784},[731,6227,881],{"class":741},[731,6229,948],{"class":741},[731,6231,1002],{"class":836},[731,6233,839],{"class":784},[731,6235,842],{"class":741},[731,6237,6238,6240,6242,6244,6246,6248,6250],{"class":733,"line":1908},[731,6239,5814],{"class":836},[731,6241,742],{"class":741},[731,6243,1750],{"class":741},[731,6245,4929],{"class":1753},[731,6247,1216],{"class":741},[731,6249,1759],{"class":921},[731,6251,745],{"class":741},[731,6253,6254],{"class":733,"line":1914},[731,6255,5831],{"class":1814},[731,6257,6258,6260,6262,6264,6266,6268,6270,6272,6274,6276,6278,6280,6282,6284,6286],{"class":733,"line":1922},[731,6259,5836],{"class":784},[731,6261,1184],{"class":741},[731,6263,1754],{"class":784},[731,6265,948],{"class":741},[731,6267,4595],{"class":836},[731,6269,839],{"class":848},[731,6271,4929],{"class":784},[731,6273,1184],{"class":741},[731,6275,1754],{"class":784},[731,6277,2878],{"class":848},[731,6279,4966],{"class":777},[731,6281,4663],{"class":741},[731,6283,4971],{"class":784},[731,6285,1184],{"class":741},[731,6287,4976],{"class":784},[731,6289,6290],{"class":733,"line":2125},[731,6291,1911],{"class":741},[731,6293,6294,6296],{"class":733,"line":2354},[731,6295,881],{"class":741},[731,6297,884],{"class":784},[721,6299,6301],{"className":723,"code":6300,"filename":260,"language":725,"meta":4520,"style":727},"import { definePlugin } from 'nitro'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\n\nexport default definePlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', (ctx) => {\n    \u002F\u002F Sanitize before sending to external service\n    ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n  })\n})\n",[620,6302,6303,6321,6325,6383,6387,6407,6439,6469,6473,6497,6531,6567,6621,6625,6631,6635,6639,6659,6691,6695,6727,6733],{"__ignoreMap":727},[731,6304,6305,6307,6309,6311,6313,6315,6317,6319],{"class":733,"line":734},[731,6306,778],{"class":777},[731,6308,781],{"class":741},[731,6310,5002],{"class":784},[731,6312,788],{"class":741},[731,6314,791],{"class":777},[731,6316,794],{"class":741},[731,6318,798],{"class":797},[731,6320,801],{"class":741},[731,6322,6323],{"class":733,"line":748},[731,6324,824],{"emptyLinePlaceholder":823},[731,6326,6327,6329,6331,6333,6335,6337,6339,6341,6343,6345,6347,6349,6351,6353,6355,6357,6359,6361,6363,6365,6367,6369,6371,6373,6375,6377,6379,6381],{"class":733,"line":763},[731,6328,1535],{"class":921},[731,6330,4529],{"class":784},[731,6332,1193],{"class":741},[731,6334,854],{"class":784},[731,6336,969],{"class":741},[731,6338,3215],{"class":797},[731,6340,969],{"class":741},[731,6342,930],{"class":741},[731,6344,794],{"class":741},[731,6346,3224],{"class":797},[731,6348,969],{"class":741},[731,6350,930],{"class":741},[731,6352,794],{"class":741},[731,6354,3233],{"class":797},[731,6356,969],{"class":741},[731,6358,930],{"class":741},[731,6360,794],{"class":741},[731,6362,4562],{"class":797},[731,6364,969],{"class":741},[731,6366,930],{"class":741},[731,6368,794],{"class":741},[731,6370,3251],{"class":797},[731,6372,969],{"class":741},[731,6374,930],{"class":741},[731,6376,794],{"class":741},[731,6378,4579],{"class":797},[731,6380,969],{"class":741},[731,6382,1223],{"class":784},[731,6384,6385],{"class":733,"line":827},[731,6386,824],{"emptyLinePlaceholder":823},[731,6388,6389,6391,6393,6395,6397,6399,6401,6403,6405],{"class":733,"line":845},[731,6390,4592],{"class":921},[731,6392,4595],{"class":836},[731,6394,839],{"class":741},[731,6396,4600],{"class":1753},[731,6398,742],{"class":741},[731,6400,3178],{"class":737},[731,6402,2821],{"class":741},[731,6404,3178],{"class":737},[731,6406,745],{"class":741},[731,6408,6409,6411,6413,6415,6417,6419,6421,6423,6425,6427,6429,6431,6433,6435,6437],{"class":733,"line":878},[731,6410,2867],{"class":777},[731,6412,1750],{"class":848},[731,6414,4619],{"class":784},[731,6416,1184],{"class":741},[731,6418,4624],{"class":836},[731,6420,839],{"class":848},[731,6422,4600],{"class":784},[731,6424,4631],{"class":848},[731,6426,2881],{"class":777},[731,6428,4636],{"class":784},[731,6430,1184],{"class":741},[731,6432,99],{"class":836},[731,6434,839],{"class":848},[731,6436,4645],{"class":784},[731,6438,884],{"class":848},[731,6440,6441,6443,6445,6447,6449,6451,6453,6455,6457,6459,6461,6463,6465,6467],{"class":733,"line":1806},[731,6442,2867],{"class":777},[731,6444,1750],{"class":848},[731,6446,2872],{"class":741},[731,6448,4600],{"class":784},[731,6450,4660],{"class":741},[731,6452,4663],{"class":741},[731,6454,4636],{"class":784},[731,6456,4668],{"class":741},[731,6458,794],{"class":741},[731,6460,4673],{"class":797},[731,6462,969],{"class":741},[731,6464,2878],{"class":848},[731,6466,2881],{"class":777},[731,6468,4682],{"class":784},[731,6470,6471],{"class":733,"line":1811},[731,6472,824],{"emptyLinePlaceholder":823},[731,6474,6475,6477,6479,6481,6483,6485,6487,6489,6491,6493,6495],{"class":733,"line":1818},[731,6476,1766],{"class":921},[731,6478,3280],{"class":784},[731,6480,742],{"class":741},[731,6482,3168],{"class":737},[731,6484,3159],{"class":741},[731,6486,3173],{"class":737},[731,6488,930],{"class":741},[731,6490,3178],{"class":737},[731,6492,3270],{"class":741},[731,6494,948],{"class":741},[731,6496,4711],{"class":741},[731,6498,6499,6501,6503,6505,6507,6509,6511,6513,6515,6517,6519,6521,6523,6525,6527,6529],{"class":733,"line":1824},[731,6500,3299],{"class":777},[731,6502,1750],{"class":848},[731,6504,1535],{"class":921},[731,6506,854],{"class":741},[731,6508,3327],{"class":784},[731,6510,930],{"class":741},[731,6512,4728],{"class":784},[731,6514,2842],{"class":741},[731,6516,3309],{"class":741},[731,6518,4735],{"class":784},[731,6520,1184],{"class":741},[731,6522,4740],{"class":836},[731,6524,839],{"class":848},[731,6526,4600],{"class":784},[731,6528,4631],{"class":848},[731,6530,842],{"class":741},[731,6532,6533,6535,6537,6539,6541,6543,6545,6547,6549,6551,6553,6555,6557,6559,6561,6563,6565],{"class":733,"line":1829},[731,6534,4753],{"class":921},[731,6536,4756],{"class":784},[731,6538,948],{"class":741},[731,6540,3306],{"class":784},[731,6542,1184],{"class":741},[731,6544,4765],{"class":836},[731,6546,4768],{"class":848},[731,6548,1184],{"class":741},[731,6550,4773],{"class":836},[731,6552,839],{"class":848},[731,6554,4778],{"class":741},[731,6556,4781],{"class":797},[731,6558,4784],{"class":741},[731,6560,4787],{"class":2935},[731,6562,930],{"class":741},[731,6564,4792],{"class":741},[731,6566,884],{"class":848},[731,6568,6569,6571,6573,6575,6577,6579,6581,6583,6585,6587,6589,6591,6593,6595,6597,6599,6601,6603,6605,6607,6609,6611,6613,6615,6617,6619],{"class":733,"line":1835},[731,6570,4799],{"class":784},[731,6572,3347],{"class":848},[731,6574,3327],{"class":784},[731,6576,4806],{"class":848},[731,6578,1193],{"class":741},[731,6580,4811],{"class":784},[731,6582,1184],{"class":741},[731,6584,4816],{"class":836},[731,6586,839],{"class":848},[731,6588,4821],{"class":1753},[731,6590,1759],{"class":921},[731,6592,4756],{"class":784},[731,6594,1184],{"class":741},[731,6596,4830],{"class":836},[731,6598,839],{"class":848},[731,6600,4821],{"class":784},[731,6602,4631],{"class":848},[731,6604,4839],{"class":741},[731,6606,794],{"class":741},[731,6608,4844],{"class":797},[731,6610,969],{"class":741},[731,6612,4849],{"class":741},[731,6614,4595],{"class":836},[731,6616,839],{"class":848},[731,6618,4856],{"class":784},[731,6620,884],{"class":848},[731,6622,6623],{"class":733,"line":1850},[731,6624,3363],{"class":741},[731,6626,6627,6629],{"class":733,"line":1860},[731,6628,2329],{"class":777},[731,6630,3371],{"class":784},[731,6632,6633],{"class":733,"line":1877},[731,6634,766],{"class":741},[731,6636,6637],{"class":733,"line":1902},[731,6638,824],{"emptyLinePlaceholder":823},[731,6640,6641,6643,6645,6647,6649,6651,6653,6655,6657],{"class":733,"line":1908},[731,6642,830],{"class":777},[731,6644,833],{"class":777},[731,6646,5002],{"class":836},[731,6648,839],{"class":784},[731,6650,839],{"class":741},[731,6652,4892],{"class":1753},[731,6654,1216],{"class":741},[731,6656,1759],{"class":921},[731,6658,745],{"class":741},[731,6660,6661,6663,6665,6667,6669,6671,6673,6675,6677,6679,6681,6683,6685,6687,6689],{"class":733,"line":1914},[731,6662,4903],{"class":784},[731,6664,1184],{"class":741},[731,6666,4908],{"class":784},[731,6668,1184],{"class":741},[731,6670,4913],{"class":836},[731,6672,839],{"class":848},[731,6674,969],{"class":741},[731,6676,4920],{"class":797},[731,6678,969],{"class":741},[731,6680,930],{"class":741},[731,6682,1750],{"class":741},[731,6684,4929],{"class":1753},[731,6686,1216],{"class":741},[731,6688,1759],{"class":921},[731,6690,745],{"class":741},[731,6692,6693],{"class":733,"line":1922},[731,6694,4940],{"class":1814},[731,6696,6697,6699,6701,6703,6705,6707,6709,6711,6713,6715,6717,6719,6721,6723,6725],{"class":733,"line":2125},[731,6698,4945],{"class":784},[731,6700,1184],{"class":741},[731,6702,1754],{"class":784},[731,6704,948],{"class":741},[731,6706,4595],{"class":836},[731,6708,839],{"class":848},[731,6710,4929],{"class":784},[731,6712,1184],{"class":741},[731,6714,1754],{"class":784},[731,6716,2878],{"class":848},[731,6718,4966],{"class":777},[731,6720,4663],{"class":741},[731,6722,4971],{"class":784},[731,6724,1184],{"class":741},[731,6726,4976],{"class":784},[731,6728,6729,6731],{"class":733,"line":2354},[731,6730,1917],{"class":741},[731,6732,884],{"class":848},[731,6734,6735,6737],{"class":733,"line":3184},[731,6736,881],{"class":741},[731,6738,884],{"class":784},[721,6740,6742],{"className":723,"code":6741,"filename":290,"language":725,"meta":1141,"style":727},"import { evlog } from 'evlog\u002Freact-router'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nexport const middleware: Route.MiddlewareFunction[] = [\n  evlog({\n      drain: (ctx) => {\n          \u002F\u002F Sanitize before sending to external service\n          ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n        },\n    }),\n]\n",[620,6743,6744,6762,6766,6824,6828,6848,6880,6910,6914,6938,6972,7008,7062,7066,7072,7076,7098,7106,7123,7128,7161,7166,7175],{"__ignoreMap":727},[731,6745,6746,6748,6750,6752,6754,6756,6758,6760],{"class":733,"line":734},[731,6747,778],{"class":777},[731,6749,781],{"class":741},[731,6751,1152],{"class":784},[731,6753,788],{"class":741},[731,6755,791],{"class":777},[731,6757,794],{"class":741},[731,6759,1161],{"class":797},[731,6761,801],{"class":741},[731,6763,6764],{"class":733,"line":748},[731,6765,824],{"emptyLinePlaceholder":823},[731,6767,6768,6770,6772,6774,6776,6778,6780,6782,6784,6786,6788,6790,6792,6794,6796,6798,6800,6802,6804,6806,6808,6810,6812,6814,6816,6818,6820,6822],{"class":733,"line":763},[731,6769,1535],{"class":921},[731,6771,4529],{"class":784},[731,6773,1193],{"class":741},[731,6775,854],{"class":784},[731,6777,969],{"class":741},[731,6779,3215],{"class":797},[731,6781,969],{"class":741},[731,6783,930],{"class":741},[731,6785,794],{"class":741},[731,6787,3224],{"class":797},[731,6789,969],{"class":741},[731,6791,930],{"class":741},[731,6793,794],{"class":741},[731,6795,3233],{"class":797},[731,6797,969],{"class":741},[731,6799,930],{"class":741},[731,6801,794],{"class":741},[731,6803,4562],{"class":797},[731,6805,969],{"class":741},[731,6807,930],{"class":741},[731,6809,794],{"class":741},[731,6811,3251],{"class":797},[731,6813,969],{"class":741},[731,6815,930],{"class":741},[731,6817,794],{"class":741},[731,6819,4579],{"class":797},[731,6821,969],{"class":741},[731,6823,1223],{"class":784},[731,6825,6826],{"class":733,"line":827},[731,6827,824],{"emptyLinePlaceholder":823},[731,6829,6830,6832,6834,6836,6838,6840,6842,6844,6846],{"class":733,"line":845},[731,6831,4592],{"class":921},[731,6833,4595],{"class":836},[731,6835,839],{"class":741},[731,6837,4600],{"class":1753},[731,6839,742],{"class":741},[731,6841,3178],{"class":737},[731,6843,2821],{"class":741},[731,6845,3178],{"class":737},[731,6847,745],{"class":741},[731,6849,6850,6852,6854,6856,6858,6860,6862,6864,6866,6868,6870,6872,6874,6876,6878],{"class":733,"line":878},[731,6851,2867],{"class":777},[731,6853,1750],{"class":848},[731,6855,4619],{"class":784},[731,6857,1184],{"class":741},[731,6859,4624],{"class":836},[731,6861,839],{"class":848},[731,6863,4600],{"class":784},[731,6865,4631],{"class":848},[731,6867,2881],{"class":777},[731,6869,4636],{"class":784},[731,6871,1184],{"class":741},[731,6873,99],{"class":836},[731,6875,839],{"class":848},[731,6877,4645],{"class":784},[731,6879,884],{"class":848},[731,6881,6882,6884,6886,6888,6890,6892,6894,6896,6898,6900,6902,6904,6906,6908],{"class":733,"line":1806},[731,6883,2867],{"class":777},[731,6885,1750],{"class":848},[731,6887,2872],{"class":741},[731,6889,4600],{"class":784},[731,6891,4660],{"class":741},[731,6893,4663],{"class":741},[731,6895,4636],{"class":784},[731,6897,4668],{"class":741},[731,6899,794],{"class":741},[731,6901,4673],{"class":797},[731,6903,969],{"class":741},[731,6905,2878],{"class":848},[731,6907,2881],{"class":777},[731,6909,4682],{"class":784},[731,6911,6912],{"class":733,"line":1811},[731,6913,824],{"emptyLinePlaceholder":823},[731,6915,6916,6918,6920,6922,6924,6926,6928,6930,6932,6934,6936],{"class":733,"line":1818},[731,6917,1766],{"class":921},[731,6919,3280],{"class":784},[731,6921,742],{"class":741},[731,6923,3168],{"class":737},[731,6925,3159],{"class":741},[731,6927,3173],{"class":737},[731,6929,930],{"class":741},[731,6931,3178],{"class":737},[731,6933,3270],{"class":741},[731,6935,948],{"class":741},[731,6937,4711],{"class":741},[731,6939,6940,6942,6944,6946,6948,6950,6952,6954,6956,6958,6960,6962,6964,6966,6968,6970],{"class":733,"line":1824},[731,6941,3299],{"class":777},[731,6943,1750],{"class":848},[731,6945,1535],{"class":921},[731,6947,854],{"class":741},[731,6949,3327],{"class":784},[731,6951,930],{"class":741},[731,6953,4728],{"class":784},[731,6955,2842],{"class":741},[731,6957,3309],{"class":741},[731,6959,4735],{"class":784},[731,6961,1184],{"class":741},[731,6963,4740],{"class":836},[731,6965,839],{"class":848},[731,6967,4600],{"class":784},[731,6969,4631],{"class":848},[731,6971,842],{"class":741},[731,6973,6974,6976,6978,6980,6982,6984,6986,6988,6990,6992,6994,6996,6998,7000,7002,7004,7006],{"class":733,"line":1829},[731,6975,4753],{"class":921},[731,6977,4756],{"class":784},[731,6979,948],{"class":741},[731,6981,3306],{"class":784},[731,6983,1184],{"class":741},[731,6985,4765],{"class":836},[731,6987,4768],{"class":848},[731,6989,1184],{"class":741},[731,6991,4773],{"class":836},[731,6993,839],{"class":848},[731,6995,4778],{"class":741},[731,6997,4781],{"class":797},[731,6999,4784],{"class":741},[731,7001,4787],{"class":2935},[731,7003,930],{"class":741},[731,7005,4792],{"class":741},[731,7007,884],{"class":848},[731,7009,7010,7012,7014,7016,7018,7020,7022,7024,7026,7028,7030,7032,7034,7036,7038,7040,7042,7044,7046,7048,7050,7052,7054,7056,7058,7060],{"class":733,"line":1835},[731,7011,4799],{"class":784},[731,7013,3347],{"class":848},[731,7015,3327],{"class":784},[731,7017,4806],{"class":848},[731,7019,1193],{"class":741},[731,7021,4811],{"class":784},[731,7023,1184],{"class":741},[731,7025,4816],{"class":836},[731,7027,839],{"class":848},[731,7029,4821],{"class":1753},[731,7031,1759],{"class":921},[731,7033,4756],{"class":784},[731,7035,1184],{"class":741},[731,7037,4830],{"class":836},[731,7039,839],{"class":848},[731,7041,4821],{"class":784},[731,7043,4631],{"class":848},[731,7045,4839],{"class":741},[731,7047,794],{"class":741},[731,7049,4844],{"class":797},[731,7051,969],{"class":741},[731,7053,4849],{"class":741},[731,7055,4595],{"class":836},[731,7057,839],{"class":848},[731,7059,4856],{"class":784},[731,7061,884],{"class":848},[731,7063,7064],{"class":733,"line":1850},[731,7065,3363],{"class":741},[731,7067,7068,7070],{"class":733,"line":1860},[731,7069,2329],{"class":777},[731,7071,3371],{"class":784},[731,7073,7074],{"class":733,"line":1877},[731,7075,766],{"class":741},[731,7077,7078,7080,7082,7084,7086,7088,7090,7092,7094,7096],{"class":733,"line":1902},[731,7079,830],{"class":777},[731,7081,922],{"class":921},[731,7083,1176],{"class":784},[731,7085,742],{"class":741},[731,7087,1181],{"class":737},[731,7089,1184],{"class":741},[731,7091,1187],{"class":737},[731,7093,1190],{"class":784},[731,7095,1193],{"class":741},[731,7097,1196],{"class":784},[731,7099,7100,7102,7104],{"class":733,"line":1908},[731,7101,1201],{"class":836},[731,7103,839],{"class":784},[731,7105,842],{"class":741},[731,7107,7108,7111,7113,7115,7117,7119,7121],{"class":733,"line":1914},[731,7109,7110],{"class":836},"      drain",[731,7112,742],{"class":741},[731,7114,1750],{"class":741},[731,7116,4929],{"class":1753},[731,7118,1216],{"class":741},[731,7120,1759],{"class":921},[731,7122,745],{"class":741},[731,7124,7125],{"class":733,"line":1922},[731,7126,7127],{"class":1814},"          \u002F\u002F Sanitize before sending to external service\n",[731,7129,7130,7133,7135,7137,7139,7141,7143,7145,7147,7149,7151,7153,7155,7157,7159],{"class":733,"line":2125},[731,7131,7132],{"class":784},"          ctx",[731,7134,1184],{"class":741},[731,7136,1754],{"class":784},[731,7138,948],{"class":741},[731,7140,4595],{"class":836},[731,7142,839],{"class":848},[731,7144,4929],{"class":784},[731,7146,1184],{"class":741},[731,7148,1754],{"class":784},[731,7150,2878],{"class":848},[731,7152,4966],{"class":777},[731,7154,4663],{"class":741},[731,7156,4971],{"class":784},[731,7158,1184],{"class":741},[731,7160,4976],{"class":784},[731,7162,7163],{"class":733,"line":2354},[731,7164,7165],{"class":741},"        },\n",[731,7167,7168,7171,7173],{"class":733,"line":3184},[731,7169,7170],{"class":741},"    }",[731,7172,1216],{"class":784},[731,7174,760],{"class":741},[731,7176,7177],{"class":733,"line":3197},[731,7178,1223],{"class":784},[721,7180,7182],{"className":723,"code":7181,"filename":275,"language":725,"meta":1227,"style":727},"import { evlog } from 'evlog\u002Fhono'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\napp.use(evlog({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n}))\n",[620,7183,7184,7202,7206,7264,7268,7288,7320,7350,7354,7378,7412,7448,7502,7506,7512,7516,7532,7548,7552,7584,7588],{"__ignoreMap":727},[731,7185,7186,7188,7190,7192,7194,7196,7198,7200],{"class":733,"line":734},[731,7187,778],{"class":777},[731,7189,781],{"class":741},[731,7191,1152],{"class":784},[731,7193,788],{"class":741},[731,7195,791],{"class":777},[731,7197,794],{"class":741},[731,7199,1246],{"class":797},[731,7201,801],{"class":741},[731,7203,7204],{"class":733,"line":748},[731,7205,824],{"emptyLinePlaceholder":823},[731,7207,7208,7210,7212,7214,7216,7218,7220,7222,7224,7226,7228,7230,7232,7234,7236,7238,7240,7242,7244,7246,7248,7250,7252,7254,7256,7258,7260,7262],{"class":733,"line":763},[731,7209,1535],{"class":921},[731,7211,4529],{"class":784},[731,7213,1193],{"class":741},[731,7215,854],{"class":784},[731,7217,969],{"class":741},[731,7219,3215],{"class":797},[731,7221,969],{"class":741},[731,7223,930],{"class":741},[731,7225,794],{"class":741},[731,7227,3224],{"class":797},[731,7229,969],{"class":741},[731,7231,930],{"class":741},[731,7233,794],{"class":741},[731,7235,3233],{"class":797},[731,7237,969],{"class":741},[731,7239,930],{"class":741},[731,7241,794],{"class":741},[731,7243,4562],{"class":797},[731,7245,969],{"class":741},[731,7247,930],{"class":741},[731,7249,794],{"class":741},[731,7251,3251],{"class":797},[731,7253,969],{"class":741},[731,7255,930],{"class":741},[731,7257,794],{"class":741},[731,7259,4579],{"class":797},[731,7261,969],{"class":741},[731,7263,1223],{"class":784},[731,7265,7266],{"class":733,"line":827},[731,7267,824],{"emptyLinePlaceholder":823},[731,7269,7270,7272,7274,7276,7278,7280,7282,7284,7286],{"class":733,"line":845},[731,7271,4592],{"class":921},[731,7273,4595],{"class":836},[731,7275,839],{"class":741},[731,7277,4600],{"class":1753},[731,7279,742],{"class":741},[731,7281,3178],{"class":737},[731,7283,2821],{"class":741},[731,7285,3178],{"class":737},[731,7287,745],{"class":741},[731,7289,7290,7292,7294,7296,7298,7300,7302,7304,7306,7308,7310,7312,7314,7316,7318],{"class":733,"line":878},[731,7291,2867],{"class":777},[731,7293,1750],{"class":848},[731,7295,4619],{"class":784},[731,7297,1184],{"class":741},[731,7299,4624],{"class":836},[731,7301,839],{"class":848},[731,7303,4600],{"class":784},[731,7305,4631],{"class":848},[731,7307,2881],{"class":777},[731,7309,4636],{"class":784},[731,7311,1184],{"class":741},[731,7313,99],{"class":836},[731,7315,839],{"class":848},[731,7317,4645],{"class":784},[731,7319,884],{"class":848},[731,7321,7322,7324,7326,7328,7330,7332,7334,7336,7338,7340,7342,7344,7346,7348],{"class":733,"line":1806},[731,7323,2867],{"class":777},[731,7325,1750],{"class":848},[731,7327,2872],{"class":741},[731,7329,4600],{"class":784},[731,7331,4660],{"class":741},[731,7333,4663],{"class":741},[731,7335,4636],{"class":784},[731,7337,4668],{"class":741},[731,7339,794],{"class":741},[731,7341,4673],{"class":797},[731,7343,969],{"class":741},[731,7345,2878],{"class":848},[731,7347,2881],{"class":777},[731,7349,4682],{"class":784},[731,7351,7352],{"class":733,"line":1811},[731,7353,824],{"emptyLinePlaceholder":823},[731,7355,7356,7358,7360,7362,7364,7366,7368,7370,7372,7374,7376],{"class":733,"line":1818},[731,7357,1766],{"class":921},[731,7359,3280],{"class":784},[731,7361,742],{"class":741},[731,7363,3168],{"class":737},[731,7365,3159],{"class":741},[731,7367,3173],{"class":737},[731,7369,930],{"class":741},[731,7371,3178],{"class":737},[731,7373,3270],{"class":741},[731,7375,948],{"class":741},[731,7377,4711],{"class":741},[731,7379,7380,7382,7384,7386,7388,7390,7392,7394,7396,7398,7400,7402,7404,7406,7408,7410],{"class":733,"line":1824},[731,7381,3299],{"class":777},[731,7383,1750],{"class":848},[731,7385,1535],{"class":921},[731,7387,854],{"class":741},[731,7389,3327],{"class":784},[731,7391,930],{"class":741},[731,7393,4728],{"class":784},[731,7395,2842],{"class":741},[731,7397,3309],{"class":741},[731,7399,4735],{"class":784},[731,7401,1184],{"class":741},[731,7403,4740],{"class":836},[731,7405,839],{"class":848},[731,7407,4600],{"class":784},[731,7409,4631],{"class":848},[731,7411,842],{"class":741},[731,7413,7414,7416,7418,7420,7422,7424,7426,7428,7430,7432,7434,7436,7438,7440,7442,7444,7446],{"class":733,"line":1829},[731,7415,4753],{"class":921},[731,7417,4756],{"class":784},[731,7419,948],{"class":741},[731,7421,3306],{"class":784},[731,7423,1184],{"class":741},[731,7425,4765],{"class":836},[731,7427,4768],{"class":848},[731,7429,1184],{"class":741},[731,7431,4773],{"class":836},[731,7433,839],{"class":848},[731,7435,4778],{"class":741},[731,7437,4781],{"class":797},[731,7439,4784],{"class":741},[731,7441,4787],{"class":2935},[731,7443,930],{"class":741},[731,7445,4792],{"class":741},[731,7447,884],{"class":848},[731,7449,7450,7452,7454,7456,7458,7460,7462,7464,7466,7468,7470,7472,7474,7476,7478,7480,7482,7484,7486,7488,7490,7492,7494,7496,7498,7500],{"class":733,"line":1835},[731,7451,4799],{"class":784},[731,7453,3347],{"class":848},[731,7455,3327],{"class":784},[731,7457,4806],{"class":848},[731,7459,1193],{"class":741},[731,7461,4811],{"class":784},[731,7463,1184],{"class":741},[731,7465,4816],{"class":836},[731,7467,839],{"class":848},[731,7469,4821],{"class":1753},[731,7471,1759],{"class":921},[731,7473,4756],{"class":784},[731,7475,1184],{"class":741},[731,7477,4830],{"class":836},[731,7479,839],{"class":848},[731,7481,4821],{"class":784},[731,7483,4631],{"class":848},[731,7485,4839],{"class":741},[731,7487,794],{"class":741},[731,7489,4844],{"class":797},[731,7491,969],{"class":741},[731,7493,4849],{"class":741},[731,7495,4595],{"class":836},[731,7497,839],{"class":848},[731,7499,4856],{"class":784},[731,7501,884],{"class":848},[731,7503,7504],{"class":733,"line":1850},[731,7505,3363],{"class":741},[731,7507,7508,7510],{"class":733,"line":1860},[731,7509,2329],{"class":777},[731,7511,3371],{"class":784},[731,7513,7514],{"class":733,"line":1877},[731,7515,766],{"class":741},[731,7517,7518,7520,7522,7524,7526,7528,7530],{"class":733,"line":1902},[731,7519,1257],{"class":784},[731,7521,1184],{"class":741},[731,7523,1262],{"class":836},[731,7525,839],{"class":784},[731,7527,738],{"class":836},[731,7529,839],{"class":784},[731,7531,842],{"class":741},[731,7533,7534,7536,7538,7540,7542,7544,7546],{"class":733,"line":1908},[731,7535,5814],{"class":836},[731,7537,742],{"class":741},[731,7539,1750],{"class":741},[731,7541,4929],{"class":1753},[731,7543,1216],{"class":741},[731,7545,1759],{"class":921},[731,7547,745],{"class":741},[731,7549,7550],{"class":733,"line":1914},[731,7551,5831],{"class":1814},[731,7553,7554,7556,7558,7560,7562,7564,7566,7568,7570,7572,7574,7576,7578,7580,7582],{"class":733,"line":1922},[731,7555,5836],{"class":784},[731,7557,1184],{"class":741},[731,7559,1754],{"class":784},[731,7561,948],{"class":741},[731,7563,4595],{"class":836},[731,7565,839],{"class":848},[731,7567,4929],{"class":784},[731,7569,1184],{"class":741},[731,7571,1754],{"class":784},[731,7573,2878],{"class":848},[731,7575,4966],{"class":777},[731,7577,4663],{"class":741},[731,7579,4971],{"class":784},[731,7581,1184],{"class":741},[731,7583,4976],{"class":784},[731,7585,7586],{"class":733,"line":2125},[731,7587,1911],{"class":741},[731,7589,7590,7592],{"class":733,"line":2354},[731,7591,881],{"class":741},[731,7593,1281],{"class":784},[721,7595,7597],{"className":723,"code":7596,"filename":270,"language":725,"meta":1227,"style":727},"import { evlog } from 'evlog\u002Fexpress'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\napp.use(evlog({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n}))\n",[620,7598,7599,7617,7621,7679,7683,7703,7735,7765,7769,7793,7827,7863,7917,7921,7927,7931,7947,7963,7967,7999,8003],{"__ignoreMap":727},[731,7600,7601,7603,7605,7607,7609,7611,7613,7615],{"class":733,"line":734},[731,7602,778],{"class":777},[731,7604,781],{"class":741},[731,7606,1152],{"class":784},[731,7608,788],{"class":741},[731,7610,791],{"class":777},[731,7612,794],{"class":741},[731,7614,1303],{"class":797},[731,7616,801],{"class":741},[731,7618,7619],{"class":733,"line":748},[731,7620,824],{"emptyLinePlaceholder":823},[731,7622,7623,7625,7627,7629,7631,7633,7635,7637,7639,7641,7643,7645,7647,7649,7651,7653,7655,7657,7659,7661,7663,7665,7667,7669,7671,7673,7675,7677],{"class":733,"line":763},[731,7624,1535],{"class":921},[731,7626,4529],{"class":784},[731,7628,1193],{"class":741},[731,7630,854],{"class":784},[731,7632,969],{"class":741},[731,7634,3215],{"class":797},[731,7636,969],{"class":741},[731,7638,930],{"class":741},[731,7640,794],{"class":741},[731,7642,3224],{"class":797},[731,7644,969],{"class":741},[731,7646,930],{"class":741},[731,7648,794],{"class":741},[731,7650,3233],{"class":797},[731,7652,969],{"class":741},[731,7654,930],{"class":741},[731,7656,794],{"class":741},[731,7658,4562],{"class":797},[731,7660,969],{"class":741},[731,7662,930],{"class":741},[731,7664,794],{"class":741},[731,7666,3251],{"class":797},[731,7668,969],{"class":741},[731,7670,930],{"class":741},[731,7672,794],{"class":741},[731,7674,4579],{"class":797},[731,7676,969],{"class":741},[731,7678,1223],{"class":784},[731,7680,7681],{"class":733,"line":827},[731,7682,824],{"emptyLinePlaceholder":823},[731,7684,7685,7687,7689,7691,7693,7695,7697,7699,7701],{"class":733,"line":845},[731,7686,4592],{"class":921},[731,7688,4595],{"class":836},[731,7690,839],{"class":741},[731,7692,4600],{"class":1753},[731,7694,742],{"class":741},[731,7696,3178],{"class":737},[731,7698,2821],{"class":741},[731,7700,3178],{"class":737},[731,7702,745],{"class":741},[731,7704,7705,7707,7709,7711,7713,7715,7717,7719,7721,7723,7725,7727,7729,7731,7733],{"class":733,"line":878},[731,7706,2867],{"class":777},[731,7708,1750],{"class":848},[731,7710,4619],{"class":784},[731,7712,1184],{"class":741},[731,7714,4624],{"class":836},[731,7716,839],{"class":848},[731,7718,4600],{"class":784},[731,7720,4631],{"class":848},[731,7722,2881],{"class":777},[731,7724,4636],{"class":784},[731,7726,1184],{"class":741},[731,7728,99],{"class":836},[731,7730,839],{"class":848},[731,7732,4645],{"class":784},[731,7734,884],{"class":848},[731,7736,7737,7739,7741,7743,7745,7747,7749,7751,7753,7755,7757,7759,7761,7763],{"class":733,"line":1806},[731,7738,2867],{"class":777},[731,7740,1750],{"class":848},[731,7742,2872],{"class":741},[731,7744,4600],{"class":784},[731,7746,4660],{"class":741},[731,7748,4663],{"class":741},[731,7750,4636],{"class":784},[731,7752,4668],{"class":741},[731,7754,794],{"class":741},[731,7756,4673],{"class":797},[731,7758,969],{"class":741},[731,7760,2878],{"class":848},[731,7762,2881],{"class":777},[731,7764,4682],{"class":784},[731,7766,7767],{"class":733,"line":1811},[731,7768,824],{"emptyLinePlaceholder":823},[731,7770,7771,7773,7775,7777,7779,7781,7783,7785,7787,7789,7791],{"class":733,"line":1818},[731,7772,1766],{"class":921},[731,7774,3280],{"class":784},[731,7776,742],{"class":741},[731,7778,3168],{"class":737},[731,7780,3159],{"class":741},[731,7782,3173],{"class":737},[731,7784,930],{"class":741},[731,7786,3178],{"class":737},[731,7788,3270],{"class":741},[731,7790,948],{"class":741},[731,7792,4711],{"class":741},[731,7794,7795,7797,7799,7801,7803,7805,7807,7809,7811,7813,7815,7817,7819,7821,7823,7825],{"class":733,"line":1824},[731,7796,3299],{"class":777},[731,7798,1750],{"class":848},[731,7800,1535],{"class":921},[731,7802,854],{"class":741},[731,7804,3327],{"class":784},[731,7806,930],{"class":741},[731,7808,4728],{"class":784},[731,7810,2842],{"class":741},[731,7812,3309],{"class":741},[731,7814,4735],{"class":784},[731,7816,1184],{"class":741},[731,7818,4740],{"class":836},[731,7820,839],{"class":848},[731,7822,4600],{"class":784},[731,7824,4631],{"class":848},[731,7826,842],{"class":741},[731,7828,7829,7831,7833,7835,7837,7839,7841,7843,7845,7847,7849,7851,7853,7855,7857,7859,7861],{"class":733,"line":1829},[731,7830,4753],{"class":921},[731,7832,4756],{"class":784},[731,7834,948],{"class":741},[731,7836,3306],{"class":784},[731,7838,1184],{"class":741},[731,7840,4765],{"class":836},[731,7842,4768],{"class":848},[731,7844,1184],{"class":741},[731,7846,4773],{"class":836},[731,7848,839],{"class":848},[731,7850,4778],{"class":741},[731,7852,4781],{"class":797},[731,7854,4784],{"class":741},[731,7856,4787],{"class":2935},[731,7858,930],{"class":741},[731,7860,4792],{"class":741},[731,7862,884],{"class":848},[731,7864,7865,7867,7869,7871,7873,7875,7877,7879,7881,7883,7885,7887,7889,7891,7893,7895,7897,7899,7901,7903,7905,7907,7909,7911,7913,7915],{"class":733,"line":1835},[731,7866,4799],{"class":784},[731,7868,3347],{"class":848},[731,7870,3327],{"class":784},[731,7872,4806],{"class":848},[731,7874,1193],{"class":741},[731,7876,4811],{"class":784},[731,7878,1184],{"class":741},[731,7880,4816],{"class":836},[731,7882,839],{"class":848},[731,7884,4821],{"class":1753},[731,7886,1759],{"class":921},[731,7888,4756],{"class":784},[731,7890,1184],{"class":741},[731,7892,4830],{"class":836},[731,7894,839],{"class":848},[731,7896,4821],{"class":784},[731,7898,4631],{"class":848},[731,7900,4839],{"class":741},[731,7902,794],{"class":741},[731,7904,4844],{"class":797},[731,7906,969],{"class":741},[731,7908,4849],{"class":741},[731,7910,4595],{"class":836},[731,7912,839],{"class":848},[731,7914,4856],{"class":784},[731,7916,884],{"class":848},[731,7918,7919],{"class":733,"line":1850},[731,7920,3363],{"class":741},[731,7922,7923,7925],{"class":733,"line":1860},[731,7924,2329],{"class":777},[731,7926,3371],{"class":784},[731,7928,7929],{"class":733,"line":1877},[731,7930,766],{"class":741},[731,7932,7933,7935,7937,7939,7941,7943,7945],{"class":733,"line":1902},[731,7934,1257],{"class":784},[731,7936,1184],{"class":741},[731,7938,1262],{"class":836},[731,7940,839],{"class":784},[731,7942,738],{"class":836},[731,7944,839],{"class":784},[731,7946,842],{"class":741},[731,7948,7949,7951,7953,7955,7957,7959,7961],{"class":733,"line":1908},[731,7950,5814],{"class":836},[731,7952,742],{"class":741},[731,7954,1750],{"class":741},[731,7956,4929],{"class":1753},[731,7958,1216],{"class":741},[731,7960,1759],{"class":921},[731,7962,745],{"class":741},[731,7964,7965],{"class":733,"line":1914},[731,7966,5831],{"class":1814},[731,7968,7969,7971,7973,7975,7977,7979,7981,7983,7985,7987,7989,7991,7993,7995,7997],{"class":733,"line":1922},[731,7970,5836],{"class":784},[731,7972,1184],{"class":741},[731,7974,1754],{"class":784},[731,7976,948],{"class":741},[731,7978,4595],{"class":836},[731,7980,839],{"class":848},[731,7982,4929],{"class":784},[731,7984,1184],{"class":741},[731,7986,1754],{"class":784},[731,7988,2878],{"class":848},[731,7990,4966],{"class":777},[731,7992,4663],{"class":741},[731,7994,4971],{"class":784},[731,7996,1184],{"class":741},[731,7998,4976],{"class":784},[731,8000,8001],{"class":733,"line":2125},[731,8002,1911],{"class":741},[731,8004,8005,8007],{"class":733,"line":2354},[731,8006,881],{"class":741},[731,8008,1281],{"class":784},[721,8010,8012],{"className":723,"code":8011,"filename":280,"language":725,"meta":1227,"style":727},"import { evlog } from 'evlog\u002Ffastify'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nawait app.register(evlog, {\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[620,8013,8014,8032,8036,8094,8098,8118,8150,8180,8184,8208,8242,8278,8332,8336,8342,8346,8362,8378,8382,8414,8418],{"__ignoreMap":727},[731,8015,8016,8018,8020,8022,8024,8026,8028,8030],{"class":733,"line":734},[731,8017,778],{"class":777},[731,8019,781],{"class":741},[731,8021,1152],{"class":784},[731,8023,788],{"class":741},[731,8025,791],{"class":777},[731,8027,794],{"class":741},[731,8029,1357],{"class":797},[731,8031,801],{"class":741},[731,8033,8034],{"class":733,"line":748},[731,8035,824],{"emptyLinePlaceholder":823},[731,8037,8038,8040,8042,8044,8046,8048,8050,8052,8054,8056,8058,8060,8062,8064,8066,8068,8070,8072,8074,8076,8078,8080,8082,8084,8086,8088,8090,8092],{"class":733,"line":763},[731,8039,1535],{"class":921},[731,8041,4529],{"class":784},[731,8043,1193],{"class":741},[731,8045,854],{"class":784},[731,8047,969],{"class":741},[731,8049,3215],{"class":797},[731,8051,969],{"class":741},[731,8053,930],{"class":741},[731,8055,794],{"class":741},[731,8057,3224],{"class":797},[731,8059,969],{"class":741},[731,8061,930],{"class":741},[731,8063,794],{"class":741},[731,8065,3233],{"class":797},[731,8067,969],{"class":741},[731,8069,930],{"class":741},[731,8071,794],{"class":741},[731,8073,4562],{"class":797},[731,8075,969],{"class":741},[731,8077,930],{"class":741},[731,8079,794],{"class":741},[731,8081,3251],{"class":797},[731,8083,969],{"class":741},[731,8085,930],{"class":741},[731,8087,794],{"class":741},[731,8089,4579],{"class":797},[731,8091,969],{"class":741},[731,8093,1223],{"class":784},[731,8095,8096],{"class":733,"line":827},[731,8097,824],{"emptyLinePlaceholder":823},[731,8099,8100,8102,8104,8106,8108,8110,8112,8114,8116],{"class":733,"line":845},[731,8101,4592],{"class":921},[731,8103,4595],{"class":836},[731,8105,839],{"class":741},[731,8107,4600],{"class":1753},[731,8109,742],{"class":741},[731,8111,3178],{"class":737},[731,8113,2821],{"class":741},[731,8115,3178],{"class":737},[731,8117,745],{"class":741},[731,8119,8120,8122,8124,8126,8128,8130,8132,8134,8136,8138,8140,8142,8144,8146,8148],{"class":733,"line":878},[731,8121,2867],{"class":777},[731,8123,1750],{"class":848},[731,8125,4619],{"class":784},[731,8127,1184],{"class":741},[731,8129,4624],{"class":836},[731,8131,839],{"class":848},[731,8133,4600],{"class":784},[731,8135,4631],{"class":848},[731,8137,2881],{"class":777},[731,8139,4636],{"class":784},[731,8141,1184],{"class":741},[731,8143,99],{"class":836},[731,8145,839],{"class":848},[731,8147,4645],{"class":784},[731,8149,884],{"class":848},[731,8151,8152,8154,8156,8158,8160,8162,8164,8166,8168,8170,8172,8174,8176,8178],{"class":733,"line":1806},[731,8153,2867],{"class":777},[731,8155,1750],{"class":848},[731,8157,2872],{"class":741},[731,8159,4600],{"class":784},[731,8161,4660],{"class":741},[731,8163,4663],{"class":741},[731,8165,4636],{"class":784},[731,8167,4668],{"class":741},[731,8169,794],{"class":741},[731,8171,4673],{"class":797},[731,8173,969],{"class":741},[731,8175,2878],{"class":848},[731,8177,2881],{"class":777},[731,8179,4682],{"class":784},[731,8181,8182],{"class":733,"line":1811},[731,8183,824],{"emptyLinePlaceholder":823},[731,8185,8186,8188,8190,8192,8194,8196,8198,8200,8202,8204,8206],{"class":733,"line":1818},[731,8187,1766],{"class":921},[731,8189,3280],{"class":784},[731,8191,742],{"class":741},[731,8193,3168],{"class":737},[731,8195,3159],{"class":741},[731,8197,3173],{"class":737},[731,8199,930],{"class":741},[731,8201,3178],{"class":737},[731,8203,3270],{"class":741},[731,8205,948],{"class":741},[731,8207,4711],{"class":741},[731,8209,8210,8212,8214,8216,8218,8220,8222,8224,8226,8228,8230,8232,8234,8236,8238,8240],{"class":733,"line":1824},[731,8211,3299],{"class":777},[731,8213,1750],{"class":848},[731,8215,1535],{"class":921},[731,8217,854],{"class":741},[731,8219,3327],{"class":784},[731,8221,930],{"class":741},[731,8223,4728],{"class":784},[731,8225,2842],{"class":741},[731,8227,3309],{"class":741},[731,8229,4735],{"class":784},[731,8231,1184],{"class":741},[731,8233,4740],{"class":836},[731,8235,839],{"class":848},[731,8237,4600],{"class":784},[731,8239,4631],{"class":848},[731,8241,842],{"class":741},[731,8243,8244,8246,8248,8250,8252,8254,8256,8258,8260,8262,8264,8266,8268,8270,8272,8274,8276],{"class":733,"line":1829},[731,8245,4753],{"class":921},[731,8247,4756],{"class":784},[731,8249,948],{"class":741},[731,8251,3306],{"class":784},[731,8253,1184],{"class":741},[731,8255,4765],{"class":836},[731,8257,4768],{"class":848},[731,8259,1184],{"class":741},[731,8261,4773],{"class":836},[731,8263,839],{"class":848},[731,8265,4778],{"class":741},[731,8267,4781],{"class":797},[731,8269,4784],{"class":741},[731,8271,4787],{"class":2935},[731,8273,930],{"class":741},[731,8275,4792],{"class":741},[731,8277,884],{"class":848},[731,8279,8280,8282,8284,8286,8288,8290,8292,8294,8296,8298,8300,8302,8304,8306,8308,8310,8312,8314,8316,8318,8320,8322,8324,8326,8328,8330],{"class":733,"line":1835},[731,8281,4799],{"class":784},[731,8283,3347],{"class":848},[731,8285,3327],{"class":784},[731,8287,4806],{"class":848},[731,8289,1193],{"class":741},[731,8291,4811],{"class":784},[731,8293,1184],{"class":741},[731,8295,4816],{"class":836},[731,8297,839],{"class":848},[731,8299,4821],{"class":1753},[731,8301,1759],{"class":921},[731,8303,4756],{"class":784},[731,8305,1184],{"class":741},[731,8307,4830],{"class":836},[731,8309,839],{"class":848},[731,8311,4821],{"class":784},[731,8313,4631],{"class":848},[731,8315,4839],{"class":741},[731,8317,794],{"class":741},[731,8319,4844],{"class":797},[731,8321,969],{"class":741},[731,8323,4849],{"class":741},[731,8325,4595],{"class":836},[731,8327,839],{"class":848},[731,8329,4856],{"class":784},[731,8331,884],{"class":848},[731,8333,8334],{"class":733,"line":1850},[731,8335,3363],{"class":741},[731,8337,8338,8340],{"class":733,"line":1860},[731,8339,2329],{"class":777},[731,8341,3371],{"class":784},[731,8343,8344],{"class":733,"line":1877},[731,8345,766],{"class":741},[731,8347,8348,8350,8352,8354,8356,8358,8360],{"class":733,"line":1902},[731,8349,1368],{"class":777},[731,8351,1371],{"class":784},[731,8353,1184],{"class":741},[731,8355,1376],{"class":836},[731,8357,1379],{"class":784},[731,8359,930],{"class":741},[731,8361,745],{"class":741},[731,8363,8364,8366,8368,8370,8372,8374,8376],{"class":733,"line":1908},[731,8365,5814],{"class":836},[731,8367,742],{"class":741},[731,8369,1750],{"class":741},[731,8371,4929],{"class":1753},[731,8373,1216],{"class":741},[731,8375,1759],{"class":921},[731,8377,745],{"class":741},[731,8379,8380],{"class":733,"line":1914},[731,8381,5831],{"class":1814},[731,8383,8384,8386,8388,8390,8392,8394,8396,8398,8400,8402,8404,8406,8408,8410,8412],{"class":733,"line":1922},[731,8385,5836],{"class":784},[731,8387,1184],{"class":741},[731,8389,1754],{"class":784},[731,8391,948],{"class":741},[731,8393,4595],{"class":836},[731,8395,839],{"class":848},[731,8397,4929],{"class":784},[731,8399,1184],{"class":741},[731,8401,1754],{"class":784},[731,8403,2878],{"class":848},[731,8405,4966],{"class":777},[731,8407,4663],{"class":741},[731,8409,4971],{"class":784},[731,8411,1184],{"class":741},[731,8413,4976],{"class":784},[731,8415,8416],{"class":733,"line":2125},[731,8417,1911],{"class":741},[731,8419,8420,8422],{"class":733,"line":2354},[731,8421,881],{"class":741},[731,8423,884],{"class":784},[721,8425,8427],{"className":723,"code":8426,"filename":285,"language":725,"meta":1227,"style":727},"import { evlog } from 'evlog\u002Felysia'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\napp.use(evlog({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n}))\n",[620,8428,8429,8447,8451,8509,8513,8533,8565,8595,8599,8623,8657,8693,8747,8751,8757,8761,8777,8793,8797,8829,8833],{"__ignoreMap":727},[731,8430,8431,8433,8435,8437,8439,8441,8443,8445],{"class":733,"line":734},[731,8432,778],{"class":777},[731,8434,781],{"class":741},[731,8436,1152],{"class":784},[731,8438,788],{"class":741},[731,8440,791],{"class":777},[731,8442,794],{"class":741},[731,8444,1415],{"class":797},[731,8446,801],{"class":741},[731,8448,8449],{"class":733,"line":748},[731,8450,824],{"emptyLinePlaceholder":823},[731,8452,8453,8455,8457,8459,8461,8463,8465,8467,8469,8471,8473,8475,8477,8479,8481,8483,8485,8487,8489,8491,8493,8495,8497,8499,8501,8503,8505,8507],{"class":733,"line":763},[731,8454,1535],{"class":921},[731,8456,4529],{"class":784},[731,8458,1193],{"class":741},[731,8460,854],{"class":784},[731,8462,969],{"class":741},[731,8464,3215],{"class":797},[731,8466,969],{"class":741},[731,8468,930],{"class":741},[731,8470,794],{"class":741},[731,8472,3224],{"class":797},[731,8474,969],{"class":741},[731,8476,930],{"class":741},[731,8478,794],{"class":741},[731,8480,3233],{"class":797},[731,8482,969],{"class":741},[731,8484,930],{"class":741},[731,8486,794],{"class":741},[731,8488,4562],{"class":797},[731,8490,969],{"class":741},[731,8492,930],{"class":741},[731,8494,794],{"class":741},[731,8496,3251],{"class":797},[731,8498,969],{"class":741},[731,8500,930],{"class":741},[731,8502,794],{"class":741},[731,8504,4579],{"class":797},[731,8506,969],{"class":741},[731,8508,1223],{"class":784},[731,8510,8511],{"class":733,"line":827},[731,8512,824],{"emptyLinePlaceholder":823},[731,8514,8515,8517,8519,8521,8523,8525,8527,8529,8531],{"class":733,"line":845},[731,8516,4592],{"class":921},[731,8518,4595],{"class":836},[731,8520,839],{"class":741},[731,8522,4600],{"class":1753},[731,8524,742],{"class":741},[731,8526,3178],{"class":737},[731,8528,2821],{"class":741},[731,8530,3178],{"class":737},[731,8532,745],{"class":741},[731,8534,8535,8537,8539,8541,8543,8545,8547,8549,8551,8553,8555,8557,8559,8561,8563],{"class":733,"line":878},[731,8536,2867],{"class":777},[731,8538,1750],{"class":848},[731,8540,4619],{"class":784},[731,8542,1184],{"class":741},[731,8544,4624],{"class":836},[731,8546,839],{"class":848},[731,8548,4600],{"class":784},[731,8550,4631],{"class":848},[731,8552,2881],{"class":777},[731,8554,4636],{"class":784},[731,8556,1184],{"class":741},[731,8558,99],{"class":836},[731,8560,839],{"class":848},[731,8562,4645],{"class":784},[731,8564,884],{"class":848},[731,8566,8567,8569,8571,8573,8575,8577,8579,8581,8583,8585,8587,8589,8591,8593],{"class":733,"line":1806},[731,8568,2867],{"class":777},[731,8570,1750],{"class":848},[731,8572,2872],{"class":741},[731,8574,4600],{"class":784},[731,8576,4660],{"class":741},[731,8578,4663],{"class":741},[731,8580,4636],{"class":784},[731,8582,4668],{"class":741},[731,8584,794],{"class":741},[731,8586,4673],{"class":797},[731,8588,969],{"class":741},[731,8590,2878],{"class":848},[731,8592,2881],{"class":777},[731,8594,4682],{"class":784},[731,8596,8597],{"class":733,"line":1811},[731,8598,824],{"emptyLinePlaceholder":823},[731,8600,8601,8603,8605,8607,8609,8611,8613,8615,8617,8619,8621],{"class":733,"line":1818},[731,8602,1766],{"class":921},[731,8604,3280],{"class":784},[731,8606,742],{"class":741},[731,8608,3168],{"class":737},[731,8610,3159],{"class":741},[731,8612,3173],{"class":737},[731,8614,930],{"class":741},[731,8616,3178],{"class":737},[731,8618,3270],{"class":741},[731,8620,948],{"class":741},[731,8622,4711],{"class":741},[731,8624,8625,8627,8629,8631,8633,8635,8637,8639,8641,8643,8645,8647,8649,8651,8653,8655],{"class":733,"line":1824},[731,8626,3299],{"class":777},[731,8628,1750],{"class":848},[731,8630,1535],{"class":921},[731,8632,854],{"class":741},[731,8634,3327],{"class":784},[731,8636,930],{"class":741},[731,8638,4728],{"class":784},[731,8640,2842],{"class":741},[731,8642,3309],{"class":741},[731,8644,4735],{"class":784},[731,8646,1184],{"class":741},[731,8648,4740],{"class":836},[731,8650,839],{"class":848},[731,8652,4600],{"class":784},[731,8654,4631],{"class":848},[731,8656,842],{"class":741},[731,8658,8659,8661,8663,8665,8667,8669,8671,8673,8675,8677,8679,8681,8683,8685,8687,8689,8691],{"class":733,"line":1829},[731,8660,4753],{"class":921},[731,8662,4756],{"class":784},[731,8664,948],{"class":741},[731,8666,3306],{"class":784},[731,8668,1184],{"class":741},[731,8670,4765],{"class":836},[731,8672,4768],{"class":848},[731,8674,1184],{"class":741},[731,8676,4773],{"class":836},[731,8678,839],{"class":848},[731,8680,4778],{"class":741},[731,8682,4781],{"class":797},[731,8684,4784],{"class":741},[731,8686,4787],{"class":2935},[731,8688,930],{"class":741},[731,8690,4792],{"class":741},[731,8692,884],{"class":848},[731,8694,8695,8697,8699,8701,8703,8705,8707,8709,8711,8713,8715,8717,8719,8721,8723,8725,8727,8729,8731,8733,8735,8737,8739,8741,8743,8745],{"class":733,"line":1835},[731,8696,4799],{"class":784},[731,8698,3347],{"class":848},[731,8700,3327],{"class":784},[731,8702,4806],{"class":848},[731,8704,1193],{"class":741},[731,8706,4811],{"class":784},[731,8708,1184],{"class":741},[731,8710,4816],{"class":836},[731,8712,839],{"class":848},[731,8714,4821],{"class":1753},[731,8716,1759],{"class":921},[731,8718,4756],{"class":784},[731,8720,1184],{"class":741},[731,8722,4830],{"class":836},[731,8724,839],{"class":848},[731,8726,4821],{"class":784},[731,8728,4631],{"class":848},[731,8730,4839],{"class":741},[731,8732,794],{"class":741},[731,8734,4844],{"class":797},[731,8736,969],{"class":741},[731,8738,4849],{"class":741},[731,8740,4595],{"class":836},[731,8742,839],{"class":848},[731,8744,4856],{"class":784},[731,8746,884],{"class":848},[731,8748,8749],{"class":733,"line":1850},[731,8750,3363],{"class":741},[731,8752,8753,8755],{"class":733,"line":1860},[731,8754,2329],{"class":777},[731,8756,3371],{"class":784},[731,8758,8759],{"class":733,"line":1877},[731,8760,766],{"class":741},[731,8762,8763,8765,8767,8769,8771,8773,8775],{"class":733,"line":1902},[731,8764,1257],{"class":784},[731,8766,1184],{"class":741},[731,8768,1262],{"class":836},[731,8770,839],{"class":784},[731,8772,738],{"class":836},[731,8774,839],{"class":784},[731,8776,842],{"class":741},[731,8778,8779,8781,8783,8785,8787,8789,8791],{"class":733,"line":1908},[731,8780,5814],{"class":836},[731,8782,742],{"class":741},[731,8784,1750],{"class":741},[731,8786,4929],{"class":1753},[731,8788,1216],{"class":741},[731,8790,1759],{"class":921},[731,8792,745],{"class":741},[731,8794,8795],{"class":733,"line":1914},[731,8796,5831],{"class":1814},[731,8798,8799,8801,8803,8805,8807,8809,8811,8813,8815,8817,8819,8821,8823,8825,8827],{"class":733,"line":1922},[731,8800,5836],{"class":784},[731,8802,1184],{"class":741},[731,8804,1754],{"class":784},[731,8806,948],{"class":741},[731,8808,4595],{"class":836},[731,8810,839],{"class":848},[731,8812,4929],{"class":784},[731,8814,1184],{"class":741},[731,8816,1754],{"class":784},[731,8818,2878],{"class":848},[731,8820,4966],{"class":777},[731,8822,4663],{"class":741},[731,8824,4971],{"class":784},[731,8826,1184],{"class":741},[731,8828,4976],{"class":784},[731,8830,8831],{"class":733,"line":2125},[731,8832,1911],{"class":741},[731,8834,8835,8837],{"class":733,"line":2354},[731,8836,881],{"class":741},[731,8838,1281],{"class":784},[721,8840,8842],{"className":723,"code":8841,"filename":265,"language":725,"meta":1451,"style":727},"import { EvlogModule } from 'evlog\u002Fnestjs'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nEvlogModule.forRoot({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[620,8843,8844,8862,8866,8924,8928,8948,8980,9010,9014,9038,9072,9108,9162,9166,9172,9176,9188,9204,9208,9240,9244],{"__ignoreMap":727},[731,8845,8846,8848,8850,8852,8854,8856,8858,8860],{"class":733,"line":734},[731,8847,778],{"class":777},[731,8849,781],{"class":741},[731,8851,1462],{"class":784},[731,8853,788],{"class":741},[731,8855,791],{"class":777},[731,8857,794],{"class":741},[731,8859,1471],{"class":797},[731,8861,801],{"class":741},[731,8863,8864],{"class":733,"line":748},[731,8865,824],{"emptyLinePlaceholder":823},[731,8867,8868,8870,8872,8874,8876,8878,8880,8882,8884,8886,8888,8890,8892,8894,8896,8898,8900,8902,8904,8906,8908,8910,8912,8914,8916,8918,8920,8922],{"class":733,"line":763},[731,8869,1535],{"class":921},[731,8871,4529],{"class":784},[731,8873,1193],{"class":741},[731,8875,854],{"class":784},[731,8877,969],{"class":741},[731,8879,3215],{"class":797},[731,8881,969],{"class":741},[731,8883,930],{"class":741},[731,8885,794],{"class":741},[731,8887,3224],{"class":797},[731,8889,969],{"class":741},[731,8891,930],{"class":741},[731,8893,794],{"class":741},[731,8895,3233],{"class":797},[731,8897,969],{"class":741},[731,8899,930],{"class":741},[731,8901,794],{"class":741},[731,8903,4562],{"class":797},[731,8905,969],{"class":741},[731,8907,930],{"class":741},[731,8909,794],{"class":741},[731,8911,3251],{"class":797},[731,8913,969],{"class":741},[731,8915,930],{"class":741},[731,8917,794],{"class":741},[731,8919,4579],{"class":797},[731,8921,969],{"class":741},[731,8923,1223],{"class":784},[731,8925,8926],{"class":733,"line":827},[731,8927,824],{"emptyLinePlaceholder":823},[731,8929,8930,8932,8934,8936,8938,8940,8942,8944,8946],{"class":733,"line":845},[731,8931,4592],{"class":921},[731,8933,4595],{"class":836},[731,8935,839],{"class":741},[731,8937,4600],{"class":1753},[731,8939,742],{"class":741},[731,8941,3178],{"class":737},[731,8943,2821],{"class":741},[731,8945,3178],{"class":737},[731,8947,745],{"class":741},[731,8949,8950,8952,8954,8956,8958,8960,8962,8964,8966,8968,8970,8972,8974,8976,8978],{"class":733,"line":878},[731,8951,2867],{"class":777},[731,8953,1750],{"class":848},[731,8955,4619],{"class":784},[731,8957,1184],{"class":741},[731,8959,4624],{"class":836},[731,8961,839],{"class":848},[731,8963,4600],{"class":784},[731,8965,4631],{"class":848},[731,8967,2881],{"class":777},[731,8969,4636],{"class":784},[731,8971,1184],{"class":741},[731,8973,99],{"class":836},[731,8975,839],{"class":848},[731,8977,4645],{"class":784},[731,8979,884],{"class":848},[731,8981,8982,8984,8986,8988,8990,8992,8994,8996,8998,9000,9002,9004,9006,9008],{"class":733,"line":1806},[731,8983,2867],{"class":777},[731,8985,1750],{"class":848},[731,8987,2872],{"class":741},[731,8989,4600],{"class":784},[731,8991,4660],{"class":741},[731,8993,4663],{"class":741},[731,8995,4636],{"class":784},[731,8997,4668],{"class":741},[731,8999,794],{"class":741},[731,9001,4673],{"class":797},[731,9003,969],{"class":741},[731,9005,2878],{"class":848},[731,9007,2881],{"class":777},[731,9009,4682],{"class":784},[731,9011,9012],{"class":733,"line":1811},[731,9013,824],{"emptyLinePlaceholder":823},[731,9015,9016,9018,9020,9022,9024,9026,9028,9030,9032,9034,9036],{"class":733,"line":1818},[731,9017,1766],{"class":921},[731,9019,3280],{"class":784},[731,9021,742],{"class":741},[731,9023,3168],{"class":737},[731,9025,3159],{"class":741},[731,9027,3173],{"class":737},[731,9029,930],{"class":741},[731,9031,3178],{"class":737},[731,9033,3270],{"class":741},[731,9035,948],{"class":741},[731,9037,4711],{"class":741},[731,9039,9040,9042,9044,9046,9048,9050,9052,9054,9056,9058,9060,9062,9064,9066,9068,9070],{"class":733,"line":1824},[731,9041,3299],{"class":777},[731,9043,1750],{"class":848},[731,9045,1535],{"class":921},[731,9047,854],{"class":741},[731,9049,3327],{"class":784},[731,9051,930],{"class":741},[731,9053,4728],{"class":784},[731,9055,2842],{"class":741},[731,9057,3309],{"class":741},[731,9059,4735],{"class":784},[731,9061,1184],{"class":741},[731,9063,4740],{"class":836},[731,9065,839],{"class":848},[731,9067,4600],{"class":784},[731,9069,4631],{"class":848},[731,9071,842],{"class":741},[731,9073,9074,9076,9078,9080,9082,9084,9086,9088,9090,9092,9094,9096,9098,9100,9102,9104,9106],{"class":733,"line":1829},[731,9075,4753],{"class":921},[731,9077,4756],{"class":784},[731,9079,948],{"class":741},[731,9081,3306],{"class":784},[731,9083,1184],{"class":741},[731,9085,4765],{"class":836},[731,9087,4768],{"class":848},[731,9089,1184],{"class":741},[731,9091,4773],{"class":836},[731,9093,839],{"class":848},[731,9095,4778],{"class":741},[731,9097,4781],{"class":797},[731,9099,4784],{"class":741},[731,9101,4787],{"class":2935},[731,9103,930],{"class":741},[731,9105,4792],{"class":741},[731,9107,884],{"class":848},[731,9109,9110,9112,9114,9116,9118,9120,9122,9124,9126,9128,9130,9132,9134,9136,9138,9140,9142,9144,9146,9148,9150,9152,9154,9156,9158,9160],{"class":733,"line":1835},[731,9111,4799],{"class":784},[731,9113,3347],{"class":848},[731,9115,3327],{"class":784},[731,9117,4806],{"class":848},[731,9119,1193],{"class":741},[731,9121,4811],{"class":784},[731,9123,1184],{"class":741},[731,9125,4816],{"class":836},[731,9127,839],{"class":848},[731,9129,4821],{"class":1753},[731,9131,1759],{"class":921},[731,9133,4756],{"class":784},[731,9135,1184],{"class":741},[731,9137,4830],{"class":836},[731,9139,839],{"class":848},[731,9141,4821],{"class":784},[731,9143,4631],{"class":848},[731,9145,4839],{"class":741},[731,9147,794],{"class":741},[731,9149,4844],{"class":797},[731,9151,969],{"class":741},[731,9153,4849],{"class":741},[731,9155,4595],{"class":836},[731,9157,839],{"class":848},[731,9159,4856],{"class":784},[731,9161,884],{"class":848},[731,9163,9164],{"class":733,"line":1850},[731,9165,3363],{"class":741},[731,9167,9168,9170],{"class":733,"line":1860},[731,9169,2329],{"class":777},[731,9171,3371],{"class":784},[731,9173,9174],{"class":733,"line":1877},[731,9175,766],{"class":741},[731,9177,9178,9180,9182,9184,9186],{"class":733,"line":1902},[731,9179,1482],{"class":784},[731,9181,1184],{"class":741},[731,9183,1487],{"class":836},[731,9185,839],{"class":784},[731,9187,842],{"class":741},[731,9189,9190,9192,9194,9196,9198,9200,9202],{"class":733,"line":1908},[731,9191,5814],{"class":836},[731,9193,742],{"class":741},[731,9195,1750],{"class":741},[731,9197,4929],{"class":1753},[731,9199,1216],{"class":741},[731,9201,1759],{"class":921},[731,9203,745],{"class":741},[731,9205,9206],{"class":733,"line":1914},[731,9207,5831],{"class":1814},[731,9209,9210,9212,9214,9216,9218,9220,9222,9224,9226,9228,9230,9232,9234,9236,9238],{"class":733,"line":1922},[731,9211,5836],{"class":784},[731,9213,1184],{"class":741},[731,9215,1754],{"class":784},[731,9217,948],{"class":741},[731,9219,4595],{"class":836},[731,9221,839],{"class":848},[731,9223,4929],{"class":784},[731,9225,1184],{"class":741},[731,9227,1754],{"class":784},[731,9229,2878],{"class":848},[731,9231,4966],{"class":777},[731,9233,4663],{"class":741},[731,9235,4971],{"class":784},[731,9237,1184],{"class":741},[731,9239,4976],{"class":784},[731,9241,9242],{"class":733,"line":2125},[731,9243,1911],{"class":741},[731,9245,9246,9248],{"class":733,"line":2354},[731,9247,881],{"class":741},[731,9249,884],{"class":784},[721,9251,9253],{"className":723,"code":9252,"filename":309,"language":725,"meta":1505,"style":727},"import { withEvlog } from 'evlog\u002Forpc'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nconst handler = withEvlog(new RPCHandler(router), {\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[620,9254,9255,9273,9277,9335,9339,9359,9391,9421,9425,9449,9483,9519,9573,9577,9583,9587,9609,9625,9629,9661,9665],{"__ignoreMap":727},[731,9256,9257,9259,9261,9263,9265,9267,9269,9271],{"class":733,"line":734},[731,9258,778],{"class":777},[731,9260,781],{"class":741},[731,9262,927],{"class":784},[731,9264,788],{"class":741},[731,9266,791],{"class":777},[731,9268,794],{"class":741},[731,9270,1524],{"class":797},[731,9272,801],{"class":741},[731,9274,9275],{"class":733,"line":748},[731,9276,824],{"emptyLinePlaceholder":823},[731,9278,9279,9281,9283,9285,9287,9289,9291,9293,9295,9297,9299,9301,9303,9305,9307,9309,9311,9313,9315,9317,9319,9321,9323,9325,9327,9329,9331,9333],{"class":733,"line":763},[731,9280,1535],{"class":921},[731,9282,4529],{"class":784},[731,9284,1193],{"class":741},[731,9286,854],{"class":784},[731,9288,969],{"class":741},[731,9290,3215],{"class":797},[731,9292,969],{"class":741},[731,9294,930],{"class":741},[731,9296,794],{"class":741},[731,9298,3224],{"class":797},[731,9300,969],{"class":741},[731,9302,930],{"class":741},[731,9304,794],{"class":741},[731,9306,3233],{"class":797},[731,9308,969],{"class":741},[731,9310,930],{"class":741},[731,9312,794],{"class":741},[731,9314,4562],{"class":797},[731,9316,969],{"class":741},[731,9318,930],{"class":741},[731,9320,794],{"class":741},[731,9322,3251],{"class":797},[731,9324,969],{"class":741},[731,9326,930],{"class":741},[731,9328,794],{"class":741},[731,9330,4579],{"class":797},[731,9332,969],{"class":741},[731,9334,1223],{"class":784},[731,9336,9337],{"class":733,"line":827},[731,9338,824],{"emptyLinePlaceholder":823},[731,9340,9341,9343,9345,9347,9349,9351,9353,9355,9357],{"class":733,"line":845},[731,9342,4592],{"class":921},[731,9344,4595],{"class":836},[731,9346,839],{"class":741},[731,9348,4600],{"class":1753},[731,9350,742],{"class":741},[731,9352,3178],{"class":737},[731,9354,2821],{"class":741},[731,9356,3178],{"class":737},[731,9358,745],{"class":741},[731,9360,9361,9363,9365,9367,9369,9371,9373,9375,9377,9379,9381,9383,9385,9387,9389],{"class":733,"line":878},[731,9362,2867],{"class":777},[731,9364,1750],{"class":848},[731,9366,4619],{"class":784},[731,9368,1184],{"class":741},[731,9370,4624],{"class":836},[731,9372,839],{"class":848},[731,9374,4600],{"class":784},[731,9376,4631],{"class":848},[731,9378,2881],{"class":777},[731,9380,4636],{"class":784},[731,9382,1184],{"class":741},[731,9384,99],{"class":836},[731,9386,839],{"class":848},[731,9388,4645],{"class":784},[731,9390,884],{"class":848},[731,9392,9393,9395,9397,9399,9401,9403,9405,9407,9409,9411,9413,9415,9417,9419],{"class":733,"line":1806},[731,9394,2867],{"class":777},[731,9396,1750],{"class":848},[731,9398,2872],{"class":741},[731,9400,4600],{"class":784},[731,9402,4660],{"class":741},[731,9404,4663],{"class":741},[731,9406,4636],{"class":784},[731,9408,4668],{"class":741},[731,9410,794],{"class":741},[731,9412,4673],{"class":797},[731,9414,969],{"class":741},[731,9416,2878],{"class":848},[731,9418,2881],{"class":777},[731,9420,4682],{"class":784},[731,9422,9423],{"class":733,"line":1811},[731,9424,824],{"emptyLinePlaceholder":823},[731,9426,9427,9429,9431,9433,9435,9437,9439,9441,9443,9445,9447],{"class":733,"line":1818},[731,9428,1766],{"class":921},[731,9430,3280],{"class":784},[731,9432,742],{"class":741},[731,9434,3168],{"class":737},[731,9436,3159],{"class":741},[731,9438,3173],{"class":737},[731,9440,930],{"class":741},[731,9442,3178],{"class":737},[731,9444,3270],{"class":741},[731,9446,948],{"class":741},[731,9448,4711],{"class":741},[731,9450,9451,9453,9455,9457,9459,9461,9463,9465,9467,9469,9471,9473,9475,9477,9479,9481],{"class":733,"line":1824},[731,9452,3299],{"class":777},[731,9454,1750],{"class":848},[731,9456,1535],{"class":921},[731,9458,854],{"class":741},[731,9460,3327],{"class":784},[731,9462,930],{"class":741},[731,9464,4728],{"class":784},[731,9466,2842],{"class":741},[731,9468,3309],{"class":741},[731,9470,4735],{"class":784},[731,9472,1184],{"class":741},[731,9474,4740],{"class":836},[731,9476,839],{"class":848},[731,9478,4600],{"class":784},[731,9480,4631],{"class":848},[731,9482,842],{"class":741},[731,9484,9485,9487,9489,9491,9493,9495,9497,9499,9501,9503,9505,9507,9509,9511,9513,9515,9517],{"class":733,"line":1829},[731,9486,4753],{"class":921},[731,9488,4756],{"class":784},[731,9490,948],{"class":741},[731,9492,3306],{"class":784},[731,9494,1184],{"class":741},[731,9496,4765],{"class":836},[731,9498,4768],{"class":848},[731,9500,1184],{"class":741},[731,9502,4773],{"class":836},[731,9504,839],{"class":848},[731,9506,4778],{"class":741},[731,9508,4781],{"class":797},[731,9510,4784],{"class":741},[731,9512,4787],{"class":2935},[731,9514,930],{"class":741},[731,9516,4792],{"class":741},[731,9518,884],{"class":848},[731,9520,9521,9523,9525,9527,9529,9531,9533,9535,9537,9539,9541,9543,9545,9547,9549,9551,9553,9555,9557,9559,9561,9563,9565,9567,9569,9571],{"class":733,"line":1835},[731,9522,4799],{"class":784},[731,9524,3347],{"class":848},[731,9526,3327],{"class":784},[731,9528,4806],{"class":848},[731,9530,1193],{"class":741},[731,9532,4811],{"class":784},[731,9534,1184],{"class":741},[731,9536,4816],{"class":836},[731,9538,839],{"class":848},[731,9540,4821],{"class":1753},[731,9542,1759],{"class":921},[731,9544,4756],{"class":784},[731,9546,1184],{"class":741},[731,9548,4830],{"class":836},[731,9550,839],{"class":848},[731,9552,4821],{"class":784},[731,9554,4631],{"class":848},[731,9556,4839],{"class":741},[731,9558,794],{"class":741},[731,9560,4844],{"class":797},[731,9562,969],{"class":741},[731,9564,4849],{"class":741},[731,9566,4595],{"class":836},[731,9568,839],{"class":848},[731,9570,4856],{"class":784},[731,9572,884],{"class":848},[731,9574,9575],{"class":733,"line":1850},[731,9576,3363],{"class":741},[731,9578,9579,9581],{"class":733,"line":1860},[731,9580,2329],{"class":777},[731,9582,3371],{"class":784},[731,9584,9585],{"class":733,"line":1877},[731,9586,766],{"class":741},[731,9588,9589,9591,9593,9595,9597,9599,9601,9603,9605,9607],{"class":733,"line":1902},[731,9590,1535],{"class":921},[731,9592,1538],{"class":784},[731,9594,1193],{"class":741},[731,9596,927],{"class":836},[731,9598,839],{"class":784},[731,9600,1547],{"class":741},[731,9602,1550],{"class":836},[731,9604,1553],{"class":784},[731,9606,930],{"class":741},[731,9608,745],{"class":741},[731,9610,9611,9613,9615,9617,9619,9621,9623],{"class":733,"line":1908},[731,9612,5814],{"class":836},[731,9614,742],{"class":741},[731,9616,1750],{"class":741},[731,9618,4929],{"class":1753},[731,9620,1216],{"class":741},[731,9622,1759],{"class":921},[731,9624,745],{"class":741},[731,9626,9627],{"class":733,"line":1914},[731,9628,5831],{"class":1814},[731,9630,9631,9633,9635,9637,9639,9641,9643,9645,9647,9649,9651,9653,9655,9657,9659],{"class":733,"line":1922},[731,9632,5836],{"class":784},[731,9634,1184],{"class":741},[731,9636,1754],{"class":784},[731,9638,948],{"class":741},[731,9640,4595],{"class":836},[731,9642,839],{"class":848},[731,9644,4929],{"class":784},[731,9646,1184],{"class":741},[731,9648,1754],{"class":784},[731,9650,2878],{"class":848},[731,9652,4966],{"class":777},[731,9654,4663],{"class":741},[731,9656,4971],{"class":784},[731,9658,1184],{"class":741},[731,9660,4976],{"class":784},[731,9662,9663],{"class":733,"line":2125},[731,9664,1911],{"class":741},[731,9666,9667,9669],{"class":733,"line":2354},[731,9668,881],{"class":741},[731,9670,884],{"class":784},[721,9672,9674],{"className":723,"code":9673,"filename":295,"language":725,"meta":1571,"style":727},"import { withEvlog } from 'evlog\u002Fworkers'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nexport default withEvlog(handler, {\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[620,9675,9676,9694,9698,9756,9760,9780,9812,9842,9846,9870,9904,9940,9994,9998,10004,10008,10022,10038,10042,10074,10078],{"__ignoreMap":727},[731,9677,9678,9680,9682,9684,9686,9688,9690,9692],{"class":733,"line":734},[731,9679,778],{"class":777},[731,9681,781],{"class":741},[731,9683,927],{"class":784},[731,9685,788],{"class":741},[731,9687,791],{"class":777},[731,9689,794],{"class":741},[731,9691,1590],{"class":797},[731,9693,801],{"class":741},[731,9695,9696],{"class":733,"line":748},[731,9697,824],{"emptyLinePlaceholder":823},[731,9699,9700,9702,9704,9706,9708,9710,9712,9714,9716,9718,9720,9722,9724,9726,9728,9730,9732,9734,9736,9738,9740,9742,9744,9746,9748,9750,9752,9754],{"class":733,"line":763},[731,9701,1535],{"class":921},[731,9703,4529],{"class":784},[731,9705,1193],{"class":741},[731,9707,854],{"class":784},[731,9709,969],{"class":741},[731,9711,3215],{"class":797},[731,9713,969],{"class":741},[731,9715,930],{"class":741},[731,9717,794],{"class":741},[731,9719,3224],{"class":797},[731,9721,969],{"class":741},[731,9723,930],{"class":741},[731,9725,794],{"class":741},[731,9727,3233],{"class":797},[731,9729,969],{"class":741},[731,9731,930],{"class":741},[731,9733,794],{"class":741},[731,9735,4562],{"class":797},[731,9737,969],{"class":741},[731,9739,930],{"class":741},[731,9741,794],{"class":741},[731,9743,3251],{"class":797},[731,9745,969],{"class":741},[731,9747,930],{"class":741},[731,9749,794],{"class":741},[731,9751,4579],{"class":797},[731,9753,969],{"class":741},[731,9755,1223],{"class":784},[731,9757,9758],{"class":733,"line":827},[731,9759,824],{"emptyLinePlaceholder":823},[731,9761,9762,9764,9766,9768,9770,9772,9774,9776,9778],{"class":733,"line":845},[731,9763,4592],{"class":921},[731,9765,4595],{"class":836},[731,9767,839],{"class":741},[731,9769,4600],{"class":1753},[731,9771,742],{"class":741},[731,9773,3178],{"class":737},[731,9775,2821],{"class":741},[731,9777,3178],{"class":737},[731,9779,745],{"class":741},[731,9781,9782,9784,9786,9788,9790,9792,9794,9796,9798,9800,9802,9804,9806,9808,9810],{"class":733,"line":878},[731,9783,2867],{"class":777},[731,9785,1750],{"class":848},[731,9787,4619],{"class":784},[731,9789,1184],{"class":741},[731,9791,4624],{"class":836},[731,9793,839],{"class":848},[731,9795,4600],{"class":784},[731,9797,4631],{"class":848},[731,9799,2881],{"class":777},[731,9801,4636],{"class":784},[731,9803,1184],{"class":741},[731,9805,99],{"class":836},[731,9807,839],{"class":848},[731,9809,4645],{"class":784},[731,9811,884],{"class":848},[731,9813,9814,9816,9818,9820,9822,9824,9826,9828,9830,9832,9834,9836,9838,9840],{"class":733,"line":1806},[731,9815,2867],{"class":777},[731,9817,1750],{"class":848},[731,9819,2872],{"class":741},[731,9821,4600],{"class":784},[731,9823,4660],{"class":741},[731,9825,4663],{"class":741},[731,9827,4636],{"class":784},[731,9829,4668],{"class":741},[731,9831,794],{"class":741},[731,9833,4673],{"class":797},[731,9835,969],{"class":741},[731,9837,2878],{"class":848},[731,9839,2881],{"class":777},[731,9841,4682],{"class":784},[731,9843,9844],{"class":733,"line":1811},[731,9845,824],{"emptyLinePlaceholder":823},[731,9847,9848,9850,9852,9854,9856,9858,9860,9862,9864,9866,9868],{"class":733,"line":1818},[731,9849,1766],{"class":921},[731,9851,3280],{"class":784},[731,9853,742],{"class":741},[731,9855,3168],{"class":737},[731,9857,3159],{"class":741},[731,9859,3173],{"class":737},[731,9861,930],{"class":741},[731,9863,3178],{"class":737},[731,9865,3270],{"class":741},[731,9867,948],{"class":741},[731,9869,4711],{"class":741},[731,9871,9872,9874,9876,9878,9880,9882,9884,9886,9888,9890,9892,9894,9896,9898,9900,9902],{"class":733,"line":1824},[731,9873,3299],{"class":777},[731,9875,1750],{"class":848},[731,9877,1535],{"class":921},[731,9879,854],{"class":741},[731,9881,3327],{"class":784},[731,9883,930],{"class":741},[731,9885,4728],{"class":784},[731,9887,2842],{"class":741},[731,9889,3309],{"class":741},[731,9891,4735],{"class":784},[731,9893,1184],{"class":741},[731,9895,4740],{"class":836},[731,9897,839],{"class":848},[731,9899,4600],{"class":784},[731,9901,4631],{"class":848},[731,9903,842],{"class":741},[731,9905,9906,9908,9910,9912,9914,9916,9918,9920,9922,9924,9926,9928,9930,9932,9934,9936,9938],{"class":733,"line":1829},[731,9907,4753],{"class":921},[731,9909,4756],{"class":784},[731,9911,948],{"class":741},[731,9913,3306],{"class":784},[731,9915,1184],{"class":741},[731,9917,4765],{"class":836},[731,9919,4768],{"class":848},[731,9921,1184],{"class":741},[731,9923,4773],{"class":836},[731,9925,839],{"class":848},[731,9927,4778],{"class":741},[731,9929,4781],{"class":797},[731,9931,4784],{"class":741},[731,9933,4787],{"class":2935},[731,9935,930],{"class":741},[731,9937,4792],{"class":741},[731,9939,884],{"class":848},[731,9941,9942,9944,9946,9948,9950,9952,9954,9956,9958,9960,9962,9964,9966,9968,9970,9972,9974,9976,9978,9980,9982,9984,9986,9988,9990,9992],{"class":733,"line":1835},[731,9943,4799],{"class":784},[731,9945,3347],{"class":848},[731,9947,3327],{"class":784},[731,9949,4806],{"class":848},[731,9951,1193],{"class":741},[731,9953,4811],{"class":784},[731,9955,1184],{"class":741},[731,9957,4816],{"class":836},[731,9959,839],{"class":848},[731,9961,4821],{"class":1753},[731,9963,1759],{"class":921},[731,9965,4756],{"class":784},[731,9967,1184],{"class":741},[731,9969,4830],{"class":836},[731,9971,839],{"class":848},[731,9973,4821],{"class":784},[731,9975,4631],{"class":848},[731,9977,4839],{"class":741},[731,9979,794],{"class":741},[731,9981,4844],{"class":797},[731,9983,969],{"class":741},[731,9985,4849],{"class":741},[731,9987,4595],{"class":836},[731,9989,839],{"class":848},[731,9991,4856],{"class":784},[731,9993,884],{"class":848},[731,9995,9996],{"class":733,"line":1850},[731,9997,3363],{"class":741},[731,9999,10000,10002],{"class":733,"line":1860},[731,10001,2329],{"class":777},[731,10003,3371],{"class":784},[731,10005,10006],{"class":733,"line":1877},[731,10007,766],{"class":741},[731,10009,10010,10012,10014,10016,10018,10020],{"class":733,"line":1902},[731,10011,830],{"class":777},[731,10013,833],{"class":777},[731,10015,927],{"class":836},[731,10017,1607],{"class":784},[731,10019,930],{"class":741},[731,10021,745],{"class":741},[731,10023,10024,10026,10028,10030,10032,10034,10036],{"class":733,"line":1908},[731,10025,5814],{"class":836},[731,10027,742],{"class":741},[731,10029,1750],{"class":741},[731,10031,4929],{"class":1753},[731,10033,1216],{"class":741},[731,10035,1759],{"class":921},[731,10037,745],{"class":741},[731,10039,10040],{"class":733,"line":1914},[731,10041,5831],{"class":1814},[731,10043,10044,10046,10048,10050,10052,10054,10056,10058,10060,10062,10064,10066,10068,10070,10072],{"class":733,"line":1922},[731,10045,5836],{"class":784},[731,10047,1184],{"class":741},[731,10049,1754],{"class":784},[731,10051,948],{"class":741},[731,10053,4595],{"class":836},[731,10055,839],{"class":848},[731,10057,4929],{"class":784},[731,10059,1184],{"class":741},[731,10061,1754],{"class":784},[731,10063,2878],{"class":848},[731,10065,4966],{"class":777},[731,10067,4663],{"class":741},[731,10069,4971],{"class":784},[731,10071,1184],{"class":741},[731,10073,4976],{"class":784},[731,10075,10076],{"class":733,"line":2125},[731,10077,1911],{"class":741},[731,10079,10080,10082],{"class":733,"line":2354},[731,10081,881],{"class":741},[731,10083,884],{"class":784},[721,10085,10087],{"className":723,"code":10086,"filename":300,"language":725,"meta":1227,"style":727},"import { initLogger } from 'evlog'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\ninitLogger({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[620,10088,10089,10107,10111,10169,10173,10193,10225,10255,10259,10283,10317,10353,10407,10411,10417,10421,10429,10445,10449,10481,10485],{"__ignoreMap":727},[731,10090,10091,10093,10095,10097,10099,10101,10103,10105],{"class":733,"line":734},[731,10092,778],{"class":777},[731,10094,781],{"class":741},[731,10096,1635],{"class":784},[731,10098,788],{"class":741},[731,10100,791],{"class":777},[731,10102,794],{"class":741},[731,10104,738],{"class":797},[731,10106,801],{"class":741},[731,10108,10109],{"class":733,"line":748},[731,10110,824],{"emptyLinePlaceholder":823},[731,10112,10113,10115,10117,10119,10121,10123,10125,10127,10129,10131,10133,10135,10137,10139,10141,10143,10145,10147,10149,10151,10153,10155,10157,10159,10161,10163,10165,10167],{"class":733,"line":763},[731,10114,1535],{"class":921},[731,10116,4529],{"class":784},[731,10118,1193],{"class":741},[731,10120,854],{"class":784},[731,10122,969],{"class":741},[731,10124,3215],{"class":797},[731,10126,969],{"class":741},[731,10128,930],{"class":741},[731,10130,794],{"class":741},[731,10132,3224],{"class":797},[731,10134,969],{"class":741},[731,10136,930],{"class":741},[731,10138,794],{"class":741},[731,10140,3233],{"class":797},[731,10142,969],{"class":741},[731,10144,930],{"class":741},[731,10146,794],{"class":741},[731,10148,4562],{"class":797},[731,10150,969],{"class":741},[731,10152,930],{"class":741},[731,10154,794],{"class":741},[731,10156,3251],{"class":797},[731,10158,969],{"class":741},[731,10160,930],{"class":741},[731,10162,794],{"class":741},[731,10164,4579],{"class":797},[731,10166,969],{"class":741},[731,10168,1223],{"class":784},[731,10170,10171],{"class":733,"line":827},[731,10172,824],{"emptyLinePlaceholder":823},[731,10174,10175,10177,10179,10181,10183,10185,10187,10189,10191],{"class":733,"line":845},[731,10176,4592],{"class":921},[731,10178,4595],{"class":836},[731,10180,839],{"class":741},[731,10182,4600],{"class":1753},[731,10184,742],{"class":741},[731,10186,3178],{"class":737},[731,10188,2821],{"class":741},[731,10190,3178],{"class":737},[731,10192,745],{"class":741},[731,10194,10195,10197,10199,10201,10203,10205,10207,10209,10211,10213,10215,10217,10219,10221,10223],{"class":733,"line":878},[731,10196,2867],{"class":777},[731,10198,1750],{"class":848},[731,10200,4619],{"class":784},[731,10202,1184],{"class":741},[731,10204,4624],{"class":836},[731,10206,839],{"class":848},[731,10208,4600],{"class":784},[731,10210,4631],{"class":848},[731,10212,2881],{"class":777},[731,10214,4636],{"class":784},[731,10216,1184],{"class":741},[731,10218,99],{"class":836},[731,10220,839],{"class":848},[731,10222,4645],{"class":784},[731,10224,884],{"class":848},[731,10226,10227,10229,10231,10233,10235,10237,10239,10241,10243,10245,10247,10249,10251,10253],{"class":733,"line":1806},[731,10228,2867],{"class":777},[731,10230,1750],{"class":848},[731,10232,2872],{"class":741},[731,10234,4600],{"class":784},[731,10236,4660],{"class":741},[731,10238,4663],{"class":741},[731,10240,4636],{"class":784},[731,10242,4668],{"class":741},[731,10244,794],{"class":741},[731,10246,4673],{"class":797},[731,10248,969],{"class":741},[731,10250,2878],{"class":848},[731,10252,2881],{"class":777},[731,10254,4682],{"class":784},[731,10256,10257],{"class":733,"line":1811},[731,10258,824],{"emptyLinePlaceholder":823},[731,10260,10261,10263,10265,10267,10269,10271,10273,10275,10277,10279,10281],{"class":733,"line":1818},[731,10262,1766],{"class":921},[731,10264,3280],{"class":784},[731,10266,742],{"class":741},[731,10268,3168],{"class":737},[731,10270,3159],{"class":741},[731,10272,3173],{"class":737},[731,10274,930],{"class":741},[731,10276,3178],{"class":737},[731,10278,3270],{"class":741},[731,10280,948],{"class":741},[731,10282,4711],{"class":741},[731,10284,10285,10287,10289,10291,10293,10295,10297,10299,10301,10303,10305,10307,10309,10311,10313,10315],{"class":733,"line":1824},[731,10286,3299],{"class":777},[731,10288,1750],{"class":848},[731,10290,1535],{"class":921},[731,10292,854],{"class":741},[731,10294,3327],{"class":784},[731,10296,930],{"class":741},[731,10298,4728],{"class":784},[731,10300,2842],{"class":741},[731,10302,3309],{"class":741},[731,10304,4735],{"class":784},[731,10306,1184],{"class":741},[731,10308,4740],{"class":836},[731,10310,839],{"class":848},[731,10312,4600],{"class":784},[731,10314,4631],{"class":848},[731,10316,842],{"class":741},[731,10318,10319,10321,10323,10325,10327,10329,10331,10333,10335,10337,10339,10341,10343,10345,10347,10349,10351],{"class":733,"line":1829},[731,10320,4753],{"class":921},[731,10322,4756],{"class":784},[731,10324,948],{"class":741},[731,10326,3306],{"class":784},[731,10328,1184],{"class":741},[731,10330,4765],{"class":836},[731,10332,4768],{"class":848},[731,10334,1184],{"class":741},[731,10336,4773],{"class":836},[731,10338,839],{"class":848},[731,10340,4778],{"class":741},[731,10342,4781],{"class":797},[731,10344,4784],{"class":741},[731,10346,4787],{"class":2935},[731,10348,930],{"class":741},[731,10350,4792],{"class":741},[731,10352,884],{"class":848},[731,10354,10355,10357,10359,10361,10363,10365,10367,10369,10371,10373,10375,10377,10379,10381,10383,10385,10387,10389,10391,10393,10395,10397,10399,10401,10403,10405],{"class":733,"line":1835},[731,10356,4799],{"class":784},[731,10358,3347],{"class":848},[731,10360,3327],{"class":784},[731,10362,4806],{"class":848},[731,10364,1193],{"class":741},[731,10366,4811],{"class":784},[731,10368,1184],{"class":741},[731,10370,4816],{"class":836},[731,10372,839],{"class":848},[731,10374,4821],{"class":1753},[731,10376,1759],{"class":921},[731,10378,4756],{"class":784},[731,10380,1184],{"class":741},[731,10382,4830],{"class":836},[731,10384,839],{"class":848},[731,10386,4821],{"class":784},[731,10388,4631],{"class":848},[731,10390,4839],{"class":741},[731,10392,794],{"class":741},[731,10394,4844],{"class":797},[731,10396,969],{"class":741},[731,10398,4849],{"class":741},[731,10400,4595],{"class":836},[731,10402,839],{"class":848},[731,10404,4856],{"class":784},[731,10406,884],{"class":848},[731,10408,10409],{"class":733,"line":1850},[731,10410,3363],{"class":741},[731,10412,10413,10415],{"class":733,"line":1860},[731,10414,2329],{"class":777},[731,10416,3371],{"class":784},[731,10418,10419],{"class":733,"line":1877},[731,10420,766],{"class":741},[731,10422,10423,10425,10427],{"class":733,"line":1902},[731,10424,1654],{"class":836},[731,10426,839],{"class":784},[731,10428,842],{"class":741},[731,10430,10431,10433,10435,10437,10439,10441,10443],{"class":733,"line":1908},[731,10432,5814],{"class":836},[731,10434,742],{"class":741},[731,10436,1750],{"class":741},[731,10438,4929],{"class":1753},[731,10440,1216],{"class":741},[731,10442,1759],{"class":921},[731,10444,745],{"class":741},[731,10446,10447],{"class":733,"line":1914},[731,10448,5831],{"class":1814},[731,10450,10451,10453,10455,10457,10459,10461,10463,10465,10467,10469,10471,10473,10475,10477,10479],{"class":733,"line":1922},[731,10452,5836],{"class":784},[731,10454,1184],{"class":741},[731,10456,1754],{"class":784},[731,10458,948],{"class":741},[731,10460,4595],{"class":836},[731,10462,839],{"class":848},[731,10464,4929],{"class":784},[731,10466,1184],{"class":741},[731,10468,1754],{"class":784},[731,10470,2878],{"class":848},[731,10472,4966],{"class":777},[731,10474,4663],{"class":741},[731,10476,4971],{"class":784},[731,10478,1184],{"class":741},[731,10480,4976],{"class":784},[731,10482,10483],{"class":733,"line":2125},[731,10484,1911],{"class":741},[731,10486,10487,10489],{"class":733,"line":2354},[731,10488,881],{"class":741},[731,10490,884],{"class":784},[707,10492,10494],{"color":10493,"icon":478},"warning","Drain hook sanitization is a safety net, not a replacement for careful logging practices. Always sanitize at the source.",[612,10496,10498],{"id":10497},"production-checklist","Production Checklist",[608,10500,10501],{},"Before deploying to production, verify:",[1697,10503,10505],{"id":10504},"logging-configuration","Logging Configuration",[10507,10508,10511,10524,10530,10536],"ul",{"className":10509},[10510],"contains-task-list",[10512,10513,10516,10520,10521,1216],"li",{"className":10514},[10515],"task-list-item",[10517,10518],"input",{"disabled":823,"type":10519},"checkbox"," Service name is set (",[620,10522,10523],{},"env.service",[10512,10525,10527,10529],{"className":10526},[10515],[10517,10528],{"disabled":823,"type":10519}," Sampling is configured for high-traffic routes",[10512,10531,10533,10535],{"className":10532},[10515],[10517,10534],{"disabled":823,"type":10519}," Log draining is set up for external service (Axiom, Loki, etc.)",[10512,10537,10539,10541,10542,1216],{"className":10538},[10515],[10517,10540],{"disabled":823,"type":10519}," Pretty mode is disabled in production (",[620,10543,10544],{},"pretty: false",[1697,10546,10548],{"id":10547},"data-security","Data Security",[10507,10550,10552,10560,10566,10572,10578,10584,10590],{"className":10551},[10510],[10512,10553,10555,10557,10558,1216],{"className":10554},[10515],[10517,10556],{"disabled":823,"type":10519}," Auto-redaction is enabled (",[620,10559,1690],{},[10512,10561,10563,10565],{"className":10562},[10515],[10517,10564],{"disabled":823,"type":10519}," No passwords or secrets in logs",[10512,10567,10569,10571],{"className":10568},[10515],[10517,10570],{"disabled":823,"type":10519}," No full credit card numbers (only last 4 digits)",[10512,10573,10575,10577],{"className":10574},[10515],[10517,10576],{"disabled":823,"type":10519}," No API keys or tokens",[10512,10579,10581,10583],{"className":10580},[10515],[10517,10582],{"disabled":823,"type":10519}," PII is masked or omitted (emails, phone numbers)",[10512,10585,10587,10589],{"className":10586},[10515],[10517,10588],{"disabled":823,"type":10519}," Session tokens are not logged",[10512,10591,10593,10595,10596,1216],{"className":10592},[10515],[10517,10594],{"disabled":823,"type":10519}," Request bodies are selectively logged (not ",[620,10597,10598],{},"log.set({ body })",[1697,10600,10602],{"id":10601},"error-handling","Error Handling",[10507,10604,10606,10616,10622],{"className":10605},[10510],[10512,10607,10609,10611,10612,10615],{"className":10608},[10515],[10517,10610],{"disabled":823,"type":10519}," Errors use ",[620,10613,10614],{},"createError()"," with structured fields",[10512,10617,10619,10621],{"className":10618},[10515],[10517,10620],{"disabled":823,"type":10519}," Sensitive data is not included in error messages",[10512,10623,10625,10627],{"className":10624},[10515],[10517,10626],{"disabled":823,"type":10519}," Stack traces don't expose internal paths in production",[612,10629,10631],{"id":10630},"group-fields-so-they-stay-queryable","Group fields so they stay queryable",[608,10633,10634],{},"Use consistent, grouped field names across your codebase:",[721,10636,10639],{"className":723,"code":10637,"filename":10638,"language":725,"meta":727,"style":727},"\u002F\u002F ✅ Good - grouped and descriptive\nlog.set({\n  user: { id, plan, accountAge },\n  cart: { items, total, currency },\n  payment: { method, provider, last4 },\n})\n\n\u002F\u002F ❌ Bad - flat and abbreviated\nlog.set({\n  uid: '123',\n  n: 3,\n  t: 9999,\n  pm: 'card',\n})\n","services\u002Fcheckout.ts",[620,10640,10641,10646,10658,10683,10707,10731,10737,10741,10746,10758,10774,10786,10798,10813],{"__ignoreMap":727},[731,10642,10643],{"class":733,"line":734},[731,10644,10645],{"class":1814},"\u002F\u002F ✅ Good - grouped and descriptive\n",[731,10647,10648,10650,10652,10654,10656],{"class":733,"line":748},[731,10649,2420],{"class":784},[731,10651,1184],{"class":741},[731,10653,1843],{"class":836},[731,10655,839],{"class":784},[731,10657,842],{"class":741},[731,10659,10660,10663,10665,10667,10670,10672,10675,10677,10680],{"class":733,"line":763},[731,10661,10662],{"class":848},"  user",[731,10664,742],{"class":741},[731,10666,781],{"class":741},[731,10668,10669],{"class":784}," id",[731,10671,930],{"class":741},[731,10673,10674],{"class":784}," plan",[731,10676,930],{"class":741},[731,10678,10679],{"class":784}," accountAge ",[731,10681,10682],{"class":741},"},\n",[731,10684,10685,10688,10690,10692,10695,10697,10700,10702,10705],{"class":733,"line":827},[731,10686,10687],{"class":848},"  cart",[731,10689,742],{"class":741},[731,10691,781],{"class":741},[731,10693,10694],{"class":784}," items",[731,10696,930],{"class":741},[731,10698,10699],{"class":784}," total",[731,10701,930],{"class":741},[731,10703,10704],{"class":784}," currency ",[731,10706,10682],{"class":741},[731,10708,10709,10712,10714,10716,10719,10721,10724,10726,10729],{"class":733,"line":845},[731,10710,10711],{"class":848},"  payment",[731,10713,742],{"class":741},[731,10715,781],{"class":741},[731,10717,10718],{"class":784}," method",[731,10720,930],{"class":741},[731,10722,10723],{"class":784}," provider",[731,10725,930],{"class":741},[731,10727,10728],{"class":784}," last4 ",[731,10730,10682],{"class":741},[731,10732,10733,10735],{"class":733,"line":878},[731,10734,881],{"class":741},[731,10736,884],{"class":784},[731,10738,10739],{"class":733,"line":1806},[731,10740,824],{"emptyLinePlaceholder":823},[731,10742,10743],{"class":733,"line":1811},[731,10744,10745],{"class":1814},"\u002F\u002F ❌ Bad - flat and abbreviated\n",[731,10747,10748,10750,10752,10754,10756],{"class":733,"line":1818},[731,10749,2420],{"class":784},[731,10751,1184],{"class":741},[731,10753,1843],{"class":836},[731,10755,839],{"class":784},[731,10757,842],{"class":741},[731,10759,10760,10763,10765,10767,10770,10772],{"class":733,"line":1824},[731,10761,10762],{"class":848},"  uid",[731,10764,742],{"class":741},[731,10766,794],{"class":741},[731,10768,10769],{"class":797},"123",[731,10771,969],{"class":741},[731,10773,760],{"class":741},[731,10775,10776,10779,10781,10784],{"class":733,"line":1829},[731,10777,10778],{"class":848},"  n",[731,10780,742],{"class":741},[731,10782,10783],{"class":2935}," 3",[731,10785,760],{"class":741},[731,10787,10788,10791,10793,10796],{"class":733,"line":1835},[731,10789,10790],{"class":848},"  t",[731,10792,742],{"class":741},[731,10794,10795],{"class":2935}," 9999",[731,10797,760],{"class":741},[731,10799,10800,10803,10805,10807,10809,10811],{"class":733,"line":1850},[731,10801,10802],{"class":848},"  pm",[731,10804,742],{"class":741},[731,10806,794],{"class":741},[731,10808,2993],{"class":797},[731,10810,969],{"class":741},[731,10812,760],{"class":741},[731,10814,10815,10817],{"class":733,"line":1860},[731,10816,881],{"class":741},[731,10818,884],{"class":784},[1697,10820,10822],{"id":10821},"recommended-field-structure","Recommended Field Structure",[629,10824,10825,10834],{},[632,10826,10827],{},[635,10828,10829,10831],{},[638,10830,640],{},[638,10832,10833],{},"Fields",[648,10835,10836,10856,10876,10901,10921],{},[635,10837,10838,10842],{},[653,10839,10840],{},[620,10841,3530],{},[653,10843,10844,10846,10847,10846,10850,10846,10853],{},[620,10845,1872],{},", ",[620,10848,10849],{},"plan",[620,10851,10852],{},"role",[620,10854,10855],{},"accountAge",[635,10857,10858,10862],{},[653,10859,10860],{},[620,10861,2184],{},[653,10863,10864,10846,10867,10846,10870,10846,10873],{},[620,10865,10866],{},"method",[620,10868,10869],{},"path",[620,10871,10872],{},"requestId",[620,10874,10875],{},"traceId",[635,10877,10878,10887],{},[653,10879,10880,10883,10884],{},[620,10881,10882],{},"cart"," \u002F ",[620,10885,10886],{},"order",[653,10888,10889,10846,10892,10846,10895,10846,10898],{},[620,10890,10891],{},"items",[620,10893,10894],{},"total",[620,10896,10897],{},"currency",[620,10899,10900],{},"coupon",[635,10902,10903,10908],{},[653,10904,10905],{},[620,10906,10907],{},"payment",[653,10909,10910,10846,10912,10846,10915,10846,10918],{},[620,10911,10866],{},[620,10913,10914],{},"provider",[620,10916,10917],{},"last4",[620,10919,10920],{},"status",[635,10922,10923,10928],{},[653,10924,10925],{},[620,10926,10927],{},"outcome",[653,10929,10930,10846,10932,10846,10935],{},[620,10931,10920],{},[620,10933,10934],{},"duration",[620,10936,709],{},[612,10938,10940],{"id":10939},"decide-what-survives-sampling","Decide what survives sampling",[608,10942,10943],{},"Volume is what you pay for, and a successful request nobody reads costs the same as the one that failed. Keep every error, thin the rest:",[721,10945,10947],{"className":723,"code":10946,"filename":726,"language":725,"meta":727,"style":727},"export default defineNuxtConfig({\n  evlog: {\n    sampling: {\n      \u002F\u002F Head sampling: random percentage per level\n      rates: {\n        info: 10,    \u002F\u002F 10% of success logs\n        warn: 50,    \u002F\u002F 50% of warnings\n        debug: 0,    \u002F\u002F No debug logs in prod\n        error: 100,  \u002F\u002F Always keep errors\n      },\n      \u002F\u002F Tail sampling: force-keep based on outcome\n      keep: [\n        { duration: 1000 },           \u002F\u002F Slow requests (≥1s)\n        { status: 400 },              \u002F\u002F Client\u002Fserver errors\n        { path: '\u002Fapi\u002Fpayments\u002F**' }, \u002F\u002F Critical paths\n      ],\n    },\n  },\n})\n",[620,10948,10949,10962,10970,10979,10984,10993,11008,11023,11038,11053,11058,11063,11072,11091,11108,11129,11136,11140,11145],{"__ignoreMap":727},[731,10950,10951,10953,10955,10958,10960],{"class":733,"line":734},[731,10952,830],{"class":777},[731,10954,833],{"class":777},[731,10956,10957],{"class":836}," defineNuxtConfig",[731,10959,839],{"class":784},[731,10961,842],{"class":741},[731,10963,10964,10966,10968],{"class":733,"line":748},[731,10965,1201],{"class":848},[731,10967,742],{"class":741},[731,10969,745],{"class":741},[731,10971,10972,10975,10977],{"class":733,"line":763},[731,10973,10974],{"class":848},"    sampling",[731,10976,742],{"class":741},[731,10978,745],{"class":741},[731,10980,10981],{"class":733,"line":827},[731,10982,10983],{"class":1814},"      \u002F\u002F Head sampling: random percentage per level\n",[731,10985,10986,10989,10991],{"class":733,"line":845},[731,10987,10988],{"class":848},"      rates",[731,10990,742],{"class":741},[731,10992,745],{"class":741},[731,10994,10995,10998,11000,11003,11005],{"class":733,"line":878},[731,10996,10997],{"class":848},"        info",[731,10999,742],{"class":741},[731,11001,11002],{"class":2935}," 10",[731,11004,930],{"class":741},[731,11006,11007],{"class":1814},"    \u002F\u002F 10% of success logs\n",[731,11009,11010,11013,11015,11018,11020],{"class":733,"line":1806},[731,11011,11012],{"class":848},"        warn",[731,11014,742],{"class":741},[731,11016,11017],{"class":2935}," 50",[731,11019,930],{"class":741},[731,11021,11022],{"class":1814},"    \u002F\u002F 50% of warnings\n",[731,11024,11025,11028,11030,11033,11035],{"class":733,"line":1811},[731,11026,11027],{"class":848},"        debug",[731,11029,742],{"class":741},[731,11031,11032],{"class":2935}," 0",[731,11034,930],{"class":741},[731,11036,11037],{"class":1814},"    \u002F\u002F No debug logs in prod\n",[731,11039,11040,11043,11045,11048,11050],{"class":733,"line":1818},[731,11041,11042],{"class":848},"        error",[731,11044,742],{"class":741},[731,11046,11047],{"class":2935}," 100",[731,11049,930],{"class":741},[731,11051,11052],{"class":1814},"  \u002F\u002F Always keep errors\n",[731,11054,11055],{"class":733,"line":1824},[731,11056,11057],{"class":741},"      },\n",[731,11059,11060],{"class":733,"line":1829},[731,11061,11062],{"class":1814},"      \u002F\u002F Tail sampling: force-keep based on outcome\n",[731,11064,11065,11068,11070],{"class":733,"line":1835},[731,11066,11067],{"class":848},"      keep",[731,11069,742],{"class":741},[731,11071,1196],{"class":784},[731,11073,11074,11077,11080,11082,11085,11088],{"class":733,"line":1850},[731,11075,11076],{"class":741},"        {",[731,11078,11079],{"class":848}," duration",[731,11081,742],{"class":741},[731,11083,11084],{"class":2935}," 1000",[731,11086,11087],{"class":741}," },",[731,11089,11090],{"class":1814},"           \u002F\u002F Slow requests (≥1s)\n",[731,11092,11093,11095,11098,11100,11103,11105],{"class":733,"line":1860},[731,11094,11076],{"class":741},[731,11096,11097],{"class":848}," status",[731,11099,742],{"class":741},[731,11101,11102],{"class":2935}," 400",[731,11104,11087],{"class":741},[731,11106,11107],{"class":1814},"              \u002F\u002F Client\u002Fserver errors\n",[731,11109,11110,11112,11115,11117,11119,11122,11124,11126],{"class":733,"line":1877},[731,11111,11076],{"class":741},[731,11113,11114],{"class":848}," path",[731,11116,742],{"class":741},[731,11118,794],{"class":741},[731,11120,11121],{"class":797},"\u002Fapi\u002Fpayments\u002F**",[731,11123,969],{"class":741},[731,11125,11087],{"class":741},[731,11127,11128],{"class":1814}," \u002F\u002F Critical paths\n",[731,11130,11131,11134],{"class":733,"line":1902},[731,11132,11133],{"class":784},"      ]",[731,11135,760],{"class":741},[731,11137,11138],{"class":733,"line":1908},[731,11139,1911],{"class":741},[731,11141,11142],{"class":733,"line":1914},[731,11143,11144],{"class":741},"  },\n",[731,11146,11147,11149],{"class":733,"line":1922},[731,11148,881],{"class":741},[731,11150,884],{"class":784},[707,11152,11154,11155,11158,11159,1184],{"color":11153,"icon":13},"info","Use ",[620,11156,11157],{},"$production"," override to keep full logging in development while sampling in production. See ",[1681,11160,11162],{"href":11161},"\u002Fintegrate\u002Fframeworks\u002Fnuxt#sampling","Nuxt framework guide",[612,11164,11166],{"id":11165},"next-steps","Next Steps",[10507,11168,11169,11174,11179],{},[10512,11170,11171,11173],{},[1681,11172,71],{"href":72}," - Built-in PII protection with smart masking",[10512,11175,11176,11178],{},[1681,11177,51],{"href":52}," - Design effective wide events",[10512,11180,11181,11183],{},[1681,11182,56],{"href":57}," - Error handling patterns",[11185,11186,11187],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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}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 .s6hCs, html code.shiki .s6hCs{--shiki-light:#9C3EDA;--shiki-light-font-style:italic;--shiki-default:#C792EA;--shiki-default-font-style:italic;--shiki-dark:#C792EA;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":727,"searchDepth":748,"depth":748,"links":11189},[11190,11191,11192,11197,11202,11205,11206],{"id":614,"depth":748,"text":615},{"id":713,"depth":748,"text":71},{"id":1694,"depth":748,"text":1695,"children":11193},[11194,11195,11196],{"id":1699,"depth":763,"text":1700},{"id":2772,"depth":763,"text":2773},{"id":4510,"depth":763,"text":4511},{"id":10497,"depth":748,"text":10498,"children":11198},[11199,11200,11201],{"id":10504,"depth":763,"text":10505},{"id":10547,"depth":763,"text":10548},{"id":10601,"depth":763,"text":10602},{"id":10630,"depth":748,"text":10631,"children":11203},[11204],{"id":10821,"depth":763,"text":10822},{"id":10939,"depth":748,"text":10940},{"id":11165,"depth":748,"text":11166},"Security guidelines, data sanitization, and production tips for evlog. Learn what not to log and how to protect sensitive data.","md",[11210],{"label":148,"icon":146,"to":153,"color":11211,"variant":11212},"neutral","subtle",{},{"icon":388},{"title":560,"description":11207},"ax7y7oLbWTdGpSQV6F4EPZ4HlMbj7GlTmjPk_-sVwBM",[11218,11220],{"title":555,"path":556,"stem":557,"description":11219,"icon":558,"children":-1},"Build-time optimizations for any Vite-based framework. Auto-init, debug stripping, source location injection, and optional auto-imports.",{"title":564,"path":565,"stem":566,"description":11221,"icon":567,"children":-1},"Choose a logger by context model, extensibility, output, and migration cost, then follow the detailed comparison for your current stack.",1791060987320]