[{"data":1,"prerenderedAt":10935},["ShallowReactive",2],{"navigation_docs":3,"-reference-best-practices":602,"-reference-best-practices-surround":10930},[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":10920,"extension":10921,"links":10922,"meta":10926,"navigation":10927,"path":561,"seo":10928,"stem":562,"__hash__":10929},"docs\u002F7.reference\u002F4.best-practices.md",{"type":605,"value":606,"toc":10901},"minimark",[607,611,616,628,706,711,714,717,1669,1684,1692,1696,1701,1704,2770,2774,2777,3377,3380,4508,4512,4515,10204,10208,10212,10215,10219,10258,10262,10312,10316,10341,10345,10348,10532,10536,10650,10654,10657,10864,10876,10880,10897],[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,4962,5380,5808,6211,6632,7052,7447,7842,8237,8632,9023,9424,9817],{},[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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,4768,4832,4836,4842,4846,4850,4872,4909,4914,4950,4956],{"__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],{"class":733,"line":1818},[731,4752,4753],{"class":921},"    const",[731,4755,4756],{"class":784}," lower",[731,4758,948],{"class":741},[731,4760,3306],{"class":784},[731,4762,1184],{"class":741},[731,4764,4765],{"class":836},"toLowerCase",[731,4767,2208],{"class":848},[731,4769,4770,4773,4775,4777,4780,4782,4785,4787,4790,4792,4795,4797,4799,4801,4804,4806,4808,4810,4813,4815,4818,4820,4823,4825,4827,4830],{"class":733,"line":1824},[731,4771,4772],{"class":784},"    result",[731,4774,3347],{"class":848},[731,4776,3327],{"class":784},[731,4778,4779],{"class":848},"] ",[731,4781,1193],{"class":741},[731,4783,4784],{"class":784}," SENSITIVE_KEYS",[731,4786,1184],{"class":741},[731,4788,4789],{"class":836},"some",[731,4791,839],{"class":848},[731,4793,4794],{"class":1753},"k",[731,4796,1759],{"class":921},[731,4798,4756],{"class":784},[731,4800,1184],{"class":741},[731,4802,4803],{"class":836},"includes",[731,4805,839],{"class":848},[731,4807,4794],{"class":784},[731,4809,4631],{"class":848},[731,4811,4812],{"class":741},"?",[731,4814,794],{"class":741},[731,4816,4817],{"class":797},"[REDACTED]",[731,4819,969],{"class":741},[731,4821,4822],{"class":741}," :",[731,4824,4595],{"class":836},[731,4826,839],{"class":848},[731,4828,4829],{"class":784},"nested",[731,4831,884],{"class":848},[731,4833,4834],{"class":733,"line":1829},[731,4835,3363],{"class":741},[731,4837,4838,4840],{"class":733,"line":1835},[731,4839,2329],{"class":777},[731,4841,3371],{"class":784},[731,4843,4844],{"class":733,"line":1850},[731,4845,766],{"class":741},[731,4847,4848],{"class":733,"line":1860},[731,4849,824],{"emptyLinePlaceholder":823},[731,4851,4852,4854,4856,4859,4861,4863,4866,4868,4870],{"class":733,"line":1877},[731,4853,830],{"class":777},[731,4855,833],{"class":777},[731,4857,4858],{"class":836}," defineNitroPlugin",[731,4860,839],{"class":784},[731,4862,839],{"class":741},[731,4864,4865],{"class":1753},"nitroApp",[731,4867,1216],{"class":741},[731,4869,1759],{"class":921},[731,4871,745],{"class":741},[731,4873,4874,4877,4879,4882,4884,4887,4889,4891,4894,4896,4898,4900,4903,4905,4907],{"class":733,"line":1902},[731,4875,4876],{"class":784},"  nitroApp",[731,4878,1184],{"class":741},[731,4880,4881],{"class":784},"hooks",[731,4883,1184],{"class":741},[731,4885,4886],{"class":836},"hook",[731,4888,839],{"class":848},[731,4890,969],{"class":741},[731,4892,4893],{"class":797},"evlog:drain",[731,4895,969],{"class":741},[731,4897,930],{"class":741},[731,4899,1750],{"class":741},[731,4901,4902],{"class":1753},"ctx",[731,4904,1216],{"class":741},[731,4906,1759],{"class":921},[731,4908,745],{"class":741},[731,4910,4911],{"class":733,"line":1908},[731,4912,4913],{"class":1814},"    \u002F\u002F Sanitize before sending to external service\n",[731,4915,4916,4919,4921,4923,4925,4927,4929,4931,4933,4935,4937,4940,4942,4945,4947],{"class":733,"line":1914},[731,4917,4918],{"class":784},"    ctx",[731,4920,1184],{"class":741},[731,4922,1754],{"class":784},[731,4924,948],{"class":741},[731,4926,4595],{"class":836},[731,4928,839],{"class":848},[731,4930,4902],{"class":784},[731,4932,1184],{"class":741},[731,4934,1754],{"class":784},[731,4936,2878],{"class":848},[731,4938,4939],{"class":777},"as",[731,4941,4663],{"class":741},[731,4943,4944],{"class":784}," ctx",[731,4946,1184],{"class":741},[731,4948,4949],{"class":784},"event\n",[731,4951,4952,4954],{"class":733,"line":1922},[731,4953,1917],{"class":741},[731,4955,884],{"class":848},[731,4957,4958,4960],{"class":733,"line":2125},[731,4959,881],{"class":741},[731,4961,884],{"class":784},[721,4963,4965],{"className":723,"code":4964,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,4966,4967,4986,5044,5048,5068,5100,5130,5134,5158,5192,5208,5262,5266,5272,5276,5280,5300,5332,5336,5368,5374],{"__ignoreMap":727},[731,4968,4969,4971,4973,4976,4978,4980,4982,4984],{"class":733,"line":734},[731,4970,778],{"class":777},[731,4972,781],{"class":741},[731,4974,4975],{"class":784}," definePlugin",[731,4977,788],{"class":741},[731,4979,791],{"class":777},[731,4981,794],{"class":741},[731,4983,798],{"class":797},[731,4985,801],{"class":741},[731,4987,4988,4990,4992,4994,4996,4998,5000,5002,5004,5006,5008,5010,5012,5014,5016,5018,5020,5022,5024,5026,5028,5030,5032,5034,5036,5038,5040,5042],{"class":733,"line":748},[731,4989,1535],{"class":921},[731,4991,4529],{"class":784},[731,4993,1193],{"class":741},[731,4995,854],{"class":784},[731,4997,969],{"class":741},[731,4999,3215],{"class":797},[731,5001,969],{"class":741},[731,5003,930],{"class":741},[731,5005,794],{"class":741},[731,5007,3224],{"class":797},[731,5009,969],{"class":741},[731,5011,930],{"class":741},[731,5013,794],{"class":741},[731,5015,3233],{"class":797},[731,5017,969],{"class":741},[731,5019,930],{"class":741},[731,5021,794],{"class":741},[731,5023,4562],{"class":797},[731,5025,969],{"class":741},[731,5027,930],{"class":741},[731,5029,794],{"class":741},[731,5031,3251],{"class":797},[731,5033,969],{"class":741},[731,5035,930],{"class":741},[731,5037,794],{"class":741},[731,5039,4579],{"class":797},[731,5041,969],{"class":741},[731,5043,1223],{"class":784},[731,5045,5046],{"class":733,"line":763},[731,5047,824],{"emptyLinePlaceholder":823},[731,5049,5050,5052,5054,5056,5058,5060,5062,5064,5066],{"class":733,"line":827},[731,5051,4592],{"class":921},[731,5053,4595],{"class":836},[731,5055,839],{"class":741},[731,5057,4600],{"class":1753},[731,5059,742],{"class":741},[731,5061,3178],{"class":737},[731,5063,2821],{"class":741},[731,5065,3178],{"class":737},[731,5067,745],{"class":741},[731,5069,5070,5072,5074,5076,5078,5080,5082,5084,5086,5088,5090,5092,5094,5096,5098],{"class":733,"line":845},[731,5071,2867],{"class":777},[731,5073,1750],{"class":848},[731,5075,4619],{"class":784},[731,5077,1184],{"class":741},[731,5079,4624],{"class":836},[731,5081,839],{"class":848},[731,5083,4600],{"class":784},[731,5085,4631],{"class":848},[731,5087,2881],{"class":777},[731,5089,4636],{"class":784},[731,5091,1184],{"class":741},[731,5093,99],{"class":836},[731,5095,839],{"class":848},[731,5097,4645],{"class":784},[731,5099,884],{"class":848},[731,5101,5102,5104,5106,5108,5110,5112,5114,5116,5118,5120,5122,5124,5126,5128],{"class":733,"line":878},[731,5103,2867],{"class":777},[731,5105,1750],{"class":848},[731,5107,2872],{"class":741},[731,5109,4600],{"class":784},[731,5111,4660],{"class":741},[731,5113,4663],{"class":741},[731,5115,4636],{"class":784},[731,5117,4668],{"class":741},[731,5119,794],{"class":741},[731,5121,4673],{"class":797},[731,5123,969],{"class":741},[731,5125,2878],{"class":848},[731,5127,2881],{"class":777},[731,5129,4682],{"class":784},[731,5131,5132],{"class":733,"line":1806},[731,5133,824],{"emptyLinePlaceholder":823},[731,5135,5136,5138,5140,5142,5144,5146,5148,5150,5152,5154,5156],{"class":733,"line":1811},[731,5137,1766],{"class":921},[731,5139,3280],{"class":784},[731,5141,742],{"class":741},[731,5143,3168],{"class":737},[731,5145,3159],{"class":741},[731,5147,3173],{"class":737},[731,5149,930],{"class":741},[731,5151,3178],{"class":737},[731,5153,3270],{"class":741},[731,5155,948],{"class":741},[731,5157,4711],{"class":741},[731,5159,5160,5162,5164,5166,5168,5170,5172,5174,5176,5178,5180,5182,5184,5186,5188,5190],{"class":733,"line":1818},[731,5161,3299],{"class":777},[731,5163,1750],{"class":848},[731,5165,1535],{"class":921},[731,5167,854],{"class":741},[731,5169,3327],{"class":784},[731,5171,930],{"class":741},[731,5173,4728],{"class":784},[731,5175,2842],{"class":741},[731,5177,3309],{"class":741},[731,5179,4735],{"class":784},[731,5181,1184],{"class":741},[731,5183,4740],{"class":836},[731,5185,839],{"class":848},[731,5187,4600],{"class":784},[731,5189,4631],{"class":848},[731,5191,842],{"class":741},[731,5193,5194,5196,5198,5200,5202,5204,5206],{"class":733,"line":1824},[731,5195,4753],{"class":921},[731,5197,4756],{"class":784},[731,5199,948],{"class":741},[731,5201,3306],{"class":784},[731,5203,1184],{"class":741},[731,5205,4765],{"class":836},[731,5207,2208],{"class":848},[731,5209,5210,5212,5214,5216,5218,5220,5222,5224,5226,5228,5230,5232,5234,5236,5238,5240,5242,5244,5246,5248,5250,5252,5254,5256,5258,5260],{"class":733,"line":1829},[731,5211,4772],{"class":784},[731,5213,3347],{"class":848},[731,5215,3327],{"class":784},[731,5217,4779],{"class":848},[731,5219,1193],{"class":741},[731,5221,4784],{"class":784},[731,5223,1184],{"class":741},[731,5225,4789],{"class":836},[731,5227,839],{"class":848},[731,5229,4794],{"class":1753},[731,5231,1759],{"class":921},[731,5233,4756],{"class":784},[731,5235,1184],{"class":741},[731,5237,4803],{"class":836},[731,5239,839],{"class":848},[731,5241,4794],{"class":784},[731,5243,4631],{"class":848},[731,5245,4812],{"class":741},[731,5247,794],{"class":741},[731,5249,4817],{"class":797},[731,5251,969],{"class":741},[731,5253,4822],{"class":741},[731,5255,4595],{"class":836},[731,5257,839],{"class":848},[731,5259,4829],{"class":784},[731,5261,884],{"class":848},[731,5263,5264],{"class":733,"line":1835},[731,5265,3363],{"class":741},[731,5267,5268,5270],{"class":733,"line":1850},[731,5269,2329],{"class":777},[731,5271,3371],{"class":784},[731,5273,5274],{"class":733,"line":1860},[731,5275,766],{"class":741},[731,5277,5278],{"class":733,"line":1877},[731,5279,824],{"emptyLinePlaceholder":823},[731,5281,5282,5284,5286,5288,5290,5292,5294,5296,5298],{"class":733,"line":1902},[731,5283,830],{"class":777},[731,5285,833],{"class":777},[731,5287,4975],{"class":836},[731,5289,839],{"class":784},[731,5291,839],{"class":741},[731,5293,4865],{"class":1753},[731,5295,1216],{"class":741},[731,5297,1759],{"class":921},[731,5299,745],{"class":741},[731,5301,5302,5304,5306,5308,5310,5312,5314,5316,5318,5320,5322,5324,5326,5328,5330],{"class":733,"line":1908},[731,5303,4876],{"class":784},[731,5305,1184],{"class":741},[731,5307,4881],{"class":784},[731,5309,1184],{"class":741},[731,5311,4886],{"class":836},[731,5313,839],{"class":848},[731,5315,969],{"class":741},[731,5317,4893],{"class":797},[731,5319,969],{"class":741},[731,5321,930],{"class":741},[731,5323,1750],{"class":741},[731,5325,4902],{"class":1753},[731,5327,1216],{"class":741},[731,5329,1759],{"class":921},[731,5331,745],{"class":741},[731,5333,5334],{"class":733,"line":1914},[731,5335,4913],{"class":1814},[731,5337,5338,5340,5342,5344,5346,5348,5350,5352,5354,5356,5358,5360,5362,5364,5366],{"class":733,"line":1922},[731,5339,4918],{"class":784},[731,5341,1184],{"class":741},[731,5343,1754],{"class":784},[731,5345,948],{"class":741},[731,5347,4595],{"class":836},[731,5349,839],{"class":848},[731,5351,4902],{"class":784},[731,5353,1184],{"class":741},[731,5355,1754],{"class":784},[731,5357,2878],{"class":848},[731,5359,4939],{"class":777},[731,5361,4663],{"class":741},[731,5363,4944],{"class":784},[731,5365,1184],{"class":741},[731,5367,4949],{"class":784},[731,5369,5370,5372],{"class":733,"line":2125},[731,5371,1917],{"class":741},[731,5373,884],{"class":848},[731,5375,5376,5378],{"class":733,"line":2354},[731,5377,881],{"class":741},[731,5379,884],{"class":784},[721,5381,5383],{"className":723,"code":5382,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,5384,5385,5403,5407,5465,5469,5489,5521,5551,5555,5579,5613,5629,5683,5687,5693,5697,5729,5743,5760,5765,5798,5802],{"__ignoreMap":727},[731,5386,5387,5389,5391,5393,5395,5397,5399,5401],{"class":733,"line":734},[731,5388,778],{"class":777},[731,5390,781],{"class":741},[731,5392,899],{"class":784},[731,5394,788],{"class":741},[731,5396,791],{"class":777},[731,5398,794],{"class":741},[731,5400,908],{"class":797},[731,5402,801],{"class":741},[731,5404,5405],{"class":733,"line":748},[731,5406,824],{"emptyLinePlaceholder":823},[731,5408,5409,5411,5413,5415,5417,5419,5421,5423,5425,5427,5429,5431,5433,5435,5437,5439,5441,5443,5445,5447,5449,5451,5453,5455,5457,5459,5461,5463],{"class":733,"line":763},[731,5410,1535],{"class":921},[731,5412,4529],{"class":784},[731,5414,1193],{"class":741},[731,5416,854],{"class":784},[731,5418,969],{"class":741},[731,5420,3215],{"class":797},[731,5422,969],{"class":741},[731,5424,930],{"class":741},[731,5426,794],{"class":741},[731,5428,3224],{"class":797},[731,5430,969],{"class":741},[731,5432,930],{"class":741},[731,5434,794],{"class":741},[731,5436,3233],{"class":797},[731,5438,969],{"class":741},[731,5440,930],{"class":741},[731,5442,794],{"class":741},[731,5444,4562],{"class":797},[731,5446,969],{"class":741},[731,5448,930],{"class":741},[731,5450,794],{"class":741},[731,5452,3251],{"class":797},[731,5454,969],{"class":741},[731,5456,930],{"class":741},[731,5458,794],{"class":741},[731,5460,4579],{"class":797},[731,5462,969],{"class":741},[731,5464,1223],{"class":784},[731,5466,5467],{"class":733,"line":827},[731,5468,824],{"emptyLinePlaceholder":823},[731,5470,5471,5473,5475,5477,5479,5481,5483,5485,5487],{"class":733,"line":845},[731,5472,4592],{"class":921},[731,5474,4595],{"class":836},[731,5476,839],{"class":741},[731,5478,4600],{"class":1753},[731,5480,742],{"class":741},[731,5482,3178],{"class":737},[731,5484,2821],{"class":741},[731,5486,3178],{"class":737},[731,5488,745],{"class":741},[731,5490,5491,5493,5495,5497,5499,5501,5503,5505,5507,5509,5511,5513,5515,5517,5519],{"class":733,"line":878},[731,5492,2867],{"class":777},[731,5494,1750],{"class":848},[731,5496,4619],{"class":784},[731,5498,1184],{"class":741},[731,5500,4624],{"class":836},[731,5502,839],{"class":848},[731,5504,4600],{"class":784},[731,5506,4631],{"class":848},[731,5508,2881],{"class":777},[731,5510,4636],{"class":784},[731,5512,1184],{"class":741},[731,5514,99],{"class":836},[731,5516,839],{"class":848},[731,5518,4645],{"class":784},[731,5520,884],{"class":848},[731,5522,5523,5525,5527,5529,5531,5533,5535,5537,5539,5541,5543,5545,5547,5549],{"class":733,"line":1806},[731,5524,2867],{"class":777},[731,5526,1750],{"class":848},[731,5528,2872],{"class":741},[731,5530,4600],{"class":784},[731,5532,4660],{"class":741},[731,5534,4663],{"class":741},[731,5536,4636],{"class":784},[731,5538,4668],{"class":741},[731,5540,794],{"class":741},[731,5542,4673],{"class":797},[731,5544,969],{"class":741},[731,5546,2878],{"class":848},[731,5548,2881],{"class":777},[731,5550,4682],{"class":784},[731,5552,5553],{"class":733,"line":1811},[731,5554,824],{"emptyLinePlaceholder":823},[731,5556,5557,5559,5561,5563,5565,5567,5569,5571,5573,5575,5577],{"class":733,"line":1818},[731,5558,1766],{"class":921},[731,5560,3280],{"class":784},[731,5562,742],{"class":741},[731,5564,3168],{"class":737},[731,5566,3159],{"class":741},[731,5568,3173],{"class":737},[731,5570,930],{"class":741},[731,5572,3178],{"class":737},[731,5574,3270],{"class":741},[731,5576,948],{"class":741},[731,5578,4711],{"class":741},[731,5580,5581,5583,5585,5587,5589,5591,5593,5595,5597,5599,5601,5603,5605,5607,5609,5611],{"class":733,"line":1824},[731,5582,3299],{"class":777},[731,5584,1750],{"class":848},[731,5586,1535],{"class":921},[731,5588,854],{"class":741},[731,5590,3327],{"class":784},[731,5592,930],{"class":741},[731,5594,4728],{"class":784},[731,5596,2842],{"class":741},[731,5598,3309],{"class":741},[731,5600,4735],{"class":784},[731,5602,1184],{"class":741},[731,5604,4740],{"class":836},[731,5606,839],{"class":848},[731,5608,4600],{"class":784},[731,5610,4631],{"class":848},[731,5612,842],{"class":741},[731,5614,5615,5617,5619,5621,5623,5625,5627],{"class":733,"line":1829},[731,5616,4753],{"class":921},[731,5618,4756],{"class":784},[731,5620,948],{"class":741},[731,5622,3306],{"class":784},[731,5624,1184],{"class":741},[731,5626,4765],{"class":836},[731,5628,2208],{"class":848},[731,5630,5631,5633,5635,5637,5639,5641,5643,5645,5647,5649,5651,5653,5655,5657,5659,5661,5663,5665,5667,5669,5671,5673,5675,5677,5679,5681],{"class":733,"line":1835},[731,5632,4772],{"class":784},[731,5634,3347],{"class":848},[731,5636,3327],{"class":784},[731,5638,4779],{"class":848},[731,5640,1193],{"class":741},[731,5642,4784],{"class":784},[731,5644,1184],{"class":741},[731,5646,4789],{"class":836},[731,5648,839],{"class":848},[731,5650,4794],{"class":1753},[731,5652,1759],{"class":921},[731,5654,4756],{"class":784},[731,5656,1184],{"class":741},[731,5658,4803],{"class":836},[731,5660,839],{"class":848},[731,5662,4794],{"class":784},[731,5664,4631],{"class":848},[731,5666,4812],{"class":741},[731,5668,794],{"class":741},[731,5670,4817],{"class":797},[731,5672,969],{"class":741},[731,5674,4822],{"class":741},[731,5676,4595],{"class":836},[731,5678,839],{"class":848},[731,5680,4829],{"class":784},[731,5682,884],{"class":848},[731,5684,5685],{"class":733,"line":1850},[731,5686,3363],{"class":741},[731,5688,5689,5691],{"class":733,"line":1860},[731,5690,2329],{"class":777},[731,5692,3371],{"class":784},[731,5694,5695],{"class":733,"line":1877},[731,5696,766],{"class":741},[731,5698,5699,5701,5703,5705,5707,5709,5711,5713,5715,5717,5719,5721,5723,5725,5727],{"class":733,"line":1902},[731,5700,830],{"class":777},[731,5702,922],{"class":921},[731,5704,781],{"class":741},[731,5706,927],{"class":784},[731,5708,930],{"class":741},[731,5710,933],{"class":784},[731,5712,930],{"class":741},[731,5714,938],{"class":784},[731,5716,930],{"class":741},[731,5718,943],{"class":784},[731,5720,881],{"class":741},[731,5722,948],{"class":741},[731,5724,899],{"class":836},[731,5726,839],{"class":784},[731,5728,842],{"class":741},[731,5730,5731,5733,5735,5737,5739,5741],{"class":733,"line":1908},[731,5732,959],{"class":848},[731,5734,742],{"class":741},[731,5736,794],{"class":741},[731,5738,966],{"class":797},[731,5740,969],{"class":741},[731,5742,760],{"class":741},[731,5744,5745,5748,5750,5752,5754,5756,5758],{"class":733,"line":1914},[731,5746,5747],{"class":836},"  drain",[731,5749,742],{"class":741},[731,5751,1750],{"class":741},[731,5753,4902],{"class":1753},[731,5755,1216],{"class":741},[731,5757,1759],{"class":921},[731,5759,745],{"class":741},[731,5761,5762],{"class":733,"line":1922},[731,5763,5764],{"class":1814},"      \u002F\u002F Sanitize before sending to external service\n",[731,5766,5767,5770,5772,5774,5776,5778,5780,5782,5784,5786,5788,5790,5792,5794,5796],{"class":733,"line":2125},[731,5768,5769],{"class":784},"      ctx",[731,5771,1184],{"class":741},[731,5773,1754],{"class":784},[731,5775,948],{"class":741},[731,5777,4595],{"class":836},[731,5779,839],{"class":848},[731,5781,4902],{"class":784},[731,5783,1184],{"class":741},[731,5785,1754],{"class":784},[731,5787,2878],{"class":848},[731,5789,4939],{"class":777},[731,5791,4663],{"class":741},[731,5793,4944],{"class":784},[731,5795,1184],{"class":741},[731,5797,4949],{"class":784},[731,5799,5800],{"class":733,"line":2354},[731,5801,1911],{"class":741},[731,5803,5804,5806],{"class":733,"line":3184},[731,5805,881],{"class":741},[731,5807,884],{"class":784},[721,5809,5811],{"className":723,"code":5810,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,5812,5813,5831,5835,5893,5897,5917,5949,5979,5983,6007,6041,6057,6111,6115,6121,6125,6149,6165,6169,6201,6205],{"__ignoreMap":727},[731,5814,5815,5817,5819,5821,5823,5825,5827,5829],{"class":733,"line":734},[731,5816,778],{"class":777},[731,5818,781],{"class":741},[731,5820,1002],{"class":784},[731,5822,788],{"class":741},[731,5824,791],{"class":777},[731,5826,794],{"class":741},[731,5828,1011],{"class":797},[731,5830,801],{"class":741},[731,5832,5833],{"class":733,"line":748},[731,5834,824],{"emptyLinePlaceholder":823},[731,5836,5837,5839,5841,5843,5845,5847,5849,5851,5853,5855,5857,5859,5861,5863,5865,5867,5869,5871,5873,5875,5877,5879,5881,5883,5885,5887,5889,5891],{"class":733,"line":763},[731,5838,1535],{"class":921},[731,5840,4529],{"class":784},[731,5842,1193],{"class":741},[731,5844,854],{"class":784},[731,5846,969],{"class":741},[731,5848,3215],{"class":797},[731,5850,969],{"class":741},[731,5852,930],{"class":741},[731,5854,794],{"class":741},[731,5856,3224],{"class":797},[731,5858,969],{"class":741},[731,5860,930],{"class":741},[731,5862,794],{"class":741},[731,5864,3233],{"class":797},[731,5866,969],{"class":741},[731,5868,930],{"class":741},[731,5870,794],{"class":741},[731,5872,4562],{"class":797},[731,5874,969],{"class":741},[731,5876,930],{"class":741},[731,5878,794],{"class":741},[731,5880,3251],{"class":797},[731,5882,969],{"class":741},[731,5884,930],{"class":741},[731,5886,794],{"class":741},[731,5888,4579],{"class":797},[731,5890,969],{"class":741},[731,5892,1223],{"class":784},[731,5894,5895],{"class":733,"line":827},[731,5896,824],{"emptyLinePlaceholder":823},[731,5898,5899,5901,5903,5905,5907,5909,5911,5913,5915],{"class":733,"line":845},[731,5900,4592],{"class":921},[731,5902,4595],{"class":836},[731,5904,839],{"class":741},[731,5906,4600],{"class":1753},[731,5908,742],{"class":741},[731,5910,3178],{"class":737},[731,5912,2821],{"class":741},[731,5914,3178],{"class":737},[731,5916,745],{"class":741},[731,5918,5919,5921,5923,5925,5927,5929,5931,5933,5935,5937,5939,5941,5943,5945,5947],{"class":733,"line":878},[731,5920,2867],{"class":777},[731,5922,1750],{"class":848},[731,5924,4619],{"class":784},[731,5926,1184],{"class":741},[731,5928,4624],{"class":836},[731,5930,839],{"class":848},[731,5932,4600],{"class":784},[731,5934,4631],{"class":848},[731,5936,2881],{"class":777},[731,5938,4636],{"class":784},[731,5940,1184],{"class":741},[731,5942,99],{"class":836},[731,5944,839],{"class":848},[731,5946,4645],{"class":784},[731,5948,884],{"class":848},[731,5950,5951,5953,5955,5957,5959,5961,5963,5965,5967,5969,5971,5973,5975,5977],{"class":733,"line":1806},[731,5952,2867],{"class":777},[731,5954,1750],{"class":848},[731,5956,2872],{"class":741},[731,5958,4600],{"class":784},[731,5960,4660],{"class":741},[731,5962,4663],{"class":741},[731,5964,4636],{"class":784},[731,5966,4668],{"class":741},[731,5968,794],{"class":741},[731,5970,4673],{"class":797},[731,5972,969],{"class":741},[731,5974,2878],{"class":848},[731,5976,2881],{"class":777},[731,5978,4682],{"class":784},[731,5980,5981],{"class":733,"line":1811},[731,5982,824],{"emptyLinePlaceholder":823},[731,5984,5985,5987,5989,5991,5993,5995,5997,5999,6001,6003,6005],{"class":733,"line":1818},[731,5986,1766],{"class":921},[731,5988,3280],{"class":784},[731,5990,742],{"class":741},[731,5992,3168],{"class":737},[731,5994,3159],{"class":741},[731,5996,3173],{"class":737},[731,5998,930],{"class":741},[731,6000,3178],{"class":737},[731,6002,3270],{"class":741},[731,6004,948],{"class":741},[731,6006,4711],{"class":741},[731,6008,6009,6011,6013,6015,6017,6019,6021,6023,6025,6027,6029,6031,6033,6035,6037,6039],{"class":733,"line":1824},[731,6010,3299],{"class":777},[731,6012,1750],{"class":848},[731,6014,1535],{"class":921},[731,6016,854],{"class":741},[731,6018,3327],{"class":784},[731,6020,930],{"class":741},[731,6022,4728],{"class":784},[731,6024,2842],{"class":741},[731,6026,3309],{"class":741},[731,6028,4735],{"class":784},[731,6030,1184],{"class":741},[731,6032,4740],{"class":836},[731,6034,839],{"class":848},[731,6036,4600],{"class":784},[731,6038,4631],{"class":848},[731,6040,842],{"class":741},[731,6042,6043,6045,6047,6049,6051,6053,6055],{"class":733,"line":1829},[731,6044,4753],{"class":921},[731,6046,4756],{"class":784},[731,6048,948],{"class":741},[731,6050,3306],{"class":784},[731,6052,1184],{"class":741},[731,6054,4765],{"class":836},[731,6056,2208],{"class":848},[731,6058,6059,6061,6063,6065,6067,6069,6071,6073,6075,6077,6079,6081,6083,6085,6087,6089,6091,6093,6095,6097,6099,6101,6103,6105,6107,6109],{"class":733,"line":1835},[731,6060,4772],{"class":784},[731,6062,3347],{"class":848},[731,6064,3327],{"class":784},[731,6066,4779],{"class":848},[731,6068,1193],{"class":741},[731,6070,4784],{"class":784},[731,6072,1184],{"class":741},[731,6074,4789],{"class":836},[731,6076,839],{"class":848},[731,6078,4794],{"class":1753},[731,6080,1759],{"class":921},[731,6082,4756],{"class":784},[731,6084,1184],{"class":741},[731,6086,4803],{"class":836},[731,6088,839],{"class":848},[731,6090,4794],{"class":784},[731,6092,4631],{"class":848},[731,6094,4812],{"class":741},[731,6096,794],{"class":741},[731,6098,4817],{"class":797},[731,6100,969],{"class":741},[731,6102,4822],{"class":741},[731,6104,4595],{"class":836},[731,6106,839],{"class":848},[731,6108,4829],{"class":784},[731,6110,884],{"class":848},[731,6112,6113],{"class":733,"line":1850},[731,6114,3363],{"class":741},[731,6116,6117,6119],{"class":733,"line":1860},[731,6118,2329],{"class":777},[731,6120,3371],{"class":784},[731,6122,6123],{"class":733,"line":1877},[731,6124,766],{"class":741},[731,6126,6127,6129,6131,6133,6135,6137,6139,6141,6143,6145,6147],{"class":733,"line":1902},[731,6128,830],{"class":777},[731,6130,922],{"class":921},[731,6132,781],{"class":741},[731,6134,1028],{"class":784},[731,6136,930],{"class":741},[731,6138,1033],{"class":784},[731,6140,881],{"class":741},[731,6142,948],{"class":741},[731,6144,1002],{"class":836},[731,6146,839],{"class":784},[731,6148,842],{"class":741},[731,6150,6151,6153,6155,6157,6159,6161,6163],{"class":733,"line":1908},[731,6152,5747],{"class":836},[731,6154,742],{"class":741},[731,6156,1750],{"class":741},[731,6158,4902],{"class":1753},[731,6160,1216],{"class":741},[731,6162,1759],{"class":921},[731,6164,745],{"class":741},[731,6166,6167],{"class":733,"line":1914},[731,6168,5764],{"class":1814},[731,6170,6171,6173,6175,6177,6179,6181,6183,6185,6187,6189,6191,6193,6195,6197,6199],{"class":733,"line":1922},[731,6172,5769],{"class":784},[731,6174,1184],{"class":741},[731,6176,1754],{"class":784},[731,6178,948],{"class":741},[731,6180,4595],{"class":836},[731,6182,839],{"class":848},[731,6184,4902],{"class":784},[731,6186,1184],{"class":741},[731,6188,1754],{"class":784},[731,6190,2878],{"class":848},[731,6192,4939],{"class":777},[731,6194,4663],{"class":741},[731,6196,4944],{"class":784},[731,6198,1184],{"class":741},[731,6200,4949],{"class":784},[731,6202,6203],{"class":733,"line":2125},[731,6204,1911],{"class":741},[731,6206,6207,6209],{"class":733,"line":2354},[731,6208,881],{"class":741},[731,6210,884],{"class":784},[721,6212,6214],{"className":723,"code":6213,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,6215,6216,6234,6238,6296,6300,6320,6352,6382,6386,6410,6444,6460,6514,6518,6524,6528,6532,6552,6584,6588,6620,6626],{"__ignoreMap":727},[731,6217,6218,6220,6222,6224,6226,6228,6230,6232],{"class":733,"line":734},[731,6219,778],{"class":777},[731,6221,781],{"class":741},[731,6223,4975],{"class":784},[731,6225,788],{"class":741},[731,6227,791],{"class":777},[731,6229,794],{"class":741},[731,6231,798],{"class":797},[731,6233,801],{"class":741},[731,6235,6236],{"class":733,"line":748},[731,6237,824],{"emptyLinePlaceholder":823},[731,6239,6240,6242,6244,6246,6248,6250,6252,6254,6256,6258,6260,6262,6264,6266,6268,6270,6272,6274,6276,6278,6280,6282,6284,6286,6288,6290,6292,6294],{"class":733,"line":763},[731,6241,1535],{"class":921},[731,6243,4529],{"class":784},[731,6245,1193],{"class":741},[731,6247,854],{"class":784},[731,6249,969],{"class":741},[731,6251,3215],{"class":797},[731,6253,969],{"class":741},[731,6255,930],{"class":741},[731,6257,794],{"class":741},[731,6259,3224],{"class":797},[731,6261,969],{"class":741},[731,6263,930],{"class":741},[731,6265,794],{"class":741},[731,6267,3233],{"class":797},[731,6269,969],{"class":741},[731,6271,930],{"class":741},[731,6273,794],{"class":741},[731,6275,4562],{"class":797},[731,6277,969],{"class":741},[731,6279,930],{"class":741},[731,6281,794],{"class":741},[731,6283,3251],{"class":797},[731,6285,969],{"class":741},[731,6287,930],{"class":741},[731,6289,794],{"class":741},[731,6291,4579],{"class":797},[731,6293,969],{"class":741},[731,6295,1223],{"class":784},[731,6297,6298],{"class":733,"line":827},[731,6299,824],{"emptyLinePlaceholder":823},[731,6301,6302,6304,6306,6308,6310,6312,6314,6316,6318],{"class":733,"line":845},[731,6303,4592],{"class":921},[731,6305,4595],{"class":836},[731,6307,839],{"class":741},[731,6309,4600],{"class":1753},[731,6311,742],{"class":741},[731,6313,3178],{"class":737},[731,6315,2821],{"class":741},[731,6317,3178],{"class":737},[731,6319,745],{"class":741},[731,6321,6322,6324,6326,6328,6330,6332,6334,6336,6338,6340,6342,6344,6346,6348,6350],{"class":733,"line":878},[731,6323,2867],{"class":777},[731,6325,1750],{"class":848},[731,6327,4619],{"class":784},[731,6329,1184],{"class":741},[731,6331,4624],{"class":836},[731,6333,839],{"class":848},[731,6335,4600],{"class":784},[731,6337,4631],{"class":848},[731,6339,2881],{"class":777},[731,6341,4636],{"class":784},[731,6343,1184],{"class":741},[731,6345,99],{"class":836},[731,6347,839],{"class":848},[731,6349,4645],{"class":784},[731,6351,884],{"class":848},[731,6353,6354,6356,6358,6360,6362,6364,6366,6368,6370,6372,6374,6376,6378,6380],{"class":733,"line":1806},[731,6355,2867],{"class":777},[731,6357,1750],{"class":848},[731,6359,2872],{"class":741},[731,6361,4600],{"class":784},[731,6363,4660],{"class":741},[731,6365,4663],{"class":741},[731,6367,4636],{"class":784},[731,6369,4668],{"class":741},[731,6371,794],{"class":741},[731,6373,4673],{"class":797},[731,6375,969],{"class":741},[731,6377,2878],{"class":848},[731,6379,2881],{"class":777},[731,6381,4682],{"class":784},[731,6383,6384],{"class":733,"line":1811},[731,6385,824],{"emptyLinePlaceholder":823},[731,6387,6388,6390,6392,6394,6396,6398,6400,6402,6404,6406,6408],{"class":733,"line":1818},[731,6389,1766],{"class":921},[731,6391,3280],{"class":784},[731,6393,742],{"class":741},[731,6395,3168],{"class":737},[731,6397,3159],{"class":741},[731,6399,3173],{"class":737},[731,6401,930],{"class":741},[731,6403,3178],{"class":737},[731,6405,3270],{"class":741},[731,6407,948],{"class":741},[731,6409,4711],{"class":741},[731,6411,6412,6414,6416,6418,6420,6422,6424,6426,6428,6430,6432,6434,6436,6438,6440,6442],{"class":733,"line":1824},[731,6413,3299],{"class":777},[731,6415,1750],{"class":848},[731,6417,1535],{"class":921},[731,6419,854],{"class":741},[731,6421,3327],{"class":784},[731,6423,930],{"class":741},[731,6425,4728],{"class":784},[731,6427,2842],{"class":741},[731,6429,3309],{"class":741},[731,6431,4735],{"class":784},[731,6433,1184],{"class":741},[731,6435,4740],{"class":836},[731,6437,839],{"class":848},[731,6439,4600],{"class":784},[731,6441,4631],{"class":848},[731,6443,842],{"class":741},[731,6445,6446,6448,6450,6452,6454,6456,6458],{"class":733,"line":1829},[731,6447,4753],{"class":921},[731,6449,4756],{"class":784},[731,6451,948],{"class":741},[731,6453,3306],{"class":784},[731,6455,1184],{"class":741},[731,6457,4765],{"class":836},[731,6459,2208],{"class":848},[731,6461,6462,6464,6466,6468,6470,6472,6474,6476,6478,6480,6482,6484,6486,6488,6490,6492,6494,6496,6498,6500,6502,6504,6506,6508,6510,6512],{"class":733,"line":1835},[731,6463,4772],{"class":784},[731,6465,3347],{"class":848},[731,6467,3327],{"class":784},[731,6469,4779],{"class":848},[731,6471,1193],{"class":741},[731,6473,4784],{"class":784},[731,6475,1184],{"class":741},[731,6477,4789],{"class":836},[731,6479,839],{"class":848},[731,6481,4794],{"class":1753},[731,6483,1759],{"class":921},[731,6485,4756],{"class":784},[731,6487,1184],{"class":741},[731,6489,4803],{"class":836},[731,6491,839],{"class":848},[731,6493,4794],{"class":784},[731,6495,4631],{"class":848},[731,6497,4812],{"class":741},[731,6499,794],{"class":741},[731,6501,4817],{"class":797},[731,6503,969],{"class":741},[731,6505,4822],{"class":741},[731,6507,4595],{"class":836},[731,6509,839],{"class":848},[731,6511,4829],{"class":784},[731,6513,884],{"class":848},[731,6515,6516],{"class":733,"line":1850},[731,6517,3363],{"class":741},[731,6519,6520,6522],{"class":733,"line":1860},[731,6521,2329],{"class":777},[731,6523,3371],{"class":784},[731,6525,6526],{"class":733,"line":1877},[731,6527,766],{"class":741},[731,6529,6530],{"class":733,"line":1902},[731,6531,824],{"emptyLinePlaceholder":823},[731,6533,6534,6536,6538,6540,6542,6544,6546,6548,6550],{"class":733,"line":1908},[731,6535,830],{"class":777},[731,6537,833],{"class":777},[731,6539,4975],{"class":836},[731,6541,839],{"class":784},[731,6543,839],{"class":741},[731,6545,4865],{"class":1753},[731,6547,1216],{"class":741},[731,6549,1759],{"class":921},[731,6551,745],{"class":741},[731,6553,6554,6556,6558,6560,6562,6564,6566,6568,6570,6572,6574,6576,6578,6580,6582],{"class":733,"line":1914},[731,6555,4876],{"class":784},[731,6557,1184],{"class":741},[731,6559,4881],{"class":784},[731,6561,1184],{"class":741},[731,6563,4886],{"class":836},[731,6565,839],{"class":848},[731,6567,969],{"class":741},[731,6569,4893],{"class":797},[731,6571,969],{"class":741},[731,6573,930],{"class":741},[731,6575,1750],{"class":741},[731,6577,4902],{"class":1753},[731,6579,1216],{"class":741},[731,6581,1759],{"class":921},[731,6583,745],{"class":741},[731,6585,6586],{"class":733,"line":1922},[731,6587,4913],{"class":1814},[731,6589,6590,6592,6594,6596,6598,6600,6602,6604,6606,6608,6610,6612,6614,6616,6618],{"class":733,"line":2125},[731,6591,4918],{"class":784},[731,6593,1184],{"class":741},[731,6595,1754],{"class":784},[731,6597,948],{"class":741},[731,6599,4595],{"class":836},[731,6601,839],{"class":848},[731,6603,4902],{"class":784},[731,6605,1184],{"class":741},[731,6607,1754],{"class":784},[731,6609,2878],{"class":848},[731,6611,4939],{"class":777},[731,6613,4663],{"class":741},[731,6615,4944],{"class":784},[731,6617,1184],{"class":741},[731,6619,4949],{"class":784},[731,6621,6622,6624],{"class":733,"line":2354},[731,6623,1917],{"class":741},[731,6625,884],{"class":848},[731,6627,6628,6630],{"class":733,"line":3184},[731,6629,881],{"class":741},[731,6631,884],{"class":784},[721,6633,6635],{"className":723,"code":6634,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,6636,6637,6655,6659,6717,6721,6741,6773,6803,6807,6831,6865,6881,6935,6939,6945,6949,6971,6979,6996,7001,7034,7039,7048],{"__ignoreMap":727},[731,6638,6639,6641,6643,6645,6647,6649,6651,6653],{"class":733,"line":734},[731,6640,778],{"class":777},[731,6642,781],{"class":741},[731,6644,1152],{"class":784},[731,6646,788],{"class":741},[731,6648,791],{"class":777},[731,6650,794],{"class":741},[731,6652,1161],{"class":797},[731,6654,801],{"class":741},[731,6656,6657],{"class":733,"line":748},[731,6658,824],{"emptyLinePlaceholder":823},[731,6660,6661,6663,6665,6667,6669,6671,6673,6675,6677,6679,6681,6683,6685,6687,6689,6691,6693,6695,6697,6699,6701,6703,6705,6707,6709,6711,6713,6715],{"class":733,"line":763},[731,6662,1535],{"class":921},[731,6664,4529],{"class":784},[731,6666,1193],{"class":741},[731,6668,854],{"class":784},[731,6670,969],{"class":741},[731,6672,3215],{"class":797},[731,6674,969],{"class":741},[731,6676,930],{"class":741},[731,6678,794],{"class":741},[731,6680,3224],{"class":797},[731,6682,969],{"class":741},[731,6684,930],{"class":741},[731,6686,794],{"class":741},[731,6688,3233],{"class":797},[731,6690,969],{"class":741},[731,6692,930],{"class":741},[731,6694,794],{"class":741},[731,6696,4562],{"class":797},[731,6698,969],{"class":741},[731,6700,930],{"class":741},[731,6702,794],{"class":741},[731,6704,3251],{"class":797},[731,6706,969],{"class":741},[731,6708,930],{"class":741},[731,6710,794],{"class":741},[731,6712,4579],{"class":797},[731,6714,969],{"class":741},[731,6716,1223],{"class":784},[731,6718,6719],{"class":733,"line":827},[731,6720,824],{"emptyLinePlaceholder":823},[731,6722,6723,6725,6727,6729,6731,6733,6735,6737,6739],{"class":733,"line":845},[731,6724,4592],{"class":921},[731,6726,4595],{"class":836},[731,6728,839],{"class":741},[731,6730,4600],{"class":1753},[731,6732,742],{"class":741},[731,6734,3178],{"class":737},[731,6736,2821],{"class":741},[731,6738,3178],{"class":737},[731,6740,745],{"class":741},[731,6742,6743,6745,6747,6749,6751,6753,6755,6757,6759,6761,6763,6765,6767,6769,6771],{"class":733,"line":878},[731,6744,2867],{"class":777},[731,6746,1750],{"class":848},[731,6748,4619],{"class":784},[731,6750,1184],{"class":741},[731,6752,4624],{"class":836},[731,6754,839],{"class":848},[731,6756,4600],{"class":784},[731,6758,4631],{"class":848},[731,6760,2881],{"class":777},[731,6762,4636],{"class":784},[731,6764,1184],{"class":741},[731,6766,99],{"class":836},[731,6768,839],{"class":848},[731,6770,4645],{"class":784},[731,6772,884],{"class":848},[731,6774,6775,6777,6779,6781,6783,6785,6787,6789,6791,6793,6795,6797,6799,6801],{"class":733,"line":1806},[731,6776,2867],{"class":777},[731,6778,1750],{"class":848},[731,6780,2872],{"class":741},[731,6782,4600],{"class":784},[731,6784,4660],{"class":741},[731,6786,4663],{"class":741},[731,6788,4636],{"class":784},[731,6790,4668],{"class":741},[731,6792,794],{"class":741},[731,6794,4673],{"class":797},[731,6796,969],{"class":741},[731,6798,2878],{"class":848},[731,6800,2881],{"class":777},[731,6802,4682],{"class":784},[731,6804,6805],{"class":733,"line":1811},[731,6806,824],{"emptyLinePlaceholder":823},[731,6808,6809,6811,6813,6815,6817,6819,6821,6823,6825,6827,6829],{"class":733,"line":1818},[731,6810,1766],{"class":921},[731,6812,3280],{"class":784},[731,6814,742],{"class":741},[731,6816,3168],{"class":737},[731,6818,3159],{"class":741},[731,6820,3173],{"class":737},[731,6822,930],{"class":741},[731,6824,3178],{"class":737},[731,6826,3270],{"class":741},[731,6828,948],{"class":741},[731,6830,4711],{"class":741},[731,6832,6833,6835,6837,6839,6841,6843,6845,6847,6849,6851,6853,6855,6857,6859,6861,6863],{"class":733,"line":1824},[731,6834,3299],{"class":777},[731,6836,1750],{"class":848},[731,6838,1535],{"class":921},[731,6840,854],{"class":741},[731,6842,3327],{"class":784},[731,6844,930],{"class":741},[731,6846,4728],{"class":784},[731,6848,2842],{"class":741},[731,6850,3309],{"class":741},[731,6852,4735],{"class":784},[731,6854,1184],{"class":741},[731,6856,4740],{"class":836},[731,6858,839],{"class":848},[731,6860,4600],{"class":784},[731,6862,4631],{"class":848},[731,6864,842],{"class":741},[731,6866,6867,6869,6871,6873,6875,6877,6879],{"class":733,"line":1829},[731,6868,4753],{"class":921},[731,6870,4756],{"class":784},[731,6872,948],{"class":741},[731,6874,3306],{"class":784},[731,6876,1184],{"class":741},[731,6878,4765],{"class":836},[731,6880,2208],{"class":848},[731,6882,6883,6885,6887,6889,6891,6893,6895,6897,6899,6901,6903,6905,6907,6909,6911,6913,6915,6917,6919,6921,6923,6925,6927,6929,6931,6933],{"class":733,"line":1835},[731,6884,4772],{"class":784},[731,6886,3347],{"class":848},[731,6888,3327],{"class":784},[731,6890,4779],{"class":848},[731,6892,1193],{"class":741},[731,6894,4784],{"class":784},[731,6896,1184],{"class":741},[731,6898,4789],{"class":836},[731,6900,839],{"class":848},[731,6902,4794],{"class":1753},[731,6904,1759],{"class":921},[731,6906,4756],{"class":784},[731,6908,1184],{"class":741},[731,6910,4803],{"class":836},[731,6912,839],{"class":848},[731,6914,4794],{"class":784},[731,6916,4631],{"class":848},[731,6918,4812],{"class":741},[731,6920,794],{"class":741},[731,6922,4817],{"class":797},[731,6924,969],{"class":741},[731,6926,4822],{"class":741},[731,6928,4595],{"class":836},[731,6930,839],{"class":848},[731,6932,4829],{"class":784},[731,6934,884],{"class":848},[731,6936,6937],{"class":733,"line":1850},[731,6938,3363],{"class":741},[731,6940,6941,6943],{"class":733,"line":1860},[731,6942,2329],{"class":777},[731,6944,3371],{"class":784},[731,6946,6947],{"class":733,"line":1877},[731,6948,766],{"class":741},[731,6950,6951,6953,6955,6957,6959,6961,6963,6965,6967,6969],{"class":733,"line":1902},[731,6952,830],{"class":777},[731,6954,922],{"class":921},[731,6956,1176],{"class":784},[731,6958,742],{"class":741},[731,6960,1181],{"class":737},[731,6962,1184],{"class":741},[731,6964,1187],{"class":737},[731,6966,1190],{"class":784},[731,6968,1193],{"class":741},[731,6970,1196],{"class":784},[731,6972,6973,6975,6977],{"class":733,"line":1908},[731,6974,1201],{"class":836},[731,6976,839],{"class":784},[731,6978,842],{"class":741},[731,6980,6981,6984,6986,6988,6990,6992,6994],{"class":733,"line":1914},[731,6982,6983],{"class":836},"      drain",[731,6985,742],{"class":741},[731,6987,1750],{"class":741},[731,6989,4902],{"class":1753},[731,6991,1216],{"class":741},[731,6993,1759],{"class":921},[731,6995,745],{"class":741},[731,6997,6998],{"class":733,"line":1922},[731,6999,7000],{"class":1814},"          \u002F\u002F Sanitize before sending to external service\n",[731,7002,7003,7006,7008,7010,7012,7014,7016,7018,7020,7022,7024,7026,7028,7030,7032],{"class":733,"line":2125},[731,7004,7005],{"class":784},"          ctx",[731,7007,1184],{"class":741},[731,7009,1754],{"class":784},[731,7011,948],{"class":741},[731,7013,4595],{"class":836},[731,7015,839],{"class":848},[731,7017,4902],{"class":784},[731,7019,1184],{"class":741},[731,7021,1754],{"class":784},[731,7023,2878],{"class":848},[731,7025,4939],{"class":777},[731,7027,4663],{"class":741},[731,7029,4944],{"class":784},[731,7031,1184],{"class":741},[731,7033,4949],{"class":784},[731,7035,7036],{"class":733,"line":2354},[731,7037,7038],{"class":741},"        },\n",[731,7040,7041,7044,7046],{"class":733,"line":3184},[731,7042,7043],{"class":741},"    }",[731,7045,1216],{"class":784},[731,7047,760],{"class":741},[731,7049,7050],{"class":733,"line":3197},[731,7051,1223],{"class":784},[721,7053,7055],{"className":723,"code":7054,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,7056,7057,7075,7079,7137,7141,7161,7193,7223,7227,7251,7285,7301,7355,7359,7365,7369,7385,7401,7405,7437,7441],{"__ignoreMap":727},[731,7058,7059,7061,7063,7065,7067,7069,7071,7073],{"class":733,"line":734},[731,7060,778],{"class":777},[731,7062,781],{"class":741},[731,7064,1152],{"class":784},[731,7066,788],{"class":741},[731,7068,791],{"class":777},[731,7070,794],{"class":741},[731,7072,1246],{"class":797},[731,7074,801],{"class":741},[731,7076,7077],{"class":733,"line":748},[731,7078,824],{"emptyLinePlaceholder":823},[731,7080,7081,7083,7085,7087,7089,7091,7093,7095,7097,7099,7101,7103,7105,7107,7109,7111,7113,7115,7117,7119,7121,7123,7125,7127,7129,7131,7133,7135],{"class":733,"line":763},[731,7082,1535],{"class":921},[731,7084,4529],{"class":784},[731,7086,1193],{"class":741},[731,7088,854],{"class":784},[731,7090,969],{"class":741},[731,7092,3215],{"class":797},[731,7094,969],{"class":741},[731,7096,930],{"class":741},[731,7098,794],{"class":741},[731,7100,3224],{"class":797},[731,7102,969],{"class":741},[731,7104,930],{"class":741},[731,7106,794],{"class":741},[731,7108,3233],{"class":797},[731,7110,969],{"class":741},[731,7112,930],{"class":741},[731,7114,794],{"class":741},[731,7116,4562],{"class":797},[731,7118,969],{"class":741},[731,7120,930],{"class":741},[731,7122,794],{"class":741},[731,7124,3251],{"class":797},[731,7126,969],{"class":741},[731,7128,930],{"class":741},[731,7130,794],{"class":741},[731,7132,4579],{"class":797},[731,7134,969],{"class":741},[731,7136,1223],{"class":784},[731,7138,7139],{"class":733,"line":827},[731,7140,824],{"emptyLinePlaceholder":823},[731,7142,7143,7145,7147,7149,7151,7153,7155,7157,7159],{"class":733,"line":845},[731,7144,4592],{"class":921},[731,7146,4595],{"class":836},[731,7148,839],{"class":741},[731,7150,4600],{"class":1753},[731,7152,742],{"class":741},[731,7154,3178],{"class":737},[731,7156,2821],{"class":741},[731,7158,3178],{"class":737},[731,7160,745],{"class":741},[731,7162,7163,7165,7167,7169,7171,7173,7175,7177,7179,7181,7183,7185,7187,7189,7191],{"class":733,"line":878},[731,7164,2867],{"class":777},[731,7166,1750],{"class":848},[731,7168,4619],{"class":784},[731,7170,1184],{"class":741},[731,7172,4624],{"class":836},[731,7174,839],{"class":848},[731,7176,4600],{"class":784},[731,7178,4631],{"class":848},[731,7180,2881],{"class":777},[731,7182,4636],{"class":784},[731,7184,1184],{"class":741},[731,7186,99],{"class":836},[731,7188,839],{"class":848},[731,7190,4645],{"class":784},[731,7192,884],{"class":848},[731,7194,7195,7197,7199,7201,7203,7205,7207,7209,7211,7213,7215,7217,7219,7221],{"class":733,"line":1806},[731,7196,2867],{"class":777},[731,7198,1750],{"class":848},[731,7200,2872],{"class":741},[731,7202,4600],{"class":784},[731,7204,4660],{"class":741},[731,7206,4663],{"class":741},[731,7208,4636],{"class":784},[731,7210,4668],{"class":741},[731,7212,794],{"class":741},[731,7214,4673],{"class":797},[731,7216,969],{"class":741},[731,7218,2878],{"class":848},[731,7220,2881],{"class":777},[731,7222,4682],{"class":784},[731,7224,7225],{"class":733,"line":1811},[731,7226,824],{"emptyLinePlaceholder":823},[731,7228,7229,7231,7233,7235,7237,7239,7241,7243,7245,7247,7249],{"class":733,"line":1818},[731,7230,1766],{"class":921},[731,7232,3280],{"class":784},[731,7234,742],{"class":741},[731,7236,3168],{"class":737},[731,7238,3159],{"class":741},[731,7240,3173],{"class":737},[731,7242,930],{"class":741},[731,7244,3178],{"class":737},[731,7246,3270],{"class":741},[731,7248,948],{"class":741},[731,7250,4711],{"class":741},[731,7252,7253,7255,7257,7259,7261,7263,7265,7267,7269,7271,7273,7275,7277,7279,7281,7283],{"class":733,"line":1824},[731,7254,3299],{"class":777},[731,7256,1750],{"class":848},[731,7258,1535],{"class":921},[731,7260,854],{"class":741},[731,7262,3327],{"class":784},[731,7264,930],{"class":741},[731,7266,4728],{"class":784},[731,7268,2842],{"class":741},[731,7270,3309],{"class":741},[731,7272,4735],{"class":784},[731,7274,1184],{"class":741},[731,7276,4740],{"class":836},[731,7278,839],{"class":848},[731,7280,4600],{"class":784},[731,7282,4631],{"class":848},[731,7284,842],{"class":741},[731,7286,7287,7289,7291,7293,7295,7297,7299],{"class":733,"line":1829},[731,7288,4753],{"class":921},[731,7290,4756],{"class":784},[731,7292,948],{"class":741},[731,7294,3306],{"class":784},[731,7296,1184],{"class":741},[731,7298,4765],{"class":836},[731,7300,2208],{"class":848},[731,7302,7303,7305,7307,7309,7311,7313,7315,7317,7319,7321,7323,7325,7327,7329,7331,7333,7335,7337,7339,7341,7343,7345,7347,7349,7351,7353],{"class":733,"line":1835},[731,7304,4772],{"class":784},[731,7306,3347],{"class":848},[731,7308,3327],{"class":784},[731,7310,4779],{"class":848},[731,7312,1193],{"class":741},[731,7314,4784],{"class":784},[731,7316,1184],{"class":741},[731,7318,4789],{"class":836},[731,7320,839],{"class":848},[731,7322,4794],{"class":1753},[731,7324,1759],{"class":921},[731,7326,4756],{"class":784},[731,7328,1184],{"class":741},[731,7330,4803],{"class":836},[731,7332,839],{"class":848},[731,7334,4794],{"class":784},[731,7336,4631],{"class":848},[731,7338,4812],{"class":741},[731,7340,794],{"class":741},[731,7342,4817],{"class":797},[731,7344,969],{"class":741},[731,7346,4822],{"class":741},[731,7348,4595],{"class":836},[731,7350,839],{"class":848},[731,7352,4829],{"class":784},[731,7354,884],{"class":848},[731,7356,7357],{"class":733,"line":1850},[731,7358,3363],{"class":741},[731,7360,7361,7363],{"class":733,"line":1860},[731,7362,2329],{"class":777},[731,7364,3371],{"class":784},[731,7366,7367],{"class":733,"line":1877},[731,7368,766],{"class":741},[731,7370,7371,7373,7375,7377,7379,7381,7383],{"class":733,"line":1902},[731,7372,1257],{"class":784},[731,7374,1184],{"class":741},[731,7376,1262],{"class":836},[731,7378,839],{"class":784},[731,7380,738],{"class":836},[731,7382,839],{"class":784},[731,7384,842],{"class":741},[731,7386,7387,7389,7391,7393,7395,7397,7399],{"class":733,"line":1908},[731,7388,5747],{"class":836},[731,7390,742],{"class":741},[731,7392,1750],{"class":741},[731,7394,4902],{"class":1753},[731,7396,1216],{"class":741},[731,7398,1759],{"class":921},[731,7400,745],{"class":741},[731,7402,7403],{"class":733,"line":1914},[731,7404,5764],{"class":1814},[731,7406,7407,7409,7411,7413,7415,7417,7419,7421,7423,7425,7427,7429,7431,7433,7435],{"class":733,"line":1922},[731,7408,5769],{"class":784},[731,7410,1184],{"class":741},[731,7412,1754],{"class":784},[731,7414,948],{"class":741},[731,7416,4595],{"class":836},[731,7418,839],{"class":848},[731,7420,4902],{"class":784},[731,7422,1184],{"class":741},[731,7424,1754],{"class":784},[731,7426,2878],{"class":848},[731,7428,4939],{"class":777},[731,7430,4663],{"class":741},[731,7432,4944],{"class":784},[731,7434,1184],{"class":741},[731,7436,4949],{"class":784},[731,7438,7439],{"class":733,"line":2125},[731,7440,1911],{"class":741},[731,7442,7443,7445],{"class":733,"line":2354},[731,7444,881],{"class":741},[731,7446,1281],{"class":784},[721,7448,7450],{"className":723,"code":7449,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,7451,7452,7470,7474,7532,7536,7556,7588,7618,7622,7646,7680,7696,7750,7754,7760,7764,7780,7796,7800,7832,7836],{"__ignoreMap":727},[731,7453,7454,7456,7458,7460,7462,7464,7466,7468],{"class":733,"line":734},[731,7455,778],{"class":777},[731,7457,781],{"class":741},[731,7459,1152],{"class":784},[731,7461,788],{"class":741},[731,7463,791],{"class":777},[731,7465,794],{"class":741},[731,7467,1303],{"class":797},[731,7469,801],{"class":741},[731,7471,7472],{"class":733,"line":748},[731,7473,824],{"emptyLinePlaceholder":823},[731,7475,7476,7478,7480,7482,7484,7486,7488,7490,7492,7494,7496,7498,7500,7502,7504,7506,7508,7510,7512,7514,7516,7518,7520,7522,7524,7526,7528,7530],{"class":733,"line":763},[731,7477,1535],{"class":921},[731,7479,4529],{"class":784},[731,7481,1193],{"class":741},[731,7483,854],{"class":784},[731,7485,969],{"class":741},[731,7487,3215],{"class":797},[731,7489,969],{"class":741},[731,7491,930],{"class":741},[731,7493,794],{"class":741},[731,7495,3224],{"class":797},[731,7497,969],{"class":741},[731,7499,930],{"class":741},[731,7501,794],{"class":741},[731,7503,3233],{"class":797},[731,7505,969],{"class":741},[731,7507,930],{"class":741},[731,7509,794],{"class":741},[731,7511,4562],{"class":797},[731,7513,969],{"class":741},[731,7515,930],{"class":741},[731,7517,794],{"class":741},[731,7519,3251],{"class":797},[731,7521,969],{"class":741},[731,7523,930],{"class":741},[731,7525,794],{"class":741},[731,7527,4579],{"class":797},[731,7529,969],{"class":741},[731,7531,1223],{"class":784},[731,7533,7534],{"class":733,"line":827},[731,7535,824],{"emptyLinePlaceholder":823},[731,7537,7538,7540,7542,7544,7546,7548,7550,7552,7554],{"class":733,"line":845},[731,7539,4592],{"class":921},[731,7541,4595],{"class":836},[731,7543,839],{"class":741},[731,7545,4600],{"class":1753},[731,7547,742],{"class":741},[731,7549,3178],{"class":737},[731,7551,2821],{"class":741},[731,7553,3178],{"class":737},[731,7555,745],{"class":741},[731,7557,7558,7560,7562,7564,7566,7568,7570,7572,7574,7576,7578,7580,7582,7584,7586],{"class":733,"line":878},[731,7559,2867],{"class":777},[731,7561,1750],{"class":848},[731,7563,4619],{"class":784},[731,7565,1184],{"class":741},[731,7567,4624],{"class":836},[731,7569,839],{"class":848},[731,7571,4600],{"class":784},[731,7573,4631],{"class":848},[731,7575,2881],{"class":777},[731,7577,4636],{"class":784},[731,7579,1184],{"class":741},[731,7581,99],{"class":836},[731,7583,839],{"class":848},[731,7585,4645],{"class":784},[731,7587,884],{"class":848},[731,7589,7590,7592,7594,7596,7598,7600,7602,7604,7606,7608,7610,7612,7614,7616],{"class":733,"line":1806},[731,7591,2867],{"class":777},[731,7593,1750],{"class":848},[731,7595,2872],{"class":741},[731,7597,4600],{"class":784},[731,7599,4660],{"class":741},[731,7601,4663],{"class":741},[731,7603,4636],{"class":784},[731,7605,4668],{"class":741},[731,7607,794],{"class":741},[731,7609,4673],{"class":797},[731,7611,969],{"class":741},[731,7613,2878],{"class":848},[731,7615,2881],{"class":777},[731,7617,4682],{"class":784},[731,7619,7620],{"class":733,"line":1811},[731,7621,824],{"emptyLinePlaceholder":823},[731,7623,7624,7626,7628,7630,7632,7634,7636,7638,7640,7642,7644],{"class":733,"line":1818},[731,7625,1766],{"class":921},[731,7627,3280],{"class":784},[731,7629,742],{"class":741},[731,7631,3168],{"class":737},[731,7633,3159],{"class":741},[731,7635,3173],{"class":737},[731,7637,930],{"class":741},[731,7639,3178],{"class":737},[731,7641,3270],{"class":741},[731,7643,948],{"class":741},[731,7645,4711],{"class":741},[731,7647,7648,7650,7652,7654,7656,7658,7660,7662,7664,7666,7668,7670,7672,7674,7676,7678],{"class":733,"line":1824},[731,7649,3299],{"class":777},[731,7651,1750],{"class":848},[731,7653,1535],{"class":921},[731,7655,854],{"class":741},[731,7657,3327],{"class":784},[731,7659,930],{"class":741},[731,7661,4728],{"class":784},[731,7663,2842],{"class":741},[731,7665,3309],{"class":741},[731,7667,4735],{"class":784},[731,7669,1184],{"class":741},[731,7671,4740],{"class":836},[731,7673,839],{"class":848},[731,7675,4600],{"class":784},[731,7677,4631],{"class":848},[731,7679,842],{"class":741},[731,7681,7682,7684,7686,7688,7690,7692,7694],{"class":733,"line":1829},[731,7683,4753],{"class":921},[731,7685,4756],{"class":784},[731,7687,948],{"class":741},[731,7689,3306],{"class":784},[731,7691,1184],{"class":741},[731,7693,4765],{"class":836},[731,7695,2208],{"class":848},[731,7697,7698,7700,7702,7704,7706,7708,7710,7712,7714,7716,7718,7720,7722,7724,7726,7728,7730,7732,7734,7736,7738,7740,7742,7744,7746,7748],{"class":733,"line":1835},[731,7699,4772],{"class":784},[731,7701,3347],{"class":848},[731,7703,3327],{"class":784},[731,7705,4779],{"class":848},[731,7707,1193],{"class":741},[731,7709,4784],{"class":784},[731,7711,1184],{"class":741},[731,7713,4789],{"class":836},[731,7715,839],{"class":848},[731,7717,4794],{"class":1753},[731,7719,1759],{"class":921},[731,7721,4756],{"class":784},[731,7723,1184],{"class":741},[731,7725,4803],{"class":836},[731,7727,839],{"class":848},[731,7729,4794],{"class":784},[731,7731,4631],{"class":848},[731,7733,4812],{"class":741},[731,7735,794],{"class":741},[731,7737,4817],{"class":797},[731,7739,969],{"class":741},[731,7741,4822],{"class":741},[731,7743,4595],{"class":836},[731,7745,839],{"class":848},[731,7747,4829],{"class":784},[731,7749,884],{"class":848},[731,7751,7752],{"class":733,"line":1850},[731,7753,3363],{"class":741},[731,7755,7756,7758],{"class":733,"line":1860},[731,7757,2329],{"class":777},[731,7759,3371],{"class":784},[731,7761,7762],{"class":733,"line":1877},[731,7763,766],{"class":741},[731,7765,7766,7768,7770,7772,7774,7776,7778],{"class":733,"line":1902},[731,7767,1257],{"class":784},[731,7769,1184],{"class":741},[731,7771,1262],{"class":836},[731,7773,839],{"class":784},[731,7775,738],{"class":836},[731,7777,839],{"class":784},[731,7779,842],{"class":741},[731,7781,7782,7784,7786,7788,7790,7792,7794],{"class":733,"line":1908},[731,7783,5747],{"class":836},[731,7785,742],{"class":741},[731,7787,1750],{"class":741},[731,7789,4902],{"class":1753},[731,7791,1216],{"class":741},[731,7793,1759],{"class":921},[731,7795,745],{"class":741},[731,7797,7798],{"class":733,"line":1914},[731,7799,5764],{"class":1814},[731,7801,7802,7804,7806,7808,7810,7812,7814,7816,7818,7820,7822,7824,7826,7828,7830],{"class":733,"line":1922},[731,7803,5769],{"class":784},[731,7805,1184],{"class":741},[731,7807,1754],{"class":784},[731,7809,948],{"class":741},[731,7811,4595],{"class":836},[731,7813,839],{"class":848},[731,7815,4902],{"class":784},[731,7817,1184],{"class":741},[731,7819,1754],{"class":784},[731,7821,2878],{"class":848},[731,7823,4939],{"class":777},[731,7825,4663],{"class":741},[731,7827,4944],{"class":784},[731,7829,1184],{"class":741},[731,7831,4949],{"class":784},[731,7833,7834],{"class":733,"line":2125},[731,7835,1911],{"class":741},[731,7837,7838,7840],{"class":733,"line":2354},[731,7839,881],{"class":741},[731,7841,1281],{"class":784},[721,7843,7845],{"className":723,"code":7844,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,7846,7847,7865,7869,7927,7931,7951,7983,8013,8017,8041,8075,8091,8145,8149,8155,8159,8175,8191,8195,8227,8231],{"__ignoreMap":727},[731,7848,7849,7851,7853,7855,7857,7859,7861,7863],{"class":733,"line":734},[731,7850,778],{"class":777},[731,7852,781],{"class":741},[731,7854,1152],{"class":784},[731,7856,788],{"class":741},[731,7858,791],{"class":777},[731,7860,794],{"class":741},[731,7862,1357],{"class":797},[731,7864,801],{"class":741},[731,7866,7867],{"class":733,"line":748},[731,7868,824],{"emptyLinePlaceholder":823},[731,7870,7871,7873,7875,7877,7879,7881,7883,7885,7887,7889,7891,7893,7895,7897,7899,7901,7903,7905,7907,7909,7911,7913,7915,7917,7919,7921,7923,7925],{"class":733,"line":763},[731,7872,1535],{"class":921},[731,7874,4529],{"class":784},[731,7876,1193],{"class":741},[731,7878,854],{"class":784},[731,7880,969],{"class":741},[731,7882,3215],{"class":797},[731,7884,969],{"class":741},[731,7886,930],{"class":741},[731,7888,794],{"class":741},[731,7890,3224],{"class":797},[731,7892,969],{"class":741},[731,7894,930],{"class":741},[731,7896,794],{"class":741},[731,7898,3233],{"class":797},[731,7900,969],{"class":741},[731,7902,930],{"class":741},[731,7904,794],{"class":741},[731,7906,4562],{"class":797},[731,7908,969],{"class":741},[731,7910,930],{"class":741},[731,7912,794],{"class":741},[731,7914,3251],{"class":797},[731,7916,969],{"class":741},[731,7918,930],{"class":741},[731,7920,794],{"class":741},[731,7922,4579],{"class":797},[731,7924,969],{"class":741},[731,7926,1223],{"class":784},[731,7928,7929],{"class":733,"line":827},[731,7930,824],{"emptyLinePlaceholder":823},[731,7932,7933,7935,7937,7939,7941,7943,7945,7947,7949],{"class":733,"line":845},[731,7934,4592],{"class":921},[731,7936,4595],{"class":836},[731,7938,839],{"class":741},[731,7940,4600],{"class":1753},[731,7942,742],{"class":741},[731,7944,3178],{"class":737},[731,7946,2821],{"class":741},[731,7948,3178],{"class":737},[731,7950,745],{"class":741},[731,7952,7953,7955,7957,7959,7961,7963,7965,7967,7969,7971,7973,7975,7977,7979,7981],{"class":733,"line":878},[731,7954,2867],{"class":777},[731,7956,1750],{"class":848},[731,7958,4619],{"class":784},[731,7960,1184],{"class":741},[731,7962,4624],{"class":836},[731,7964,839],{"class":848},[731,7966,4600],{"class":784},[731,7968,4631],{"class":848},[731,7970,2881],{"class":777},[731,7972,4636],{"class":784},[731,7974,1184],{"class":741},[731,7976,99],{"class":836},[731,7978,839],{"class":848},[731,7980,4645],{"class":784},[731,7982,884],{"class":848},[731,7984,7985,7987,7989,7991,7993,7995,7997,7999,8001,8003,8005,8007,8009,8011],{"class":733,"line":1806},[731,7986,2867],{"class":777},[731,7988,1750],{"class":848},[731,7990,2872],{"class":741},[731,7992,4600],{"class":784},[731,7994,4660],{"class":741},[731,7996,4663],{"class":741},[731,7998,4636],{"class":784},[731,8000,4668],{"class":741},[731,8002,794],{"class":741},[731,8004,4673],{"class":797},[731,8006,969],{"class":741},[731,8008,2878],{"class":848},[731,8010,2881],{"class":777},[731,8012,4682],{"class":784},[731,8014,8015],{"class":733,"line":1811},[731,8016,824],{"emptyLinePlaceholder":823},[731,8018,8019,8021,8023,8025,8027,8029,8031,8033,8035,8037,8039],{"class":733,"line":1818},[731,8020,1766],{"class":921},[731,8022,3280],{"class":784},[731,8024,742],{"class":741},[731,8026,3168],{"class":737},[731,8028,3159],{"class":741},[731,8030,3173],{"class":737},[731,8032,930],{"class":741},[731,8034,3178],{"class":737},[731,8036,3270],{"class":741},[731,8038,948],{"class":741},[731,8040,4711],{"class":741},[731,8042,8043,8045,8047,8049,8051,8053,8055,8057,8059,8061,8063,8065,8067,8069,8071,8073],{"class":733,"line":1824},[731,8044,3299],{"class":777},[731,8046,1750],{"class":848},[731,8048,1535],{"class":921},[731,8050,854],{"class":741},[731,8052,3327],{"class":784},[731,8054,930],{"class":741},[731,8056,4728],{"class":784},[731,8058,2842],{"class":741},[731,8060,3309],{"class":741},[731,8062,4735],{"class":784},[731,8064,1184],{"class":741},[731,8066,4740],{"class":836},[731,8068,839],{"class":848},[731,8070,4600],{"class":784},[731,8072,4631],{"class":848},[731,8074,842],{"class":741},[731,8076,8077,8079,8081,8083,8085,8087,8089],{"class":733,"line":1829},[731,8078,4753],{"class":921},[731,8080,4756],{"class":784},[731,8082,948],{"class":741},[731,8084,3306],{"class":784},[731,8086,1184],{"class":741},[731,8088,4765],{"class":836},[731,8090,2208],{"class":848},[731,8092,8093,8095,8097,8099,8101,8103,8105,8107,8109,8111,8113,8115,8117,8119,8121,8123,8125,8127,8129,8131,8133,8135,8137,8139,8141,8143],{"class":733,"line":1835},[731,8094,4772],{"class":784},[731,8096,3347],{"class":848},[731,8098,3327],{"class":784},[731,8100,4779],{"class":848},[731,8102,1193],{"class":741},[731,8104,4784],{"class":784},[731,8106,1184],{"class":741},[731,8108,4789],{"class":836},[731,8110,839],{"class":848},[731,8112,4794],{"class":1753},[731,8114,1759],{"class":921},[731,8116,4756],{"class":784},[731,8118,1184],{"class":741},[731,8120,4803],{"class":836},[731,8122,839],{"class":848},[731,8124,4794],{"class":784},[731,8126,4631],{"class":848},[731,8128,4812],{"class":741},[731,8130,794],{"class":741},[731,8132,4817],{"class":797},[731,8134,969],{"class":741},[731,8136,4822],{"class":741},[731,8138,4595],{"class":836},[731,8140,839],{"class":848},[731,8142,4829],{"class":784},[731,8144,884],{"class":848},[731,8146,8147],{"class":733,"line":1850},[731,8148,3363],{"class":741},[731,8150,8151,8153],{"class":733,"line":1860},[731,8152,2329],{"class":777},[731,8154,3371],{"class":784},[731,8156,8157],{"class":733,"line":1877},[731,8158,766],{"class":741},[731,8160,8161,8163,8165,8167,8169,8171,8173],{"class":733,"line":1902},[731,8162,1368],{"class":777},[731,8164,1371],{"class":784},[731,8166,1184],{"class":741},[731,8168,1376],{"class":836},[731,8170,1379],{"class":784},[731,8172,930],{"class":741},[731,8174,745],{"class":741},[731,8176,8177,8179,8181,8183,8185,8187,8189],{"class":733,"line":1908},[731,8178,5747],{"class":836},[731,8180,742],{"class":741},[731,8182,1750],{"class":741},[731,8184,4902],{"class":1753},[731,8186,1216],{"class":741},[731,8188,1759],{"class":921},[731,8190,745],{"class":741},[731,8192,8193],{"class":733,"line":1914},[731,8194,5764],{"class":1814},[731,8196,8197,8199,8201,8203,8205,8207,8209,8211,8213,8215,8217,8219,8221,8223,8225],{"class":733,"line":1922},[731,8198,5769],{"class":784},[731,8200,1184],{"class":741},[731,8202,1754],{"class":784},[731,8204,948],{"class":741},[731,8206,4595],{"class":836},[731,8208,839],{"class":848},[731,8210,4902],{"class":784},[731,8212,1184],{"class":741},[731,8214,1754],{"class":784},[731,8216,2878],{"class":848},[731,8218,4939],{"class":777},[731,8220,4663],{"class":741},[731,8222,4944],{"class":784},[731,8224,1184],{"class":741},[731,8226,4949],{"class":784},[731,8228,8229],{"class":733,"line":2125},[731,8230,1911],{"class":741},[731,8232,8233,8235],{"class":733,"line":2354},[731,8234,881],{"class":741},[731,8236,884],{"class":784},[721,8238,8240],{"className":723,"code":8239,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,8241,8242,8260,8264,8322,8326,8346,8378,8408,8412,8436,8470,8486,8540,8544,8550,8554,8570,8586,8590,8622,8626],{"__ignoreMap":727},[731,8243,8244,8246,8248,8250,8252,8254,8256,8258],{"class":733,"line":734},[731,8245,778],{"class":777},[731,8247,781],{"class":741},[731,8249,1152],{"class":784},[731,8251,788],{"class":741},[731,8253,791],{"class":777},[731,8255,794],{"class":741},[731,8257,1415],{"class":797},[731,8259,801],{"class":741},[731,8261,8262],{"class":733,"line":748},[731,8263,824],{"emptyLinePlaceholder":823},[731,8265,8266,8268,8270,8272,8274,8276,8278,8280,8282,8284,8286,8288,8290,8292,8294,8296,8298,8300,8302,8304,8306,8308,8310,8312,8314,8316,8318,8320],{"class":733,"line":763},[731,8267,1535],{"class":921},[731,8269,4529],{"class":784},[731,8271,1193],{"class":741},[731,8273,854],{"class":784},[731,8275,969],{"class":741},[731,8277,3215],{"class":797},[731,8279,969],{"class":741},[731,8281,930],{"class":741},[731,8283,794],{"class":741},[731,8285,3224],{"class":797},[731,8287,969],{"class":741},[731,8289,930],{"class":741},[731,8291,794],{"class":741},[731,8293,3233],{"class":797},[731,8295,969],{"class":741},[731,8297,930],{"class":741},[731,8299,794],{"class":741},[731,8301,4562],{"class":797},[731,8303,969],{"class":741},[731,8305,930],{"class":741},[731,8307,794],{"class":741},[731,8309,3251],{"class":797},[731,8311,969],{"class":741},[731,8313,930],{"class":741},[731,8315,794],{"class":741},[731,8317,4579],{"class":797},[731,8319,969],{"class":741},[731,8321,1223],{"class":784},[731,8323,8324],{"class":733,"line":827},[731,8325,824],{"emptyLinePlaceholder":823},[731,8327,8328,8330,8332,8334,8336,8338,8340,8342,8344],{"class":733,"line":845},[731,8329,4592],{"class":921},[731,8331,4595],{"class":836},[731,8333,839],{"class":741},[731,8335,4600],{"class":1753},[731,8337,742],{"class":741},[731,8339,3178],{"class":737},[731,8341,2821],{"class":741},[731,8343,3178],{"class":737},[731,8345,745],{"class":741},[731,8347,8348,8350,8352,8354,8356,8358,8360,8362,8364,8366,8368,8370,8372,8374,8376],{"class":733,"line":878},[731,8349,2867],{"class":777},[731,8351,1750],{"class":848},[731,8353,4619],{"class":784},[731,8355,1184],{"class":741},[731,8357,4624],{"class":836},[731,8359,839],{"class":848},[731,8361,4600],{"class":784},[731,8363,4631],{"class":848},[731,8365,2881],{"class":777},[731,8367,4636],{"class":784},[731,8369,1184],{"class":741},[731,8371,99],{"class":836},[731,8373,839],{"class":848},[731,8375,4645],{"class":784},[731,8377,884],{"class":848},[731,8379,8380,8382,8384,8386,8388,8390,8392,8394,8396,8398,8400,8402,8404,8406],{"class":733,"line":1806},[731,8381,2867],{"class":777},[731,8383,1750],{"class":848},[731,8385,2872],{"class":741},[731,8387,4600],{"class":784},[731,8389,4660],{"class":741},[731,8391,4663],{"class":741},[731,8393,4636],{"class":784},[731,8395,4668],{"class":741},[731,8397,794],{"class":741},[731,8399,4673],{"class":797},[731,8401,969],{"class":741},[731,8403,2878],{"class":848},[731,8405,2881],{"class":777},[731,8407,4682],{"class":784},[731,8409,8410],{"class":733,"line":1811},[731,8411,824],{"emptyLinePlaceholder":823},[731,8413,8414,8416,8418,8420,8422,8424,8426,8428,8430,8432,8434],{"class":733,"line":1818},[731,8415,1766],{"class":921},[731,8417,3280],{"class":784},[731,8419,742],{"class":741},[731,8421,3168],{"class":737},[731,8423,3159],{"class":741},[731,8425,3173],{"class":737},[731,8427,930],{"class":741},[731,8429,3178],{"class":737},[731,8431,3270],{"class":741},[731,8433,948],{"class":741},[731,8435,4711],{"class":741},[731,8437,8438,8440,8442,8444,8446,8448,8450,8452,8454,8456,8458,8460,8462,8464,8466,8468],{"class":733,"line":1824},[731,8439,3299],{"class":777},[731,8441,1750],{"class":848},[731,8443,1535],{"class":921},[731,8445,854],{"class":741},[731,8447,3327],{"class":784},[731,8449,930],{"class":741},[731,8451,4728],{"class":784},[731,8453,2842],{"class":741},[731,8455,3309],{"class":741},[731,8457,4735],{"class":784},[731,8459,1184],{"class":741},[731,8461,4740],{"class":836},[731,8463,839],{"class":848},[731,8465,4600],{"class":784},[731,8467,4631],{"class":848},[731,8469,842],{"class":741},[731,8471,8472,8474,8476,8478,8480,8482,8484],{"class":733,"line":1829},[731,8473,4753],{"class":921},[731,8475,4756],{"class":784},[731,8477,948],{"class":741},[731,8479,3306],{"class":784},[731,8481,1184],{"class":741},[731,8483,4765],{"class":836},[731,8485,2208],{"class":848},[731,8487,8488,8490,8492,8494,8496,8498,8500,8502,8504,8506,8508,8510,8512,8514,8516,8518,8520,8522,8524,8526,8528,8530,8532,8534,8536,8538],{"class":733,"line":1835},[731,8489,4772],{"class":784},[731,8491,3347],{"class":848},[731,8493,3327],{"class":784},[731,8495,4779],{"class":848},[731,8497,1193],{"class":741},[731,8499,4784],{"class":784},[731,8501,1184],{"class":741},[731,8503,4789],{"class":836},[731,8505,839],{"class":848},[731,8507,4794],{"class":1753},[731,8509,1759],{"class":921},[731,8511,4756],{"class":784},[731,8513,1184],{"class":741},[731,8515,4803],{"class":836},[731,8517,839],{"class":848},[731,8519,4794],{"class":784},[731,8521,4631],{"class":848},[731,8523,4812],{"class":741},[731,8525,794],{"class":741},[731,8527,4817],{"class":797},[731,8529,969],{"class":741},[731,8531,4822],{"class":741},[731,8533,4595],{"class":836},[731,8535,839],{"class":848},[731,8537,4829],{"class":784},[731,8539,884],{"class":848},[731,8541,8542],{"class":733,"line":1850},[731,8543,3363],{"class":741},[731,8545,8546,8548],{"class":733,"line":1860},[731,8547,2329],{"class":777},[731,8549,3371],{"class":784},[731,8551,8552],{"class":733,"line":1877},[731,8553,766],{"class":741},[731,8555,8556,8558,8560,8562,8564,8566,8568],{"class":733,"line":1902},[731,8557,1257],{"class":784},[731,8559,1184],{"class":741},[731,8561,1262],{"class":836},[731,8563,839],{"class":784},[731,8565,738],{"class":836},[731,8567,839],{"class":784},[731,8569,842],{"class":741},[731,8571,8572,8574,8576,8578,8580,8582,8584],{"class":733,"line":1908},[731,8573,5747],{"class":836},[731,8575,742],{"class":741},[731,8577,1750],{"class":741},[731,8579,4902],{"class":1753},[731,8581,1216],{"class":741},[731,8583,1759],{"class":921},[731,8585,745],{"class":741},[731,8587,8588],{"class":733,"line":1914},[731,8589,5764],{"class":1814},[731,8591,8592,8594,8596,8598,8600,8602,8604,8606,8608,8610,8612,8614,8616,8618,8620],{"class":733,"line":1922},[731,8593,5769],{"class":784},[731,8595,1184],{"class":741},[731,8597,1754],{"class":784},[731,8599,948],{"class":741},[731,8601,4595],{"class":836},[731,8603,839],{"class":848},[731,8605,4902],{"class":784},[731,8607,1184],{"class":741},[731,8609,1754],{"class":784},[731,8611,2878],{"class":848},[731,8613,4939],{"class":777},[731,8615,4663],{"class":741},[731,8617,4944],{"class":784},[731,8619,1184],{"class":741},[731,8621,4949],{"class":784},[731,8623,8624],{"class":733,"line":2125},[731,8625,1911],{"class":741},[731,8627,8628,8630],{"class":733,"line":2354},[731,8629,881],{"class":741},[731,8631,1281],{"class":784},[721,8633,8635],{"className":723,"code":8634,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,8636,8637,8655,8659,8717,8721,8741,8773,8803,8807,8831,8865,8881,8935,8939,8945,8949,8961,8977,8981,9013,9017],{"__ignoreMap":727},[731,8638,8639,8641,8643,8645,8647,8649,8651,8653],{"class":733,"line":734},[731,8640,778],{"class":777},[731,8642,781],{"class":741},[731,8644,1462],{"class":784},[731,8646,788],{"class":741},[731,8648,791],{"class":777},[731,8650,794],{"class":741},[731,8652,1471],{"class":797},[731,8654,801],{"class":741},[731,8656,8657],{"class":733,"line":748},[731,8658,824],{"emptyLinePlaceholder":823},[731,8660,8661,8663,8665,8667,8669,8671,8673,8675,8677,8679,8681,8683,8685,8687,8689,8691,8693,8695,8697,8699,8701,8703,8705,8707,8709,8711,8713,8715],{"class":733,"line":763},[731,8662,1535],{"class":921},[731,8664,4529],{"class":784},[731,8666,1193],{"class":741},[731,8668,854],{"class":784},[731,8670,969],{"class":741},[731,8672,3215],{"class":797},[731,8674,969],{"class":741},[731,8676,930],{"class":741},[731,8678,794],{"class":741},[731,8680,3224],{"class":797},[731,8682,969],{"class":741},[731,8684,930],{"class":741},[731,8686,794],{"class":741},[731,8688,3233],{"class":797},[731,8690,969],{"class":741},[731,8692,930],{"class":741},[731,8694,794],{"class":741},[731,8696,4562],{"class":797},[731,8698,969],{"class":741},[731,8700,930],{"class":741},[731,8702,794],{"class":741},[731,8704,3251],{"class":797},[731,8706,969],{"class":741},[731,8708,930],{"class":741},[731,8710,794],{"class":741},[731,8712,4579],{"class":797},[731,8714,969],{"class":741},[731,8716,1223],{"class":784},[731,8718,8719],{"class":733,"line":827},[731,8720,824],{"emptyLinePlaceholder":823},[731,8722,8723,8725,8727,8729,8731,8733,8735,8737,8739],{"class":733,"line":845},[731,8724,4592],{"class":921},[731,8726,4595],{"class":836},[731,8728,839],{"class":741},[731,8730,4600],{"class":1753},[731,8732,742],{"class":741},[731,8734,3178],{"class":737},[731,8736,2821],{"class":741},[731,8738,3178],{"class":737},[731,8740,745],{"class":741},[731,8742,8743,8745,8747,8749,8751,8753,8755,8757,8759,8761,8763,8765,8767,8769,8771],{"class":733,"line":878},[731,8744,2867],{"class":777},[731,8746,1750],{"class":848},[731,8748,4619],{"class":784},[731,8750,1184],{"class":741},[731,8752,4624],{"class":836},[731,8754,839],{"class":848},[731,8756,4600],{"class":784},[731,8758,4631],{"class":848},[731,8760,2881],{"class":777},[731,8762,4636],{"class":784},[731,8764,1184],{"class":741},[731,8766,99],{"class":836},[731,8768,839],{"class":848},[731,8770,4645],{"class":784},[731,8772,884],{"class":848},[731,8774,8775,8777,8779,8781,8783,8785,8787,8789,8791,8793,8795,8797,8799,8801],{"class":733,"line":1806},[731,8776,2867],{"class":777},[731,8778,1750],{"class":848},[731,8780,2872],{"class":741},[731,8782,4600],{"class":784},[731,8784,4660],{"class":741},[731,8786,4663],{"class":741},[731,8788,4636],{"class":784},[731,8790,4668],{"class":741},[731,8792,794],{"class":741},[731,8794,4673],{"class":797},[731,8796,969],{"class":741},[731,8798,2878],{"class":848},[731,8800,2881],{"class":777},[731,8802,4682],{"class":784},[731,8804,8805],{"class":733,"line":1811},[731,8806,824],{"emptyLinePlaceholder":823},[731,8808,8809,8811,8813,8815,8817,8819,8821,8823,8825,8827,8829],{"class":733,"line":1818},[731,8810,1766],{"class":921},[731,8812,3280],{"class":784},[731,8814,742],{"class":741},[731,8816,3168],{"class":737},[731,8818,3159],{"class":741},[731,8820,3173],{"class":737},[731,8822,930],{"class":741},[731,8824,3178],{"class":737},[731,8826,3270],{"class":741},[731,8828,948],{"class":741},[731,8830,4711],{"class":741},[731,8832,8833,8835,8837,8839,8841,8843,8845,8847,8849,8851,8853,8855,8857,8859,8861,8863],{"class":733,"line":1824},[731,8834,3299],{"class":777},[731,8836,1750],{"class":848},[731,8838,1535],{"class":921},[731,8840,854],{"class":741},[731,8842,3327],{"class":784},[731,8844,930],{"class":741},[731,8846,4728],{"class":784},[731,8848,2842],{"class":741},[731,8850,3309],{"class":741},[731,8852,4735],{"class":784},[731,8854,1184],{"class":741},[731,8856,4740],{"class":836},[731,8858,839],{"class":848},[731,8860,4600],{"class":784},[731,8862,4631],{"class":848},[731,8864,842],{"class":741},[731,8866,8867,8869,8871,8873,8875,8877,8879],{"class":733,"line":1829},[731,8868,4753],{"class":921},[731,8870,4756],{"class":784},[731,8872,948],{"class":741},[731,8874,3306],{"class":784},[731,8876,1184],{"class":741},[731,8878,4765],{"class":836},[731,8880,2208],{"class":848},[731,8882,8883,8885,8887,8889,8891,8893,8895,8897,8899,8901,8903,8905,8907,8909,8911,8913,8915,8917,8919,8921,8923,8925,8927,8929,8931,8933],{"class":733,"line":1835},[731,8884,4772],{"class":784},[731,8886,3347],{"class":848},[731,8888,3327],{"class":784},[731,8890,4779],{"class":848},[731,8892,1193],{"class":741},[731,8894,4784],{"class":784},[731,8896,1184],{"class":741},[731,8898,4789],{"class":836},[731,8900,839],{"class":848},[731,8902,4794],{"class":1753},[731,8904,1759],{"class":921},[731,8906,4756],{"class":784},[731,8908,1184],{"class":741},[731,8910,4803],{"class":836},[731,8912,839],{"class":848},[731,8914,4794],{"class":784},[731,8916,4631],{"class":848},[731,8918,4812],{"class":741},[731,8920,794],{"class":741},[731,8922,4817],{"class":797},[731,8924,969],{"class":741},[731,8926,4822],{"class":741},[731,8928,4595],{"class":836},[731,8930,839],{"class":848},[731,8932,4829],{"class":784},[731,8934,884],{"class":848},[731,8936,8937],{"class":733,"line":1850},[731,8938,3363],{"class":741},[731,8940,8941,8943],{"class":733,"line":1860},[731,8942,2329],{"class":777},[731,8944,3371],{"class":784},[731,8946,8947],{"class":733,"line":1877},[731,8948,766],{"class":741},[731,8950,8951,8953,8955,8957,8959],{"class":733,"line":1902},[731,8952,1482],{"class":784},[731,8954,1184],{"class":741},[731,8956,1487],{"class":836},[731,8958,839],{"class":784},[731,8960,842],{"class":741},[731,8962,8963,8965,8967,8969,8971,8973,8975],{"class":733,"line":1908},[731,8964,5747],{"class":836},[731,8966,742],{"class":741},[731,8968,1750],{"class":741},[731,8970,4902],{"class":1753},[731,8972,1216],{"class":741},[731,8974,1759],{"class":921},[731,8976,745],{"class":741},[731,8978,8979],{"class":733,"line":1914},[731,8980,5764],{"class":1814},[731,8982,8983,8985,8987,8989,8991,8993,8995,8997,8999,9001,9003,9005,9007,9009,9011],{"class":733,"line":1922},[731,8984,5769],{"class":784},[731,8986,1184],{"class":741},[731,8988,1754],{"class":784},[731,8990,948],{"class":741},[731,8992,4595],{"class":836},[731,8994,839],{"class":848},[731,8996,4902],{"class":784},[731,8998,1184],{"class":741},[731,9000,1754],{"class":784},[731,9002,2878],{"class":848},[731,9004,4939],{"class":777},[731,9006,4663],{"class":741},[731,9008,4944],{"class":784},[731,9010,1184],{"class":741},[731,9012,4949],{"class":784},[731,9014,9015],{"class":733,"line":2125},[731,9016,1911],{"class":741},[731,9018,9019,9021],{"class":733,"line":2354},[731,9020,881],{"class":741},[731,9022,884],{"class":784},[721,9024,9026],{"className":723,"code":9025,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,9027,9028,9046,9050,9108,9112,9132,9164,9194,9198,9222,9256,9272,9326,9330,9336,9340,9362,9378,9382,9414,9418],{"__ignoreMap":727},[731,9029,9030,9032,9034,9036,9038,9040,9042,9044],{"class":733,"line":734},[731,9031,778],{"class":777},[731,9033,781],{"class":741},[731,9035,927],{"class":784},[731,9037,788],{"class":741},[731,9039,791],{"class":777},[731,9041,794],{"class":741},[731,9043,1524],{"class":797},[731,9045,801],{"class":741},[731,9047,9048],{"class":733,"line":748},[731,9049,824],{"emptyLinePlaceholder":823},[731,9051,9052,9054,9056,9058,9060,9062,9064,9066,9068,9070,9072,9074,9076,9078,9080,9082,9084,9086,9088,9090,9092,9094,9096,9098,9100,9102,9104,9106],{"class":733,"line":763},[731,9053,1535],{"class":921},[731,9055,4529],{"class":784},[731,9057,1193],{"class":741},[731,9059,854],{"class":784},[731,9061,969],{"class":741},[731,9063,3215],{"class":797},[731,9065,969],{"class":741},[731,9067,930],{"class":741},[731,9069,794],{"class":741},[731,9071,3224],{"class":797},[731,9073,969],{"class":741},[731,9075,930],{"class":741},[731,9077,794],{"class":741},[731,9079,3233],{"class":797},[731,9081,969],{"class":741},[731,9083,930],{"class":741},[731,9085,794],{"class":741},[731,9087,4562],{"class":797},[731,9089,969],{"class":741},[731,9091,930],{"class":741},[731,9093,794],{"class":741},[731,9095,3251],{"class":797},[731,9097,969],{"class":741},[731,9099,930],{"class":741},[731,9101,794],{"class":741},[731,9103,4579],{"class":797},[731,9105,969],{"class":741},[731,9107,1223],{"class":784},[731,9109,9110],{"class":733,"line":827},[731,9111,824],{"emptyLinePlaceholder":823},[731,9113,9114,9116,9118,9120,9122,9124,9126,9128,9130],{"class":733,"line":845},[731,9115,4592],{"class":921},[731,9117,4595],{"class":836},[731,9119,839],{"class":741},[731,9121,4600],{"class":1753},[731,9123,742],{"class":741},[731,9125,3178],{"class":737},[731,9127,2821],{"class":741},[731,9129,3178],{"class":737},[731,9131,745],{"class":741},[731,9133,9134,9136,9138,9140,9142,9144,9146,9148,9150,9152,9154,9156,9158,9160,9162],{"class":733,"line":878},[731,9135,2867],{"class":777},[731,9137,1750],{"class":848},[731,9139,4619],{"class":784},[731,9141,1184],{"class":741},[731,9143,4624],{"class":836},[731,9145,839],{"class":848},[731,9147,4600],{"class":784},[731,9149,4631],{"class":848},[731,9151,2881],{"class":777},[731,9153,4636],{"class":784},[731,9155,1184],{"class":741},[731,9157,99],{"class":836},[731,9159,839],{"class":848},[731,9161,4645],{"class":784},[731,9163,884],{"class":848},[731,9165,9166,9168,9170,9172,9174,9176,9178,9180,9182,9184,9186,9188,9190,9192],{"class":733,"line":1806},[731,9167,2867],{"class":777},[731,9169,1750],{"class":848},[731,9171,2872],{"class":741},[731,9173,4600],{"class":784},[731,9175,4660],{"class":741},[731,9177,4663],{"class":741},[731,9179,4636],{"class":784},[731,9181,4668],{"class":741},[731,9183,794],{"class":741},[731,9185,4673],{"class":797},[731,9187,969],{"class":741},[731,9189,2878],{"class":848},[731,9191,2881],{"class":777},[731,9193,4682],{"class":784},[731,9195,9196],{"class":733,"line":1811},[731,9197,824],{"emptyLinePlaceholder":823},[731,9199,9200,9202,9204,9206,9208,9210,9212,9214,9216,9218,9220],{"class":733,"line":1818},[731,9201,1766],{"class":921},[731,9203,3280],{"class":784},[731,9205,742],{"class":741},[731,9207,3168],{"class":737},[731,9209,3159],{"class":741},[731,9211,3173],{"class":737},[731,9213,930],{"class":741},[731,9215,3178],{"class":737},[731,9217,3270],{"class":741},[731,9219,948],{"class":741},[731,9221,4711],{"class":741},[731,9223,9224,9226,9228,9230,9232,9234,9236,9238,9240,9242,9244,9246,9248,9250,9252,9254],{"class":733,"line":1824},[731,9225,3299],{"class":777},[731,9227,1750],{"class":848},[731,9229,1535],{"class":921},[731,9231,854],{"class":741},[731,9233,3327],{"class":784},[731,9235,930],{"class":741},[731,9237,4728],{"class":784},[731,9239,2842],{"class":741},[731,9241,3309],{"class":741},[731,9243,4735],{"class":784},[731,9245,1184],{"class":741},[731,9247,4740],{"class":836},[731,9249,839],{"class":848},[731,9251,4600],{"class":784},[731,9253,4631],{"class":848},[731,9255,842],{"class":741},[731,9257,9258,9260,9262,9264,9266,9268,9270],{"class":733,"line":1829},[731,9259,4753],{"class":921},[731,9261,4756],{"class":784},[731,9263,948],{"class":741},[731,9265,3306],{"class":784},[731,9267,1184],{"class":741},[731,9269,4765],{"class":836},[731,9271,2208],{"class":848},[731,9273,9274,9276,9278,9280,9282,9284,9286,9288,9290,9292,9294,9296,9298,9300,9302,9304,9306,9308,9310,9312,9314,9316,9318,9320,9322,9324],{"class":733,"line":1835},[731,9275,4772],{"class":784},[731,9277,3347],{"class":848},[731,9279,3327],{"class":784},[731,9281,4779],{"class":848},[731,9283,1193],{"class":741},[731,9285,4784],{"class":784},[731,9287,1184],{"class":741},[731,9289,4789],{"class":836},[731,9291,839],{"class":848},[731,9293,4794],{"class":1753},[731,9295,1759],{"class":921},[731,9297,4756],{"class":784},[731,9299,1184],{"class":741},[731,9301,4803],{"class":836},[731,9303,839],{"class":848},[731,9305,4794],{"class":784},[731,9307,4631],{"class":848},[731,9309,4812],{"class":741},[731,9311,794],{"class":741},[731,9313,4817],{"class":797},[731,9315,969],{"class":741},[731,9317,4822],{"class":741},[731,9319,4595],{"class":836},[731,9321,839],{"class":848},[731,9323,4829],{"class":784},[731,9325,884],{"class":848},[731,9327,9328],{"class":733,"line":1850},[731,9329,3363],{"class":741},[731,9331,9332,9334],{"class":733,"line":1860},[731,9333,2329],{"class":777},[731,9335,3371],{"class":784},[731,9337,9338],{"class":733,"line":1877},[731,9339,766],{"class":741},[731,9341,9342,9344,9346,9348,9350,9352,9354,9356,9358,9360],{"class":733,"line":1902},[731,9343,1535],{"class":921},[731,9345,1538],{"class":784},[731,9347,1193],{"class":741},[731,9349,927],{"class":836},[731,9351,839],{"class":784},[731,9353,1547],{"class":741},[731,9355,1550],{"class":836},[731,9357,1553],{"class":784},[731,9359,930],{"class":741},[731,9361,745],{"class":741},[731,9363,9364,9366,9368,9370,9372,9374,9376],{"class":733,"line":1908},[731,9365,5747],{"class":836},[731,9367,742],{"class":741},[731,9369,1750],{"class":741},[731,9371,4902],{"class":1753},[731,9373,1216],{"class":741},[731,9375,1759],{"class":921},[731,9377,745],{"class":741},[731,9379,9380],{"class":733,"line":1914},[731,9381,5764],{"class":1814},[731,9383,9384,9386,9388,9390,9392,9394,9396,9398,9400,9402,9404,9406,9408,9410,9412],{"class":733,"line":1922},[731,9385,5769],{"class":784},[731,9387,1184],{"class":741},[731,9389,1754],{"class":784},[731,9391,948],{"class":741},[731,9393,4595],{"class":836},[731,9395,839],{"class":848},[731,9397,4902],{"class":784},[731,9399,1184],{"class":741},[731,9401,1754],{"class":784},[731,9403,2878],{"class":848},[731,9405,4939],{"class":777},[731,9407,4663],{"class":741},[731,9409,4944],{"class":784},[731,9411,1184],{"class":741},[731,9413,4949],{"class":784},[731,9415,9416],{"class":733,"line":2125},[731,9417,1911],{"class":741},[731,9419,9420,9422],{"class":733,"line":2354},[731,9421,881],{"class":741},[731,9423,884],{"class":784},[721,9425,9427],{"className":723,"code":9426,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,9428,9429,9447,9451,9509,9513,9533,9565,9595,9599,9623,9657,9673,9727,9731,9737,9741,9755,9771,9775,9807,9811],{"__ignoreMap":727},[731,9430,9431,9433,9435,9437,9439,9441,9443,9445],{"class":733,"line":734},[731,9432,778],{"class":777},[731,9434,781],{"class":741},[731,9436,927],{"class":784},[731,9438,788],{"class":741},[731,9440,791],{"class":777},[731,9442,794],{"class":741},[731,9444,1590],{"class":797},[731,9446,801],{"class":741},[731,9448,9449],{"class":733,"line":748},[731,9450,824],{"emptyLinePlaceholder":823},[731,9452,9453,9455,9457,9459,9461,9463,9465,9467,9469,9471,9473,9475,9477,9479,9481,9483,9485,9487,9489,9491,9493,9495,9497,9499,9501,9503,9505,9507],{"class":733,"line":763},[731,9454,1535],{"class":921},[731,9456,4529],{"class":784},[731,9458,1193],{"class":741},[731,9460,854],{"class":784},[731,9462,969],{"class":741},[731,9464,3215],{"class":797},[731,9466,969],{"class":741},[731,9468,930],{"class":741},[731,9470,794],{"class":741},[731,9472,3224],{"class":797},[731,9474,969],{"class":741},[731,9476,930],{"class":741},[731,9478,794],{"class":741},[731,9480,3233],{"class":797},[731,9482,969],{"class":741},[731,9484,930],{"class":741},[731,9486,794],{"class":741},[731,9488,4562],{"class":797},[731,9490,969],{"class":741},[731,9492,930],{"class":741},[731,9494,794],{"class":741},[731,9496,3251],{"class":797},[731,9498,969],{"class":741},[731,9500,930],{"class":741},[731,9502,794],{"class":741},[731,9504,4579],{"class":797},[731,9506,969],{"class":741},[731,9508,1223],{"class":784},[731,9510,9511],{"class":733,"line":827},[731,9512,824],{"emptyLinePlaceholder":823},[731,9514,9515,9517,9519,9521,9523,9525,9527,9529,9531],{"class":733,"line":845},[731,9516,4592],{"class":921},[731,9518,4595],{"class":836},[731,9520,839],{"class":741},[731,9522,4600],{"class":1753},[731,9524,742],{"class":741},[731,9526,3178],{"class":737},[731,9528,2821],{"class":741},[731,9530,3178],{"class":737},[731,9532,745],{"class":741},[731,9534,9535,9537,9539,9541,9543,9545,9547,9549,9551,9553,9555,9557,9559,9561,9563],{"class":733,"line":878},[731,9536,2867],{"class":777},[731,9538,1750],{"class":848},[731,9540,4619],{"class":784},[731,9542,1184],{"class":741},[731,9544,4624],{"class":836},[731,9546,839],{"class":848},[731,9548,4600],{"class":784},[731,9550,4631],{"class":848},[731,9552,2881],{"class":777},[731,9554,4636],{"class":784},[731,9556,1184],{"class":741},[731,9558,99],{"class":836},[731,9560,839],{"class":848},[731,9562,4645],{"class":784},[731,9564,884],{"class":848},[731,9566,9567,9569,9571,9573,9575,9577,9579,9581,9583,9585,9587,9589,9591,9593],{"class":733,"line":1806},[731,9568,2867],{"class":777},[731,9570,1750],{"class":848},[731,9572,2872],{"class":741},[731,9574,4600],{"class":784},[731,9576,4660],{"class":741},[731,9578,4663],{"class":741},[731,9580,4636],{"class":784},[731,9582,4668],{"class":741},[731,9584,794],{"class":741},[731,9586,4673],{"class":797},[731,9588,969],{"class":741},[731,9590,2878],{"class":848},[731,9592,2881],{"class":777},[731,9594,4682],{"class":784},[731,9596,9597],{"class":733,"line":1811},[731,9598,824],{"emptyLinePlaceholder":823},[731,9600,9601,9603,9605,9607,9609,9611,9613,9615,9617,9619,9621],{"class":733,"line":1818},[731,9602,1766],{"class":921},[731,9604,3280],{"class":784},[731,9606,742],{"class":741},[731,9608,3168],{"class":737},[731,9610,3159],{"class":741},[731,9612,3173],{"class":737},[731,9614,930],{"class":741},[731,9616,3178],{"class":737},[731,9618,3270],{"class":741},[731,9620,948],{"class":741},[731,9622,4711],{"class":741},[731,9624,9625,9627,9629,9631,9633,9635,9637,9639,9641,9643,9645,9647,9649,9651,9653,9655],{"class":733,"line":1824},[731,9626,3299],{"class":777},[731,9628,1750],{"class":848},[731,9630,1535],{"class":921},[731,9632,854],{"class":741},[731,9634,3327],{"class":784},[731,9636,930],{"class":741},[731,9638,4728],{"class":784},[731,9640,2842],{"class":741},[731,9642,3309],{"class":741},[731,9644,4735],{"class":784},[731,9646,1184],{"class":741},[731,9648,4740],{"class":836},[731,9650,839],{"class":848},[731,9652,4600],{"class":784},[731,9654,4631],{"class":848},[731,9656,842],{"class":741},[731,9658,9659,9661,9663,9665,9667,9669,9671],{"class":733,"line":1829},[731,9660,4753],{"class":921},[731,9662,4756],{"class":784},[731,9664,948],{"class":741},[731,9666,3306],{"class":784},[731,9668,1184],{"class":741},[731,9670,4765],{"class":836},[731,9672,2208],{"class":848},[731,9674,9675,9677,9679,9681,9683,9685,9687,9689,9691,9693,9695,9697,9699,9701,9703,9705,9707,9709,9711,9713,9715,9717,9719,9721,9723,9725],{"class":733,"line":1835},[731,9676,4772],{"class":784},[731,9678,3347],{"class":848},[731,9680,3327],{"class":784},[731,9682,4779],{"class":848},[731,9684,1193],{"class":741},[731,9686,4784],{"class":784},[731,9688,1184],{"class":741},[731,9690,4789],{"class":836},[731,9692,839],{"class":848},[731,9694,4794],{"class":1753},[731,9696,1759],{"class":921},[731,9698,4756],{"class":784},[731,9700,1184],{"class":741},[731,9702,4803],{"class":836},[731,9704,839],{"class":848},[731,9706,4794],{"class":784},[731,9708,4631],{"class":848},[731,9710,4812],{"class":741},[731,9712,794],{"class":741},[731,9714,4817],{"class":797},[731,9716,969],{"class":741},[731,9718,4822],{"class":741},[731,9720,4595],{"class":836},[731,9722,839],{"class":848},[731,9724,4829],{"class":784},[731,9726,884],{"class":848},[731,9728,9729],{"class":733,"line":1850},[731,9730,3363],{"class":741},[731,9732,9733,9735],{"class":733,"line":1860},[731,9734,2329],{"class":777},[731,9736,3371],{"class":784},[731,9738,9739],{"class":733,"line":1877},[731,9740,766],{"class":741},[731,9742,9743,9745,9747,9749,9751,9753],{"class":733,"line":1902},[731,9744,830],{"class":777},[731,9746,833],{"class":777},[731,9748,927],{"class":836},[731,9750,1607],{"class":784},[731,9752,930],{"class":741},[731,9754,745],{"class":741},[731,9756,9757,9759,9761,9763,9765,9767,9769],{"class":733,"line":1908},[731,9758,5747],{"class":836},[731,9760,742],{"class":741},[731,9762,1750],{"class":741},[731,9764,4902],{"class":1753},[731,9766,1216],{"class":741},[731,9768,1759],{"class":921},[731,9770,745],{"class":741},[731,9772,9773],{"class":733,"line":1914},[731,9774,5764],{"class":1814},[731,9776,9777,9779,9781,9783,9785,9787,9789,9791,9793,9795,9797,9799,9801,9803,9805],{"class":733,"line":1922},[731,9778,5769],{"class":784},[731,9780,1184],{"class":741},[731,9782,1754],{"class":784},[731,9784,948],{"class":741},[731,9786,4595],{"class":836},[731,9788,839],{"class":848},[731,9790,4902],{"class":784},[731,9792,1184],{"class":741},[731,9794,1754],{"class":784},[731,9796,2878],{"class":848},[731,9798,4939],{"class":777},[731,9800,4663],{"class":741},[731,9802,4944],{"class":784},[731,9804,1184],{"class":741},[731,9806,4949],{"class":784},[731,9808,9809],{"class":733,"line":2125},[731,9810,1911],{"class":741},[731,9812,9813,9815],{"class":733,"line":2354},[731,9814,881],{"class":741},[731,9816,884],{"class":784},[721,9818,9820],{"className":723,"code":9819,"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 lower = key.toLowerCase()\n    result[key] = SENSITIVE_KEYS.some(k => lower.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,9821,9822,9840,9844,9902,9906,9926,9958,9988,9992,10016,10050,10066,10120,10124,10130,10134,10142,10158,10162,10194,10198],{"__ignoreMap":727},[731,9823,9824,9826,9828,9830,9832,9834,9836,9838],{"class":733,"line":734},[731,9825,778],{"class":777},[731,9827,781],{"class":741},[731,9829,1635],{"class":784},[731,9831,788],{"class":741},[731,9833,791],{"class":777},[731,9835,794],{"class":741},[731,9837,738],{"class":797},[731,9839,801],{"class":741},[731,9841,9842],{"class":733,"line":748},[731,9843,824],{"emptyLinePlaceholder":823},[731,9845,9846,9848,9850,9852,9854,9856,9858,9860,9862,9864,9866,9868,9870,9872,9874,9876,9878,9880,9882,9884,9886,9888,9890,9892,9894,9896,9898,9900],{"class":733,"line":763},[731,9847,1535],{"class":921},[731,9849,4529],{"class":784},[731,9851,1193],{"class":741},[731,9853,854],{"class":784},[731,9855,969],{"class":741},[731,9857,3215],{"class":797},[731,9859,969],{"class":741},[731,9861,930],{"class":741},[731,9863,794],{"class":741},[731,9865,3224],{"class":797},[731,9867,969],{"class":741},[731,9869,930],{"class":741},[731,9871,794],{"class":741},[731,9873,3233],{"class":797},[731,9875,969],{"class":741},[731,9877,930],{"class":741},[731,9879,794],{"class":741},[731,9881,4562],{"class":797},[731,9883,969],{"class":741},[731,9885,930],{"class":741},[731,9887,794],{"class":741},[731,9889,3251],{"class":797},[731,9891,969],{"class":741},[731,9893,930],{"class":741},[731,9895,794],{"class":741},[731,9897,4579],{"class":797},[731,9899,969],{"class":741},[731,9901,1223],{"class":784},[731,9903,9904],{"class":733,"line":827},[731,9905,824],{"emptyLinePlaceholder":823},[731,9907,9908,9910,9912,9914,9916,9918,9920,9922,9924],{"class":733,"line":845},[731,9909,4592],{"class":921},[731,9911,4595],{"class":836},[731,9913,839],{"class":741},[731,9915,4600],{"class":1753},[731,9917,742],{"class":741},[731,9919,3178],{"class":737},[731,9921,2821],{"class":741},[731,9923,3178],{"class":737},[731,9925,745],{"class":741},[731,9927,9928,9930,9932,9934,9936,9938,9940,9942,9944,9946,9948,9950,9952,9954,9956],{"class":733,"line":878},[731,9929,2867],{"class":777},[731,9931,1750],{"class":848},[731,9933,4619],{"class":784},[731,9935,1184],{"class":741},[731,9937,4624],{"class":836},[731,9939,839],{"class":848},[731,9941,4600],{"class":784},[731,9943,4631],{"class":848},[731,9945,2881],{"class":777},[731,9947,4636],{"class":784},[731,9949,1184],{"class":741},[731,9951,99],{"class":836},[731,9953,839],{"class":848},[731,9955,4645],{"class":784},[731,9957,884],{"class":848},[731,9959,9960,9962,9964,9966,9968,9970,9972,9974,9976,9978,9980,9982,9984,9986],{"class":733,"line":1806},[731,9961,2867],{"class":777},[731,9963,1750],{"class":848},[731,9965,2872],{"class":741},[731,9967,4600],{"class":784},[731,9969,4660],{"class":741},[731,9971,4663],{"class":741},[731,9973,4636],{"class":784},[731,9975,4668],{"class":741},[731,9977,794],{"class":741},[731,9979,4673],{"class":797},[731,9981,969],{"class":741},[731,9983,2878],{"class":848},[731,9985,2881],{"class":777},[731,9987,4682],{"class":784},[731,9989,9990],{"class":733,"line":1811},[731,9991,824],{"emptyLinePlaceholder":823},[731,9993,9994,9996,9998,10000,10002,10004,10006,10008,10010,10012,10014],{"class":733,"line":1818},[731,9995,1766],{"class":921},[731,9997,3280],{"class":784},[731,9999,742],{"class":741},[731,10001,3168],{"class":737},[731,10003,3159],{"class":741},[731,10005,3173],{"class":737},[731,10007,930],{"class":741},[731,10009,3178],{"class":737},[731,10011,3270],{"class":741},[731,10013,948],{"class":741},[731,10015,4711],{"class":741},[731,10017,10018,10020,10022,10024,10026,10028,10030,10032,10034,10036,10038,10040,10042,10044,10046,10048],{"class":733,"line":1824},[731,10019,3299],{"class":777},[731,10021,1750],{"class":848},[731,10023,1535],{"class":921},[731,10025,854],{"class":741},[731,10027,3327],{"class":784},[731,10029,930],{"class":741},[731,10031,4728],{"class":784},[731,10033,2842],{"class":741},[731,10035,3309],{"class":741},[731,10037,4735],{"class":784},[731,10039,1184],{"class":741},[731,10041,4740],{"class":836},[731,10043,839],{"class":848},[731,10045,4600],{"class":784},[731,10047,4631],{"class":848},[731,10049,842],{"class":741},[731,10051,10052,10054,10056,10058,10060,10062,10064],{"class":733,"line":1829},[731,10053,4753],{"class":921},[731,10055,4756],{"class":784},[731,10057,948],{"class":741},[731,10059,3306],{"class":784},[731,10061,1184],{"class":741},[731,10063,4765],{"class":836},[731,10065,2208],{"class":848},[731,10067,10068,10070,10072,10074,10076,10078,10080,10082,10084,10086,10088,10090,10092,10094,10096,10098,10100,10102,10104,10106,10108,10110,10112,10114,10116,10118],{"class":733,"line":1835},[731,10069,4772],{"class":784},[731,10071,3347],{"class":848},[731,10073,3327],{"class":784},[731,10075,4779],{"class":848},[731,10077,1193],{"class":741},[731,10079,4784],{"class":784},[731,10081,1184],{"class":741},[731,10083,4789],{"class":836},[731,10085,839],{"class":848},[731,10087,4794],{"class":1753},[731,10089,1759],{"class":921},[731,10091,4756],{"class":784},[731,10093,1184],{"class":741},[731,10095,4803],{"class":836},[731,10097,839],{"class":848},[731,10099,4794],{"class":784},[731,10101,4631],{"class":848},[731,10103,4812],{"class":741},[731,10105,794],{"class":741},[731,10107,4817],{"class":797},[731,10109,969],{"class":741},[731,10111,4822],{"class":741},[731,10113,4595],{"class":836},[731,10115,839],{"class":848},[731,10117,4829],{"class":784},[731,10119,884],{"class":848},[731,10121,10122],{"class":733,"line":1850},[731,10123,3363],{"class":741},[731,10125,10126,10128],{"class":733,"line":1860},[731,10127,2329],{"class":777},[731,10129,3371],{"class":784},[731,10131,10132],{"class":733,"line":1877},[731,10133,766],{"class":741},[731,10135,10136,10138,10140],{"class":733,"line":1902},[731,10137,1654],{"class":836},[731,10139,839],{"class":784},[731,10141,842],{"class":741},[731,10143,10144,10146,10148,10150,10152,10154,10156],{"class":733,"line":1908},[731,10145,5747],{"class":836},[731,10147,742],{"class":741},[731,10149,1750],{"class":741},[731,10151,4902],{"class":1753},[731,10153,1216],{"class":741},[731,10155,1759],{"class":921},[731,10157,745],{"class":741},[731,10159,10160],{"class":733,"line":1914},[731,10161,5764],{"class":1814},[731,10163,10164,10166,10168,10170,10172,10174,10176,10178,10180,10182,10184,10186,10188,10190,10192],{"class":733,"line":1922},[731,10165,5769],{"class":784},[731,10167,1184],{"class":741},[731,10169,1754],{"class":784},[731,10171,948],{"class":741},[731,10173,4595],{"class":836},[731,10175,839],{"class":848},[731,10177,4902],{"class":784},[731,10179,1184],{"class":741},[731,10181,1754],{"class":784},[731,10183,2878],{"class":848},[731,10185,4939],{"class":777},[731,10187,4663],{"class":741},[731,10189,4944],{"class":784},[731,10191,1184],{"class":741},[731,10193,4949],{"class":784},[731,10195,10196],{"class":733,"line":2125},[731,10197,1911],{"class":741},[731,10199,10200,10202],{"class":733,"line":2354},[731,10201,881],{"class":741},[731,10203,884],{"class":784},[707,10205,10207],{"color":10206,"icon":478},"warning","Drain hook sanitization is a safety net, not a replacement for careful logging practices. Always sanitize at the source.",[612,10209,10211],{"id":10210},"production-checklist","Production Checklist",[608,10213,10214],{},"Before deploying to production, verify:",[1697,10216,10218],{"id":10217},"logging-configuration","Logging Configuration",[10220,10221,10224,10237,10243,10249],"ul",{"className":10222},[10223],"contains-task-list",[10225,10226,10229,10233,10234,1216],"li",{"className":10227},[10228],"task-list-item",[10230,10231],"input",{"disabled":823,"type":10232},"checkbox"," Service name is set (",[620,10235,10236],{},"env.service",[10225,10238,10240,10242],{"className":10239},[10228],[10230,10241],{"disabled":823,"type":10232}," Sampling is configured for high-traffic routes",[10225,10244,10246,10248],{"className":10245},[10228],[10230,10247],{"disabled":823,"type":10232}," Log draining is set up for external service (Axiom, Loki, etc.)",[10225,10250,10252,10254,10255,1216],{"className":10251},[10228],[10230,10253],{"disabled":823,"type":10232}," Pretty mode is disabled in production (",[620,10256,10257],{},"pretty: false",[1697,10259,10261],{"id":10260},"data-security","Data Security",[10220,10263,10265,10273,10279,10285,10291,10297,10303],{"className":10264},[10223],[10225,10266,10268,10270,10271,1216],{"className":10267},[10228],[10230,10269],{"disabled":823,"type":10232}," Auto-redaction is enabled (",[620,10272,1690],{},[10225,10274,10276,10278],{"className":10275},[10228],[10230,10277],{"disabled":823,"type":10232}," No passwords or secrets in logs",[10225,10280,10282,10284],{"className":10281},[10228],[10230,10283],{"disabled":823,"type":10232}," No full credit card numbers (only last 4 digits)",[10225,10286,10288,10290],{"className":10287},[10228],[10230,10289],{"disabled":823,"type":10232}," No API keys or tokens",[10225,10292,10294,10296],{"className":10293},[10228],[10230,10295],{"disabled":823,"type":10232}," PII is masked or omitted (emails, phone numbers)",[10225,10298,10300,10302],{"className":10299},[10228],[10230,10301],{"disabled":823,"type":10232}," Session tokens are not logged",[10225,10304,10306,10308,10309,1216],{"className":10305},[10228],[10230,10307],{"disabled":823,"type":10232}," Request bodies are selectively logged (not ",[620,10310,10311],{},"log.set({ body })",[1697,10313,10315],{"id":10314},"error-handling","Error Handling",[10220,10317,10319,10329,10335],{"className":10318},[10223],[10225,10320,10322,10324,10325,10328],{"className":10321},[10228],[10230,10323],{"disabled":823,"type":10232}," Errors use ",[620,10326,10327],{},"createError()"," with structured fields",[10225,10330,10332,10334],{"className":10331},[10228],[10230,10333],{"disabled":823,"type":10232}," Sensitive data is not included in error messages",[10225,10336,10338,10340],{"className":10337},[10228],[10230,10339],{"disabled":823,"type":10232}," Stack traces don't expose internal paths in production",[612,10342,10344],{"id":10343},"group-fields-so-they-stay-queryable","Group fields so they stay queryable",[608,10346,10347],{},"Use consistent, grouped field names across your codebase:",[721,10349,10352],{"className":723,"code":10350,"filename":10351,"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,10353,10354,10359,10371,10396,10420,10444,10450,10454,10459,10471,10487,10499,10511,10526],{"__ignoreMap":727},[731,10355,10356],{"class":733,"line":734},[731,10357,10358],{"class":1814},"\u002F\u002F ✅ Good - grouped and descriptive\n",[731,10360,10361,10363,10365,10367,10369],{"class":733,"line":748},[731,10362,2420],{"class":784},[731,10364,1184],{"class":741},[731,10366,1843],{"class":836},[731,10368,839],{"class":784},[731,10370,842],{"class":741},[731,10372,10373,10376,10378,10380,10383,10385,10388,10390,10393],{"class":733,"line":763},[731,10374,10375],{"class":848},"  user",[731,10377,742],{"class":741},[731,10379,781],{"class":741},[731,10381,10382],{"class":784}," id",[731,10384,930],{"class":741},[731,10386,10387],{"class":784}," plan",[731,10389,930],{"class":741},[731,10391,10392],{"class":784}," accountAge ",[731,10394,10395],{"class":741},"},\n",[731,10397,10398,10401,10403,10405,10408,10410,10413,10415,10418],{"class":733,"line":827},[731,10399,10400],{"class":848},"  cart",[731,10402,742],{"class":741},[731,10404,781],{"class":741},[731,10406,10407],{"class":784}," items",[731,10409,930],{"class":741},[731,10411,10412],{"class":784}," total",[731,10414,930],{"class":741},[731,10416,10417],{"class":784}," currency ",[731,10419,10395],{"class":741},[731,10421,10422,10425,10427,10429,10432,10434,10437,10439,10442],{"class":733,"line":845},[731,10423,10424],{"class":848},"  payment",[731,10426,742],{"class":741},[731,10428,781],{"class":741},[731,10430,10431],{"class":784}," method",[731,10433,930],{"class":741},[731,10435,10436],{"class":784}," provider",[731,10438,930],{"class":741},[731,10440,10441],{"class":784}," last4 ",[731,10443,10395],{"class":741},[731,10445,10446,10448],{"class":733,"line":878},[731,10447,881],{"class":741},[731,10449,884],{"class":784},[731,10451,10452],{"class":733,"line":1806},[731,10453,824],{"emptyLinePlaceholder":823},[731,10455,10456],{"class":733,"line":1811},[731,10457,10458],{"class":1814},"\u002F\u002F ❌ Bad - flat and abbreviated\n",[731,10460,10461,10463,10465,10467,10469],{"class":733,"line":1818},[731,10462,2420],{"class":784},[731,10464,1184],{"class":741},[731,10466,1843],{"class":836},[731,10468,839],{"class":784},[731,10470,842],{"class":741},[731,10472,10473,10476,10478,10480,10483,10485],{"class":733,"line":1824},[731,10474,10475],{"class":848},"  uid",[731,10477,742],{"class":741},[731,10479,794],{"class":741},[731,10481,10482],{"class":797},"123",[731,10484,969],{"class":741},[731,10486,760],{"class":741},[731,10488,10489,10492,10494,10497],{"class":733,"line":1829},[731,10490,10491],{"class":848},"  n",[731,10493,742],{"class":741},[731,10495,10496],{"class":2935}," 3",[731,10498,760],{"class":741},[731,10500,10501,10504,10506,10509],{"class":733,"line":1835},[731,10502,10503],{"class":848},"  t",[731,10505,742],{"class":741},[731,10507,10508],{"class":2935}," 9999",[731,10510,760],{"class":741},[731,10512,10513,10516,10518,10520,10522,10524],{"class":733,"line":1850},[731,10514,10515],{"class":848},"  pm",[731,10517,742],{"class":741},[731,10519,794],{"class":741},[731,10521,2993],{"class":797},[731,10523,969],{"class":741},[731,10525,760],{"class":741},[731,10527,10528,10530],{"class":733,"line":1860},[731,10529,881],{"class":741},[731,10531,884],{"class":784},[1697,10533,10535],{"id":10534},"recommended-field-structure","Recommended Field Structure",[629,10537,10538,10547],{},[632,10539,10540],{},[635,10541,10542,10544],{},[638,10543,640],{},[638,10545,10546],{},"Fields",[648,10548,10549,10569,10589,10614,10634],{},[635,10550,10551,10555],{},[653,10552,10553],{},[620,10554,3530],{},[653,10556,10557,10559,10560,10559,10563,10559,10566],{},[620,10558,1872],{},", ",[620,10561,10562],{},"plan",[620,10564,10565],{},"role",[620,10567,10568],{},"accountAge",[635,10570,10571,10575],{},[653,10572,10573],{},[620,10574,2184],{},[653,10576,10577,10559,10580,10559,10583,10559,10586],{},[620,10578,10579],{},"method",[620,10581,10582],{},"path",[620,10584,10585],{},"requestId",[620,10587,10588],{},"traceId",[635,10590,10591,10600],{},[653,10592,10593,10596,10597],{},[620,10594,10595],{},"cart"," \u002F ",[620,10598,10599],{},"order",[653,10601,10602,10559,10605,10559,10608,10559,10611],{},[620,10603,10604],{},"items",[620,10606,10607],{},"total",[620,10609,10610],{},"currency",[620,10612,10613],{},"coupon",[635,10615,10616,10621],{},[653,10617,10618],{},[620,10619,10620],{},"payment",[653,10622,10623,10559,10625,10559,10628,10559,10631],{},[620,10624,10579],{},[620,10626,10627],{},"provider",[620,10629,10630],{},"last4",[620,10632,10633],{},"status",[635,10635,10636,10641],{},[653,10637,10638],{},[620,10639,10640],{},"outcome",[653,10642,10643,10559,10645,10559,10648],{},[620,10644,10633],{},[620,10646,10647],{},"duration",[620,10649,709],{},[612,10651,10653],{"id":10652},"decide-what-survives-sampling","Decide what survives sampling",[608,10655,10656],{},"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,10658,10660],{"className":723,"code":10659,"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,10661,10662,10675,10683,10692,10697,10706,10721,10736,10751,10766,10771,10776,10785,10804,10821,10842,10849,10853,10858],{"__ignoreMap":727},[731,10663,10664,10666,10668,10671,10673],{"class":733,"line":734},[731,10665,830],{"class":777},[731,10667,833],{"class":777},[731,10669,10670],{"class":836}," defineNuxtConfig",[731,10672,839],{"class":784},[731,10674,842],{"class":741},[731,10676,10677,10679,10681],{"class":733,"line":748},[731,10678,1201],{"class":848},[731,10680,742],{"class":741},[731,10682,745],{"class":741},[731,10684,10685,10688,10690],{"class":733,"line":763},[731,10686,10687],{"class":848},"    sampling",[731,10689,742],{"class":741},[731,10691,745],{"class":741},[731,10693,10694],{"class":733,"line":827},[731,10695,10696],{"class":1814},"      \u002F\u002F Head sampling: random percentage per level\n",[731,10698,10699,10702,10704],{"class":733,"line":845},[731,10700,10701],{"class":848},"      rates",[731,10703,742],{"class":741},[731,10705,745],{"class":741},[731,10707,10708,10711,10713,10716,10718],{"class":733,"line":878},[731,10709,10710],{"class":848},"        info",[731,10712,742],{"class":741},[731,10714,10715],{"class":2935}," 10",[731,10717,930],{"class":741},[731,10719,10720],{"class":1814},"    \u002F\u002F 10% of success logs\n",[731,10722,10723,10726,10728,10731,10733],{"class":733,"line":1806},[731,10724,10725],{"class":848},"        warn",[731,10727,742],{"class":741},[731,10729,10730],{"class":2935}," 50",[731,10732,930],{"class":741},[731,10734,10735],{"class":1814},"    \u002F\u002F 50% of warnings\n",[731,10737,10738,10741,10743,10746,10748],{"class":733,"line":1811},[731,10739,10740],{"class":848},"        debug",[731,10742,742],{"class":741},[731,10744,10745],{"class":2935}," 0",[731,10747,930],{"class":741},[731,10749,10750],{"class":1814},"    \u002F\u002F No debug logs in prod\n",[731,10752,10753,10756,10758,10761,10763],{"class":733,"line":1818},[731,10754,10755],{"class":848},"        error",[731,10757,742],{"class":741},[731,10759,10760],{"class":2935}," 100",[731,10762,930],{"class":741},[731,10764,10765],{"class":1814},"  \u002F\u002F Always keep errors\n",[731,10767,10768],{"class":733,"line":1824},[731,10769,10770],{"class":741},"      },\n",[731,10772,10773],{"class":733,"line":1829},[731,10774,10775],{"class":1814},"      \u002F\u002F Tail sampling: force-keep based on outcome\n",[731,10777,10778,10781,10783],{"class":733,"line":1835},[731,10779,10780],{"class":848},"      keep",[731,10782,742],{"class":741},[731,10784,1196],{"class":784},[731,10786,10787,10790,10793,10795,10798,10801],{"class":733,"line":1850},[731,10788,10789],{"class":741},"        {",[731,10791,10792],{"class":848}," duration",[731,10794,742],{"class":741},[731,10796,10797],{"class":2935}," 1000",[731,10799,10800],{"class":741}," },",[731,10802,10803],{"class":1814},"           \u002F\u002F Slow requests (≥1s)\n",[731,10805,10806,10808,10811,10813,10816,10818],{"class":733,"line":1860},[731,10807,10789],{"class":741},[731,10809,10810],{"class":848}," status",[731,10812,742],{"class":741},[731,10814,10815],{"class":2935}," 400",[731,10817,10800],{"class":741},[731,10819,10820],{"class":1814},"              \u002F\u002F Client\u002Fserver errors\n",[731,10822,10823,10825,10828,10830,10832,10835,10837,10839],{"class":733,"line":1877},[731,10824,10789],{"class":741},[731,10826,10827],{"class":848}," path",[731,10829,742],{"class":741},[731,10831,794],{"class":741},[731,10833,10834],{"class":797},"\u002Fapi\u002Fpayments\u002F**",[731,10836,969],{"class":741},[731,10838,10800],{"class":741},[731,10840,10841],{"class":1814}," \u002F\u002F Critical paths\n",[731,10843,10844,10847],{"class":733,"line":1902},[731,10845,10846],{"class":784},"      ]",[731,10848,760],{"class":741},[731,10850,10851],{"class":733,"line":1908},[731,10852,1911],{"class":741},[731,10854,10855],{"class":733,"line":1914},[731,10856,10857],{"class":741},"  },\n",[731,10859,10860,10862],{"class":733,"line":1922},[731,10861,881],{"class":741},[731,10863,884],{"class":784},[707,10865,10867,10868,10871,10872,1184],{"color":10866,"icon":13},"info","Use ",[620,10869,10870],{},"$production"," override to keep full logging in development while sampling in production. See ",[1681,10873,10875],{"href":10874},"\u002Fintegrate\u002Fframeworks\u002Fnuxt#sampling","Nuxt framework guide",[612,10877,10879],{"id":10878},"next-steps","Next Steps",[10220,10881,10882,10887,10892],{},[10225,10883,10884,10886],{},[1681,10885,71],{"href":72}," - Built-in PII protection with smart masking",[10225,10888,10889,10891],{},[1681,10890,51],{"href":52}," - Design effective wide events",[10225,10893,10894,10896],{},[1681,10895,56],{"href":57}," - Error handling patterns",[10898,10899,10900],"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":10902},[10903,10904,10905,10910,10915,10918,10919],{"id":614,"depth":748,"text":615},{"id":713,"depth":748,"text":71},{"id":1694,"depth":748,"text":1695,"children":10906},[10907,10908,10909],{"id":1699,"depth":763,"text":1700},{"id":2772,"depth":763,"text":2773},{"id":4510,"depth":763,"text":4511},{"id":10210,"depth":748,"text":10211,"children":10911},[10912,10913,10914],{"id":10217,"depth":763,"text":10218},{"id":10260,"depth":763,"text":10261},{"id":10314,"depth":763,"text":10315},{"id":10343,"depth":748,"text":10344,"children":10916},[10917],{"id":10534,"depth":763,"text":10535},{"id":10652,"depth":748,"text":10653},{"id":10878,"depth":748,"text":10879},"Security guidelines, data sanitization, and production tips for evlog. Learn what not to log and how to protect sensitive data.","md",[10923],{"label":148,"icon":146,"to":153,"color":10924,"variant":10925},"neutral","subtle",{},{"icon":388},{"title":560,"description":10920},"TlvpF_d-U1QD1IqOwSni0f4ez1Dd3oL92tWqlB3pBqY",[10931,10933],{"title":555,"path":556,"stem":557,"description":10932,"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":10934,"icon":567,"children":-1},"Choose a logger by context model, extensibility, output, and migration cost, then follow the detailed comparison for your current stack.",1791059990421]