[{"data":1,"prerenderedAt":11227},["ShallowReactive",2],{"navigation_docs":3,"-reference-best-practices":607,"-reference-best-practices-surround":11222},[4,35,85,143,323,484,543,582],{"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,138],{"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},"logs","\u002Fcli\u002Flogs","3.cli\u002F10.logs","i-lucide-scroll-text",{"title":104,"path":105,"stem":106,"icon":107},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":109,"path":110,"stem":111,"icon":112},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":114,"path":115,"stem":116,"icon":117},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":119,"path":120,"stem":121,"icon":122},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":124,"path":125,"stem":126,"icon":127},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":129,"path":130,"stem":131,"icon":132},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":134,"path":135,"stem":136,"icon":137},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":139,"path":140,"stem":141,"icon":142},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":144,"path":145,"stem":146,"children":147,"page":34},"Integrate","\u002Fintegrate","4.integrate",[148,152,235],{"title":41,"path":149,"stem":150,"icon":151},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":153,"path":154,"stem":155,"children":156,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[157,160,190,215],{"title":41,"path":158,"stem":159,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":161,"path":162,"stem":163,"children":164,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[165,170,175,180,185],{"title":166,"path":167,"stem":168,"icon":169},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":171,"path":172,"stem":173,"icon":174},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":176,"path":177,"stem":178,"icon":179},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":181,"path":182,"stem":183,"icon":184},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":186,"path":187,"stem":188,"icon":189},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":191,"path":192,"stem":193,"children":194,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[195,200,205,210],{"title":196,"path":197,"stem":198,"icon":199},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":201,"path":202,"stem":203,"icon":204},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":206,"path":207,"stem":208,"icon":209},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":211,"path":212,"stem":213,"icon":214},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":216,"path":217,"stem":218,"children":219,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[220,225,230],{"title":221,"path":222,"stem":223,"icon":224},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":226,"path":227,"stem":228,"icon":229},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":231,"path":232,"stem":233,"icon":234},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":236,"path":237,"stem":238,"children":239,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[240,244,249,254,259,264,269,274,279,284,289,294,299,304,308,313,318],{"title":41,"path":241,"stem":242,"icon":243},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":245,"path":246,"stem":247,"icon":248},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":250,"path":251,"stem":252,"icon":253},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":255,"path":256,"stem":257,"icon":258},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":260,"path":261,"stem":262,"icon":263},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":265,"path":266,"stem":267,"icon":268},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":270,"path":271,"stem":272,"icon":273},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":275,"path":276,"stem":277,"icon":278},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":280,"path":281,"stem":282,"icon":283},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":285,"path":286,"stem":287,"icon":288},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":290,"path":291,"stem":292,"icon":293},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":295,"path":296,"stem":297,"icon":298},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":300,"path":301,"stem":302,"icon":303},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":305,"path":306,"stem":307,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":309,"path":310,"stem":311,"icon":312},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":314,"path":315,"stem":316,"icon":317},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":319,"path":320,"stem":321,"icon":322},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":324,"path":325,"stem":326,"children":327,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[328,331,336,364,391,423,444,449,454,458],{"title":41,"path":329,"stem":330,"icon":112},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":332,"path":333,"stem":334,"icon":335},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":337,"icon":338,"path":339,"stem":340,"children":341,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[342,345,350,355,360],{"title":41,"path":343,"stem":344,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":346,"path":347,"stem":348,"icon":349},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":351,"path":352,"stem":353,"icon":354},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":356,"path":357,"stem":358,"icon":359},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":361,"path":362,"stem":363,"icon":142},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":365,"icon":366,"path":367,"stem":368,"children":369,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[370,373,378,383,387],{"title":41,"path":371,"stem":372,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":374,"path":375,"stem":376,"icon":377},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":379,"path":380,"stem":381,"icon":382},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":384,"path":385,"stem":386,"icon":335},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":388,"path":389,"stem":390,"icon":117},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":392,"icon":393,"path":394,"stem":395,"children":396,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[397,400,405,410,415,419],{"title":41,"path":398,"stem":399,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":401,"path":402,"stem":403,"icon":404},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":406,"path":407,"stem":408,"icon":409},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":411,"path":412,"stem":413,"icon":414},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":416,"path":417,"stem":418,"icon":393},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":420,"path":421,"stem":422,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":361,"icon":117,"path":424,"stem":425,"children":426,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[427,430,435,440],{"title":41,"path":428,"stem":429,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":431,"path":432,"stem":433,"icon":434},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":436,"path":437,"stem":438,"icon":439},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":441,"path":442,"stem":443,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":445,"path":446,"stem":447,"icon":448},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":450,"path":451,"stem":452,"icon":453},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":455,"path":456,"stem":457,"icon":439},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":459,"icon":460,"path":461,"stem":462,"children":463,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[464,467,472,477,480],{"title":41,"path":465,"stem":466,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":468,"path":469,"stem":470,"icon":471},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":473,"path":474,"stem":475,"icon":476},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":441,"path":478,"stem":479,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":420,"path":481,"stem":482,"icon":483},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":485,"path":486,"stem":487,"children":488,"page":34},"Extend","\u002Fextend","6.extend",[489,493,498,503,507,512,516,520,524,528,533,538],{"title":41,"path":490,"stem":491,"icon":492},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":494,"path":495,"stem":496,"icon":497},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":499,"path":500,"stem":501,"icon":502},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":504,"path":505,"stem":506,"icon":497},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":508,"path":509,"stem":510,"icon":511},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":420,"path":513,"stem":514,"icon":515},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":517,"path":518,"stem":519,"icon":492},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":521,"path":522,"stem":523,"icon":448},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":525,"path":526,"stem":527,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":529,"path":530,"stem":531,"icon":532},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":534,"path":535,"stem":536,"icon":537},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":539,"path":540,"stem":541,"icon":542},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":441,"path":544,"stem":545,"children":546,"page":34},"\u002Freference","7.reference",[547,551,556,559,564,568,573,577],{"title":41,"path":548,"stem":549,"icon":550},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":552,"path":553,"stem":554,"icon":555},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":388,"path":557,"stem":558,"icon":117},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":560,"path":561,"stem":562,"icon":563},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":565,"path":566,"stem":567,"icon":393},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":569,"path":570,"stem":571,"icon":572},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":574,"path":575,"stem":576,"icon":448},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":578,"path":579,"stem":580,"icon":581},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":583,"path":584,"stem":585,"children":586,"page":34},"Compare","\u002Fcompare","8.compare",[587,591,595,599,603],{"title":588,"path":589,"stem":590,"icon":572},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":592,"path":593,"stem":594,"icon":209},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":596,"path":597,"stem":598,"icon":572},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":600,"path":601,"stem":602,"icon":572},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":604,"path":605,"stem":606,"icon":572},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":608,"title":565,"body":609,"description":11212,"extension":11213,"links":11214,"meta":11218,"navigation":11219,"path":566,"seo":11220,"stem":567,"__hash__":11221},"docs\u002F7.reference\u002F4.best-practices.md",{"type":610,"value":611,"toc":11193},"minimark",[612,616,621,633,711,716,719,722,1674,1689,1697,1701,1706,1709,2775,2779,2782,3382,3385,4513,4517,4520,10496,10500,10504,10507,10511,10550,10554,10604,10608,10633,10637,10640,10824,10828,10942,10946,10949,11156,11168,11172,11189],[613,614,615],"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.",[617,618,620],"h2",{"id":619},"what-not-to-log","What NOT to Log",[613,622,623,624,628,629],{},"The same accumulation that makes a wide event worth querying puts a secret in your drain the moment one reaches ",[625,626,627],"code",{},"log.set",". ",[630,631,632],"strong",{},"Never log:",[634,635,636,652],"table",{},[637,638,639],"thead",{},[640,641,642,646,649],"tr",{},[643,644,645],"th",{},"Category",[643,647,648],{},"Examples",[643,650,651],{},"Risk",[653,654,655,667,678,689,700],"tbody",{},[640,656,657,661,664],{},[658,659,660],"td",{},"Credentials",[658,662,663],{},"Passwords, API keys, tokens, secrets",[658,665,666],{},"Account compromise",[640,668,669,672,675],{},[658,670,671],{},"Payment data",[658,673,674],{},"Full card numbers, CVV, bank accounts",[658,676,677],{},"PCI compliance violation",[640,679,680,683,686],{},[658,681,682],{},"Personal data (PII)",[658,684,685],{},"SSN, passport numbers, driver's license",[658,687,688],{},"Privacy laws (GDPR, CCPA)",[640,690,691,694,697],{},[658,692,693],{},"Health data",[658,695,696],{},"Medical records, diagnoses",[658,698,699],{},"HIPAA violation",[640,701,702,705,708],{},[658,703,704],{},"Authentication",[658,706,707],{},"Session tokens, JWTs, refresh tokens",[658,709,710],{},"Session hijacking",[712,713,715],"callout",{"color":714,"icon":59},"error","Logs are often accessible to your entire team and may be stored in third-party services. Treat them as semi-public.",[617,717,71],{"id":718},"auto-redaction",[613,720,721],{},"The simplest way to protect PII is to enable built-in auto-redaction:",[723,724,725,772,890,993,1059,1143,1229,1287,1341,1399,1453,1507,1573,1627],"framework-tabs",{},[726,727,733],"pre",{"className":728,"code":729,"filename":245,"language":730,"meta":731,"style":732},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","evlog: {\n  redact: true,\n}\n","typescript","nuxt.config.ts","",[625,734,735,751,766],{"__ignoreMap":732},[736,737,740,744,748],"span",{"class":738,"line":739},"line",1,[736,741,743],{"class":742},"sBMFI","evlog",[736,745,747],{"class":746},"sMK4o",":",[736,749,750],{"class":746}," {\n",[736,752,754,757,759,763],{"class":738,"line":753},2,[736,755,756],{"class":742},"  redact",[736,758,747],{"class":746},[736,760,762],{"class":761},"sfNiH"," true",[736,764,765],{"class":746},",\n",[736,767,769],{"class":738,"line":768},3,[736,770,771],{"class":746},"}\n",[726,773,776],{"className":728,"code":774,"filename":260,"language":730,"meta":775,"style":732},"import { defineConfig } from 'nitro'\nimport evlog from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineConfig({\n  modules: [evlog({ redact: true })],\n})\n","nitro.config.ts",[625,777,778,807,824,830,848,881],{"__ignoreMap":732},[736,779,780,784,787,791,794,797,800,804],{"class":738,"line":739},[736,781,783],{"class":782},"s7zQu","import",[736,785,786],{"class":746}," {",[736,788,790],{"class":789},"sTEyZ"," defineConfig",[736,792,793],{"class":746}," }",[736,795,796],{"class":782}," from",[736,798,799],{"class":746}," '",[736,801,803],{"class":802},"sfazB","nitro",[736,805,806],{"class":746},"'\n",[736,808,809,811,814,817,819,822],{"class":738,"line":753},[736,810,783],{"class":782},[736,812,813],{"class":789}," evlog ",[736,815,816],{"class":782},"from",[736,818,799],{"class":746},[736,820,821],{"class":802},"evlog\u002Fnitro\u002Fv3",[736,823,806],{"class":746},[736,825,826],{"class":738,"line":768},[736,827,829],{"emptyLinePlaceholder":828},true,"\n",[736,831,833,836,839,842,845],{"class":738,"line":832},4,[736,834,835],{"class":782},"export",[736,837,838],{"class":782}," default",[736,840,790],{"class":841},"s2Zo4",[736,843,844],{"class":789},"(",[736,846,847],{"class":746},"{\n",[736,849,851,855,857,860,862,864,867,870,872,874,876,879],{"class":738,"line":850},5,[736,852,854],{"class":853},"swJcz","  modules",[736,856,747],{"class":746},[736,858,859],{"class":789}," [",[736,861,743],{"class":841},[736,863,844],{"class":789},[736,865,866],{"class":746},"{",[736,868,869],{"class":853}," redact",[736,871,747],{"class":746},[736,873,762],{"class":761},[736,875,793],{"class":746},[736,877,878],{"class":789},")]",[736,880,765],{"class":746},[736,882,884,887],{"class":738,"line":883},6,[736,885,886],{"class":746},"}",[736,888,889],{"class":789},")\n",[726,891,894],{"className":728,"code":892,"filename":250,"language":730,"meta":893,"style":732},"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",[625,895,896,916,920,960,977,987],{"__ignoreMap":732},[736,897,898,900,902,905,907,909,911,914],{"class":738,"line":739},[736,899,783],{"class":782},[736,901,786],{"class":746},[736,903,904],{"class":789}," createEvlog",[736,906,793],{"class":746},[736,908,796],{"class":782},[736,910,799],{"class":746},[736,912,913],{"class":802},"evlog\u002Fnext",[736,915,806],{"class":746},[736,917,918],{"class":738,"line":753},[736,919,829],{"emptyLinePlaceholder":828},[736,921,922,924,928,930,933,936,939,941,944,946,949,951,954,956,958],{"class":738,"line":768},[736,923,835],{"class":782},[736,925,927],{"class":926},"spNyl"," const",[736,929,786],{"class":746},[736,931,932],{"class":789}," withEvlog",[736,934,935],{"class":746},",",[736,937,938],{"class":789}," useLogger",[736,940,935],{"class":746},[736,942,943],{"class":789}," log",[736,945,935],{"class":746},[736,947,948],{"class":789}," createError ",[736,950,886],{"class":746},[736,952,953],{"class":746}," =",[736,955,904],{"class":841},[736,957,844],{"class":789},[736,959,847],{"class":746},[736,961,962,965,967,969,972,975],{"class":738,"line":832},[736,963,964],{"class":853},"  service",[736,966,747],{"class":746},[736,968,799],{"class":746},[736,970,971],{"class":802},"my-app",[736,973,974],{"class":746},"'",[736,976,765],{"class":746},[736,978,979,981,983,985],{"class":738,"line":850},[736,980,756],{"class":853},[736,982,747],{"class":746},[736,984,762],{"class":761},[736,986,765],{"class":746},[736,988,989,991],{"class":738,"line":883},[736,990,886],{"class":746},[736,992,889],{"class":789},[726,994,997],{"className":728,"code":995,"filename":255,"language":730,"meta":996,"style":732},"import { createEvlogHooks } from 'evlog\u002Fsveltekit'\n\nexport const { handle, handleError } = createEvlogHooks({ redact: true })\n","src\u002Fhooks.server.ts",[625,998,999,1019,1023],{"__ignoreMap":732},[736,1000,1001,1003,1005,1008,1010,1012,1014,1017],{"class":738,"line":739},[736,1002,783],{"class":782},[736,1004,786],{"class":746},[736,1006,1007],{"class":789}," createEvlogHooks",[736,1009,793],{"class":746},[736,1011,796],{"class":782},[736,1013,799],{"class":746},[736,1015,1016],{"class":802},"evlog\u002Fsveltekit",[736,1018,806],{"class":746},[736,1020,1021],{"class":738,"line":753},[736,1022,829],{"emptyLinePlaceholder":828},[736,1024,1025,1027,1029,1031,1034,1036,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057],{"class":738,"line":768},[736,1026,835],{"class":782},[736,1028,927],{"class":926},[736,1030,786],{"class":746},[736,1032,1033],{"class":789}," handle",[736,1035,935],{"class":746},[736,1037,1038],{"class":789}," handleError ",[736,1040,886],{"class":746},[736,1042,953],{"class":746},[736,1044,1007],{"class":841},[736,1046,844],{"class":789},[736,1048,866],{"class":746},[736,1050,869],{"class":853},[736,1052,747],{"class":746},[736,1054,762],{"class":761},[736,1056,793],{"class":746},[736,1058,889],{"class":789},[726,1060,1061],{"className":728,"code":774,"filename":265,"language":730,"meta":775,"style":732},[625,1062,1063,1081,1095,1099,1111,1137],{"__ignoreMap":732},[736,1064,1065,1067,1069,1071,1073,1075,1077,1079],{"class":738,"line":739},[736,1066,783],{"class":782},[736,1068,786],{"class":746},[736,1070,790],{"class":789},[736,1072,793],{"class":746},[736,1074,796],{"class":782},[736,1076,799],{"class":746},[736,1078,803],{"class":802},[736,1080,806],{"class":746},[736,1082,1083,1085,1087,1089,1091,1093],{"class":738,"line":753},[736,1084,783],{"class":782},[736,1086,813],{"class":789},[736,1088,816],{"class":782},[736,1090,799],{"class":746},[736,1092,821],{"class":802},[736,1094,806],{"class":746},[736,1096,1097],{"class":738,"line":768},[736,1098,829],{"emptyLinePlaceholder":828},[736,1100,1101,1103,1105,1107,1109],{"class":738,"line":832},[736,1102,835],{"class":782},[736,1104,838],{"class":782},[736,1106,790],{"class":841},[736,1108,844],{"class":789},[736,1110,847],{"class":746},[736,1112,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135],{"class":738,"line":850},[736,1114,854],{"class":853},[736,1116,747],{"class":746},[736,1118,859],{"class":789},[736,1120,743],{"class":841},[736,1122,844],{"class":789},[736,1124,866],{"class":746},[736,1126,869],{"class":853},[736,1128,747],{"class":746},[736,1130,762],{"class":761},[736,1132,793],{"class":746},[736,1134,878],{"class":789},[736,1136,765],{"class":746},[736,1138,1139,1141],{"class":738,"line":883},[736,1140,886],{"class":746},[736,1142,889],{"class":789},[726,1144,1147],{"className":728,"code":1145,"filename":295,"language":730,"meta":1146,"style":732},"import { evlog } from 'evlog\u002Freact-router'\n\nexport const middleware: Route.MiddlewareFunction[] = [\n  evlog({ redact: true }),\n]\n","app\u002Froot.tsx",[625,1148,1149,1169,1173,1202,1224],{"__ignoreMap":732},[736,1150,1151,1153,1155,1158,1160,1162,1164,1167],{"class":738,"line":739},[736,1152,783],{"class":782},[736,1154,786],{"class":746},[736,1156,1157],{"class":789}," evlog",[736,1159,793],{"class":746},[736,1161,796],{"class":782},[736,1163,799],{"class":746},[736,1165,1166],{"class":802},"evlog\u002Freact-router",[736,1168,806],{"class":746},[736,1170,1171],{"class":738,"line":753},[736,1172,829],{"emptyLinePlaceholder":828},[736,1174,1175,1177,1179,1182,1184,1187,1190,1193,1196,1199],{"class":738,"line":768},[736,1176,835],{"class":782},[736,1178,927],{"class":926},[736,1180,1181],{"class":789}," middleware",[736,1183,747],{"class":746},[736,1185,1186],{"class":742}," Route",[736,1188,1189],{"class":746},".",[736,1191,1192],{"class":742},"MiddlewareFunction",[736,1194,1195],{"class":789},"[] ",[736,1197,1198],{"class":746},"=",[736,1200,1201],{"class":789}," [\n",[736,1203,1204,1207,1209,1211,1213,1215,1217,1219,1222],{"class":738,"line":832},[736,1205,1206],{"class":841},"  evlog",[736,1208,844],{"class":789},[736,1210,866],{"class":746},[736,1212,869],{"class":853},[736,1214,747],{"class":746},[736,1216,762],{"class":761},[736,1218,793],{"class":746},[736,1220,1221],{"class":789},")",[736,1223,765],{"class":746},[736,1225,1226],{"class":738,"line":850},[736,1227,1228],{"class":789},"]\n",[726,1230,1233],{"className":728,"code":1231,"filename":280,"language":730,"meta":1232,"style":732},"import { evlog } from 'evlog\u002Fhono'\n\napp.use(evlog({ redact: true }))\n","src\u002Findex.ts",[625,1234,1235,1254,1258],{"__ignoreMap":732},[736,1236,1237,1239,1241,1243,1245,1247,1249,1252],{"class":738,"line":739},[736,1238,783],{"class":782},[736,1240,786],{"class":746},[736,1242,1157],{"class":789},[736,1244,793],{"class":746},[736,1246,796],{"class":782},[736,1248,799],{"class":746},[736,1250,1251],{"class":802},"evlog\u002Fhono",[736,1253,806],{"class":746},[736,1255,1256],{"class":738,"line":753},[736,1257,829],{"emptyLinePlaceholder":828},[736,1259,1260,1263,1265,1268,1270,1272,1274,1276,1278,1280,1282,1284],{"class":738,"line":768},[736,1261,1262],{"class":789},"app",[736,1264,1189],{"class":746},[736,1266,1267],{"class":841},"use",[736,1269,844],{"class":789},[736,1271,743],{"class":841},[736,1273,844],{"class":789},[736,1275,866],{"class":746},[736,1277,869],{"class":853},[736,1279,747],{"class":746},[736,1281,762],{"class":761},[736,1283,793],{"class":746},[736,1285,1286],{"class":789},"))\n",[726,1288,1290],{"className":728,"code":1289,"filename":275,"language":730,"meta":1232,"style":732},"import { evlog } from 'evlog\u002Fexpress'\n\napp.use(evlog({ redact: true }))\n",[625,1291,1292,1311,1315],{"__ignoreMap":732},[736,1293,1294,1296,1298,1300,1302,1304,1306,1309],{"class":738,"line":739},[736,1295,783],{"class":782},[736,1297,786],{"class":746},[736,1299,1157],{"class":789},[736,1301,793],{"class":746},[736,1303,796],{"class":782},[736,1305,799],{"class":746},[736,1307,1308],{"class":802},"evlog\u002Fexpress",[736,1310,806],{"class":746},[736,1312,1313],{"class":738,"line":753},[736,1314,829],{"emptyLinePlaceholder":828},[736,1316,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339],{"class":738,"line":768},[736,1318,1262],{"class":789},[736,1320,1189],{"class":746},[736,1322,1267],{"class":841},[736,1324,844],{"class":789},[736,1326,743],{"class":841},[736,1328,844],{"class":789},[736,1330,866],{"class":746},[736,1332,869],{"class":853},[736,1334,747],{"class":746},[736,1336,762],{"class":761},[736,1338,793],{"class":746},[736,1340,1286],{"class":789},[726,1342,1344],{"className":728,"code":1343,"filename":285,"language":730,"meta":1232,"style":732},"import { evlog } from 'evlog\u002Ffastify'\n\nawait app.register(evlog, { redact: true })\n",[625,1345,1346,1365,1369],{"__ignoreMap":732},[736,1347,1348,1350,1352,1354,1356,1358,1360,1363],{"class":738,"line":739},[736,1349,783],{"class":782},[736,1351,786],{"class":746},[736,1353,1157],{"class":789},[736,1355,793],{"class":746},[736,1357,796],{"class":782},[736,1359,799],{"class":746},[736,1361,1362],{"class":802},"evlog\u002Ffastify",[736,1364,806],{"class":746},[736,1366,1367],{"class":738,"line":753},[736,1368,829],{"emptyLinePlaceholder":828},[736,1370,1371,1374,1377,1379,1382,1385,1387,1389,1391,1393,1395,1397],{"class":738,"line":768},[736,1372,1373],{"class":782},"await",[736,1375,1376],{"class":789}," app",[736,1378,1189],{"class":746},[736,1380,1381],{"class":841},"register",[736,1383,1384],{"class":789},"(evlog",[736,1386,935],{"class":746},[736,1388,786],{"class":746},[736,1390,869],{"class":853},[736,1392,747],{"class":746},[736,1394,762],{"class":761},[736,1396,793],{"class":746},[736,1398,889],{"class":789},[726,1400,1402],{"className":728,"code":1401,"filename":290,"language":730,"meta":1232,"style":732},"import { evlog } from 'evlog\u002Felysia'\n\napp.use(evlog({ redact: true }))\n",[625,1403,1404,1423,1427],{"__ignoreMap":732},[736,1405,1406,1408,1410,1412,1414,1416,1418,1421],{"class":738,"line":739},[736,1407,783],{"class":782},[736,1409,786],{"class":746},[736,1411,1157],{"class":789},[736,1413,793],{"class":746},[736,1415,796],{"class":782},[736,1417,799],{"class":746},[736,1419,1420],{"class":802},"evlog\u002Felysia",[736,1422,806],{"class":746},[736,1424,1425],{"class":738,"line":753},[736,1426,829],{"emptyLinePlaceholder":828},[736,1428,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451],{"class":738,"line":768},[736,1430,1262],{"class":789},[736,1432,1189],{"class":746},[736,1434,1267],{"class":841},[736,1436,844],{"class":789},[736,1438,743],{"class":841},[736,1440,844],{"class":789},[736,1442,866],{"class":746},[736,1444,869],{"class":853},[736,1446,747],{"class":746},[736,1448,762],{"class":761},[736,1450,793],{"class":746},[736,1452,1286],{"class":789},[726,1454,1457],{"className":728,"code":1455,"filename":270,"language":730,"meta":1456,"style":732},"import { EvlogModule } from 'evlog\u002Fnestjs'\n\nEvlogModule.forRoot({ redact: true })\n","src\u002Fapp.module.ts",[625,1458,1459,1479,1483],{"__ignoreMap":732},[736,1460,1461,1463,1465,1468,1470,1472,1474,1477],{"class":738,"line":739},[736,1462,783],{"class":782},[736,1464,786],{"class":746},[736,1466,1467],{"class":789}," EvlogModule",[736,1469,793],{"class":746},[736,1471,796],{"class":782},[736,1473,799],{"class":746},[736,1475,1476],{"class":802},"evlog\u002Fnestjs",[736,1478,806],{"class":746},[736,1480,1481],{"class":738,"line":753},[736,1482,829],{"emptyLinePlaceholder":828},[736,1484,1485,1488,1490,1493,1495,1497,1499,1501,1503,1505],{"class":738,"line":768},[736,1486,1487],{"class":789},"EvlogModule",[736,1489,1189],{"class":746},[736,1491,1492],{"class":841},"forRoot",[736,1494,844],{"class":789},[736,1496,866],{"class":746},[736,1498,869],{"class":853},[736,1500,747],{"class":746},[736,1502,762],{"class":761},[736,1504,793],{"class":746},[736,1506,889],{"class":789},[726,1508,1511],{"className":728,"code":1509,"filename":314,"language":730,"meta":1510,"style":732},"import { withEvlog } from 'evlog\u002Forpc'\n\nconst handler = withEvlog(new RPCHandler(router), { redact: true })\n","server\u002Forpc.ts",[625,1512,1513,1532,1536],{"__ignoreMap":732},[736,1514,1515,1517,1519,1521,1523,1525,1527,1530],{"class":738,"line":739},[736,1516,783],{"class":782},[736,1518,786],{"class":746},[736,1520,932],{"class":789},[736,1522,793],{"class":746},[736,1524,796],{"class":782},[736,1526,799],{"class":746},[736,1528,1529],{"class":802},"evlog\u002Forpc",[736,1531,806],{"class":746},[736,1533,1534],{"class":738,"line":753},[736,1535,829],{"emptyLinePlaceholder":828},[736,1537,1538,1541,1544,1546,1548,1550,1553,1556,1559,1561,1563,1565,1567,1569,1571],{"class":738,"line":768},[736,1539,1540],{"class":926},"const",[736,1542,1543],{"class":789}," handler ",[736,1545,1198],{"class":746},[736,1547,932],{"class":841},[736,1549,844],{"class":789},[736,1551,1552],{"class":746},"new",[736,1554,1555],{"class":841}," RPCHandler",[736,1557,1558],{"class":789},"(router)",[736,1560,935],{"class":746},[736,1562,786],{"class":746},[736,1564,869],{"class":853},[736,1566,747],{"class":746},[736,1568,762],{"class":761},[736,1570,793],{"class":746},[736,1572,889],{"class":789},[726,1574,1577],{"className":728,"code":1575,"filename":300,"language":730,"meta":1576,"style":732},"import { withEvlog } from 'evlog\u002Fworkers'\n\nexport default withEvlog(handler, { redact: true })\n","src\u002Fworker.ts",[625,1578,1579,1598,1602],{"__ignoreMap":732},[736,1580,1581,1583,1585,1587,1589,1591,1593,1596],{"class":738,"line":739},[736,1582,783],{"class":782},[736,1584,786],{"class":746},[736,1586,932],{"class":789},[736,1588,793],{"class":746},[736,1590,796],{"class":782},[736,1592,799],{"class":746},[736,1594,1595],{"class":802},"evlog\u002Fworkers",[736,1597,806],{"class":746},[736,1599,1600],{"class":738,"line":753},[736,1601,829],{"emptyLinePlaceholder":828},[736,1603,1604,1606,1608,1610,1613,1615,1617,1619,1621,1623,1625],{"class":738,"line":768},[736,1605,835],{"class":782},[736,1607,838],{"class":782},[736,1609,932],{"class":841},[736,1611,1612],{"class":789},"(handler",[736,1614,935],{"class":746},[736,1616,786],{"class":746},[736,1618,869],{"class":853},[736,1620,747],{"class":746},[736,1622,762],{"class":761},[736,1624,793],{"class":746},[736,1626,889],{"class":789},[726,1628,1630],{"className":728,"code":1629,"filename":305,"language":730,"meta":1232,"style":732},"import { initLogger } from 'evlog'\n\ninitLogger({ redact: true })\n",[625,1631,1632,1651,1655],{"__ignoreMap":732},[736,1633,1634,1636,1638,1641,1643,1645,1647,1649],{"class":738,"line":739},[736,1635,783],{"class":782},[736,1637,786],{"class":746},[736,1639,1640],{"class":789}," initLogger",[736,1642,793],{"class":746},[736,1644,796],{"class":782},[736,1646,799],{"class":746},[736,1648,743],{"class":802},[736,1650,806],{"class":746},[736,1652,1653],{"class":738,"line":753},[736,1654,829],{"emptyLinePlaceholder":828},[736,1656,1657,1660,1662,1664,1666,1668,1670,1672],{"class":738,"line":768},[736,1658,1659],{"class":841},"initLogger",[736,1661,844],{"class":789},[736,1663,866],{"class":746},[736,1665,869],{"class":853},[736,1667,747],{"class":746},[736,1669,762],{"class":761},[736,1671,793],{"class":746},[736,1673,889],{"class":789},[613,1675,1676,1677,1680,1681,1684,1685,1688],{},"This masks credit cards (",[625,1678,1679],{},"****1111","), emails (",[625,1682,1683],{},"a***@***.com","), IPs, phone numbers, JWTs, Bearer tokens, and IBANs in every wide event, before console output and before any drain. See ",[1686,1687,71],"a",{"href":72}," for the full configuration reference.",[712,1690,1692,1693,1696],{"color":1691,"icon":393},"success","Auto-redaction is a safety net, not a replacement for careful logging. Always prefer explicit field selection and combine with ",[625,1694,1695],{},"redact: true"," for defense in depth.",[617,1698,1700],{"id":1699},"sanitize-before-the-field-is-set","Sanitize before the field is set",[1702,1703,1705],"h3",{"id":1704},"manual-field-selection","Manual Field Selection",[613,1707,1708],{},"The safest approach is to explicitly select which fields to log:",[723,1710,1711,1932,2135,2364,2579],{},[726,1712,1715],{"className":728,"code":1713,"filename":245,"language":730,"meta":1714,"style":732},"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",[625,1716,1717,1735,1739,1767,1784,1788,1809,1814,1821,1827,1832,1838,1853,1863,1880,1905,1911,1917,1925],{"__ignoreMap":732},[736,1718,1719,1721,1723,1725,1727,1729,1731,1733],{"class":738,"line":739},[736,1720,783],{"class":782},[736,1722,786],{"class":746},[736,1724,938],{"class":789},[736,1726,793],{"class":746},[736,1728,796],{"class":782},[736,1730,799],{"class":746},[736,1732,743],{"class":802},[736,1734,806],{"class":746},[736,1736,1737],{"class":738,"line":753},[736,1738,829],{"emptyLinePlaceholder":828},[736,1740,1741,1743,1745,1748,1750,1753,1756,1760,1762,1765],{"class":738,"line":768},[736,1742,835],{"class":782},[736,1744,838],{"class":782},[736,1746,1747],{"class":841}," defineEventHandler",[736,1749,844],{"class":789},[736,1751,1752],{"class":926},"async",[736,1754,1755],{"class":746}," (",[736,1757,1759],{"class":1758},"sHdIc","event",[736,1761,1221],{"class":746},[736,1763,1764],{"class":926}," =>",[736,1766,750],{"class":746},[736,1768,1769,1772,1774,1776,1778,1780,1782],{"class":738,"line":832},[736,1770,1771],{"class":926},"  const",[736,1773,943],{"class":789},[736,1775,953],{"class":746},[736,1777,938],{"class":841},[736,1779,844],{"class":853},[736,1781,1759],{"class":789},[736,1783,889],{"class":853},[736,1785,1786],{"class":738,"line":850},[736,1787,829],{"emptyLinePlaceholder":828},[736,1789,1790,1792,1795,1797,1800,1803,1805,1807],{"class":738,"line":883},[736,1791,1771],{"class":926},[736,1793,1794],{"class":789}," body",[736,1796,953],{"class":746},[736,1798,1799],{"class":782}," await",[736,1801,1802],{"class":841}," readBody",[736,1804,844],{"class":853},[736,1806,1759],{"class":789},[736,1808,889],{"class":853},[736,1810,1812],{"class":738,"line":1811},7,[736,1813,829],{"emptyLinePlaceholder":828},[736,1815,1817],{"class":738,"line":1816},8,[736,1818,1820],{"class":1819},"sHwdD","  \u002F\u002F ❌ NEVER log the entire request body\n",[736,1822,1824],{"class":738,"line":1823},9,[736,1825,1826],{"class":1819},"  \u002F\u002F log.set({ body })\n",[736,1828,1830],{"class":738,"line":1829},10,[736,1831,829],{"emptyLinePlaceholder":828},[736,1833,1835],{"class":738,"line":1834},11,[736,1836,1837],{"class":1819},"  \u002F\u002F ✅ Explicitly select safe fields\n",[736,1839,1841,1844,1846,1849,1851],{"class":738,"line":1840},12,[736,1842,1843],{"class":789},"  log",[736,1845,1189],{"class":746},[736,1847,1848],{"class":841},"set",[736,1850,844],{"class":853},[736,1852,847],{"class":746},[736,1854,1856,1859,1861],{"class":738,"line":1855},13,[736,1857,1858],{"class":853},"    user",[736,1860,747],{"class":746},[736,1862,750],{"class":746},[736,1864,1866,1869,1871,1873,1875,1878],{"class":738,"line":1865},14,[736,1867,1868],{"class":853},"      id",[736,1870,747],{"class":746},[736,1872,1794],{"class":789},[736,1874,1189],{"class":746},[736,1876,1877],{"class":789},"id",[736,1879,765],{"class":746},[736,1881,1883,1886,1888,1891,1893,1896,1898,1901,1903],{"class":738,"line":1882},15,[736,1884,1885],{"class":853},"      email",[736,1887,747],{"class":746},[736,1889,1890],{"class":841}," maskEmail",[736,1892,844],{"class":853},[736,1894,1895],{"class":789},"body",[736,1897,1189],{"class":746},[736,1899,1900],{"class":789},"email",[736,1902,1221],{"class":853},[736,1904,765],{"class":746},[736,1906,1908],{"class":738,"line":1907},16,[736,1909,1910],{"class":1819},"      \u002F\u002F password: body.password ← NEVER include\n",[736,1912,1914],{"class":738,"line":1913},17,[736,1915,1916],{"class":746},"    },\n",[736,1918,1920,1923],{"class":738,"line":1919},18,[736,1921,1922],{"class":746},"  }",[736,1924,889],{"class":853},[736,1926,1928,1930],{"class":738,"line":1927},19,[736,1929,886],{"class":746},[736,1931,889],{"class":789},[726,1933,1936],{"className":728,"code":1934,"filename":260,"language":730,"meta":1935,"style":732},"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",[625,1937,1938,1958,1976,1980,2002,2018,2022,2040,2044,2048,2052,2056,2060,2072,2080,2094,2114,2118,2122,2128],{"__ignoreMap":732},[736,1939,1940,1942,1944,1947,1949,1951,1953,1956],{"class":738,"line":739},[736,1941,783],{"class":782},[736,1943,786],{"class":746},[736,1945,1946],{"class":789}," defineHandler",[736,1948,793],{"class":746},[736,1950,796],{"class":782},[736,1952,799],{"class":746},[736,1954,1955],{"class":802},"nitro\u002Fh3",[736,1957,806],{"class":746},[736,1959,1960,1962,1964,1966,1968,1970,1972,1974],{"class":738,"line":753},[736,1961,783],{"class":782},[736,1963,786],{"class":746},[736,1965,938],{"class":789},[736,1967,793],{"class":746},[736,1969,796],{"class":782},[736,1971,799],{"class":746},[736,1973,821],{"class":802},[736,1975,806],{"class":746},[736,1977,1978],{"class":738,"line":768},[736,1979,829],{"emptyLinePlaceholder":828},[736,1981,1982,1984,1986,1988,1990,1992,1994,1996,1998,2000],{"class":738,"line":832},[736,1983,835],{"class":782},[736,1985,838],{"class":782},[736,1987,1946],{"class":841},[736,1989,844],{"class":789},[736,1991,1752],{"class":926},[736,1993,1755],{"class":746},[736,1995,1759],{"class":1758},[736,1997,1221],{"class":746},[736,1999,1764],{"class":926},[736,2001,750],{"class":746},[736,2003,2004,2006,2008,2010,2012,2014,2016],{"class":738,"line":850},[736,2005,1771],{"class":926},[736,2007,943],{"class":789},[736,2009,953],{"class":746},[736,2011,938],{"class":841},[736,2013,844],{"class":853},[736,2015,1759],{"class":789},[736,2017,889],{"class":853},[736,2019,2020],{"class":738,"line":883},[736,2021,829],{"emptyLinePlaceholder":828},[736,2023,2024,2026,2028,2030,2032,2034,2036,2038],{"class":738,"line":1811},[736,2025,1771],{"class":926},[736,2027,1794],{"class":789},[736,2029,953],{"class":746},[736,2031,1799],{"class":782},[736,2033,1802],{"class":841},[736,2035,844],{"class":853},[736,2037,1759],{"class":789},[736,2039,889],{"class":853},[736,2041,2042],{"class":738,"line":1816},[736,2043,829],{"emptyLinePlaceholder":828},[736,2045,2046],{"class":738,"line":1823},[736,2047,1820],{"class":1819},[736,2049,2050],{"class":738,"line":1829},[736,2051,1826],{"class":1819},[736,2053,2054],{"class":738,"line":1834},[736,2055,829],{"emptyLinePlaceholder":828},[736,2057,2058],{"class":738,"line":1840},[736,2059,1837],{"class":1819},[736,2061,2062,2064,2066,2068,2070],{"class":738,"line":1855},[736,2063,1843],{"class":789},[736,2065,1189],{"class":746},[736,2067,1848],{"class":841},[736,2069,844],{"class":853},[736,2071,847],{"class":746},[736,2073,2074,2076,2078],{"class":738,"line":1865},[736,2075,1858],{"class":853},[736,2077,747],{"class":746},[736,2079,750],{"class":746},[736,2081,2082,2084,2086,2088,2090,2092],{"class":738,"line":1882},[736,2083,1868],{"class":853},[736,2085,747],{"class":746},[736,2087,1794],{"class":789},[736,2089,1189],{"class":746},[736,2091,1877],{"class":789},[736,2093,765],{"class":746},[736,2095,2096,2098,2100,2102,2104,2106,2108,2110,2112],{"class":738,"line":1907},[736,2097,1885],{"class":853},[736,2099,747],{"class":746},[736,2101,1890],{"class":841},[736,2103,844],{"class":853},[736,2105,1895],{"class":789},[736,2107,1189],{"class":746},[736,2109,1900],{"class":789},[736,2111,1221],{"class":853},[736,2113,765],{"class":746},[736,2115,2116],{"class":738,"line":1913},[736,2117,1910],{"class":1819},[736,2119,2120],{"class":738,"line":1919},[736,2121,1916],{"class":746},[736,2123,2124,2126],{"class":738,"line":1927},[736,2125,1922],{"class":746},[736,2127,889],{"class":853},[736,2129,2131,2133],{"class":738,"line":2130},20,[736,2132,886],{"class":746},[736,2134,889],{"class":789},[726,2136,2139],{"className":728,"code":2137,"filename":250,"language":730,"meta":2138,"style":732},"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",[625,2140,2141,2164,2168,2201,2214,2218,2238,2242,2246,2250,2254,2258,2270,2278,2292,2312,2316,2320,2326,2330,2357],{"__ignoreMap":732},[736,2142,2143,2145,2147,2149,2151,2153,2155,2157,2159,2162],{"class":738,"line":739},[736,2144,783],{"class":782},[736,2146,786],{"class":746},[736,2148,932],{"class":789},[736,2150,935],{"class":746},[736,2152,938],{"class":789},[736,2154,793],{"class":746},[736,2156,796],{"class":782},[736,2158,799],{"class":746},[736,2160,2161],{"class":802},"@\u002Flib\u002Fevlog",[736,2163,806],{"class":746},[736,2165,2166],{"class":738,"line":753},[736,2167,829],{"emptyLinePlaceholder":828},[736,2169,2170,2172,2174,2177,2179,2181,2183,2185,2187,2190,2192,2195,2197,2199],{"class":738,"line":768},[736,2171,835],{"class":782},[736,2173,927],{"class":926},[736,2175,2176],{"class":789}," POST ",[736,2178,1198],{"class":746},[736,2180,932],{"class":841},[736,2182,844],{"class":789},[736,2184,1752],{"class":926},[736,2186,1755],{"class":746},[736,2188,2189],{"class":1758},"request",[736,2191,747],{"class":746},[736,2193,2194],{"class":742}," Request",[736,2196,1221],{"class":746},[736,2198,1764],{"class":926},[736,2200,750],{"class":746},[736,2202,2203,2205,2207,2209,2211],{"class":738,"line":832},[736,2204,1771],{"class":926},[736,2206,943],{"class":789},[736,2208,953],{"class":746},[736,2210,938],{"class":841},[736,2212,2213],{"class":853},"()\n",[736,2215,2216],{"class":738,"line":850},[736,2217,829],{"emptyLinePlaceholder":828},[736,2219,2220,2222,2224,2226,2228,2231,2233,2236],{"class":738,"line":883},[736,2221,1771],{"class":926},[736,2223,1794],{"class":789},[736,2225,953],{"class":746},[736,2227,1799],{"class":782},[736,2229,2230],{"class":789}," request",[736,2232,1189],{"class":746},[736,2234,2235],{"class":841},"json",[736,2237,2213],{"class":853},[736,2239,2240],{"class":738,"line":1811},[736,2241,829],{"emptyLinePlaceholder":828},[736,2243,2244],{"class":738,"line":1816},[736,2245,1820],{"class":1819},[736,2247,2248],{"class":738,"line":1823},[736,2249,1826],{"class":1819},[736,2251,2252],{"class":738,"line":1829},[736,2253,829],{"emptyLinePlaceholder":828},[736,2255,2256],{"class":738,"line":1834},[736,2257,1837],{"class":1819},[736,2259,2260,2262,2264,2266,2268],{"class":738,"line":1840},[736,2261,1843],{"class":789},[736,2263,1189],{"class":746},[736,2265,1848],{"class":841},[736,2267,844],{"class":853},[736,2269,847],{"class":746},[736,2271,2272,2274,2276],{"class":738,"line":1855},[736,2273,1858],{"class":853},[736,2275,747],{"class":746},[736,2277,750],{"class":746},[736,2279,2280,2282,2284,2286,2288,2290],{"class":738,"line":1865},[736,2281,1868],{"class":853},[736,2283,747],{"class":746},[736,2285,1794],{"class":789},[736,2287,1189],{"class":746},[736,2289,1877],{"class":789},[736,2291,765],{"class":746},[736,2293,2294,2296,2298,2300,2302,2304,2306,2308,2310],{"class":738,"line":1882},[736,2295,1885],{"class":853},[736,2297,747],{"class":746},[736,2299,1890],{"class":841},[736,2301,844],{"class":853},[736,2303,1895],{"class":789},[736,2305,1189],{"class":746},[736,2307,1900],{"class":789},[736,2309,1221],{"class":853},[736,2311,765],{"class":746},[736,2313,2314],{"class":738,"line":1907},[736,2315,1910],{"class":1819},[736,2317,2318],{"class":738,"line":1913},[736,2319,1916],{"class":746},[736,2321,2322,2324],{"class":738,"line":1919},[736,2323,1922],{"class":746},[736,2325,889],{"class":853},[736,2327,2328],{"class":738,"line":1927},[736,2329,829],{"emptyLinePlaceholder":828},[736,2331,2332,2335,2338,2340,2342,2344,2346,2349,2351,2353,2355],{"class":738,"line":2130},[736,2333,2334],{"class":782},"  return",[736,2336,2337],{"class":789}," Response",[736,2339,1189],{"class":746},[736,2341,2235],{"class":841},[736,2343,844],{"class":853},[736,2345,866],{"class":746},[736,2347,2348],{"class":853}," ok",[736,2350,747],{"class":746},[736,2352,762],{"class":761},[736,2354,793],{"class":746},[736,2356,889],{"class":853},[736,2358,2360,2362],{"class":738,"line":2359},21,[736,2361,886],{"class":746},[736,2363,889],{"class":789},[726,2365,2367],{"className":728,"code":2366,"filename":280,"language":730,"meta":1232,"style":732},"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",[625,2368,2369,2403,2430,2434,2457,2461,2465,2469,2473,2477,2489,2497,2511,2531,2535,2539,2545,2549,2573],{"__ignoreMap":732},[736,2370,2371,2373,2375,2378,2380,2382,2385,2387,2389,2392,2394,2397,2399,2401],{"class":738,"line":739},[736,2372,1262],{"class":789},[736,2374,1189],{"class":746},[736,2376,2377],{"class":841},"post",[736,2379,844],{"class":789},[736,2381,974],{"class":746},[736,2383,2384],{"class":802},"\u002Fapi\u002Fuser\u002Fupdate",[736,2386,974],{"class":746},[736,2388,935],{"class":746},[736,2390,2391],{"class":926}," async",[736,2393,1755],{"class":746},[736,2395,2396],{"class":1758},"c",[736,2398,1221],{"class":746},[736,2400,1764],{"class":926},[736,2402,750],{"class":746},[736,2404,2405,2407,2409,2411,2414,2416,2419,2421,2423,2426,2428],{"class":738,"line":753},[736,2406,1771],{"class":926},[736,2408,943],{"class":789},[736,2410,953],{"class":746},[736,2412,2413],{"class":789}," c",[736,2415,1189],{"class":746},[736,2417,2418],{"class":841},"get",[736,2420,844],{"class":853},[736,2422,974],{"class":746},[736,2424,2425],{"class":802},"log",[736,2427,974],{"class":746},[736,2429,889],{"class":853},[736,2431,2432],{"class":738,"line":768},[736,2433,829],{"emptyLinePlaceholder":828},[736,2435,2436,2438,2440,2442,2444,2446,2448,2451,2453,2455],{"class":738,"line":832},[736,2437,1771],{"class":926},[736,2439,1794],{"class":789},[736,2441,953],{"class":746},[736,2443,1799],{"class":782},[736,2445,2413],{"class":789},[736,2447,1189],{"class":746},[736,2449,2450],{"class":789},"req",[736,2452,1189],{"class":746},[736,2454,2235],{"class":841},[736,2456,2213],{"class":853},[736,2458,2459],{"class":738,"line":850},[736,2460,829],{"emptyLinePlaceholder":828},[736,2462,2463],{"class":738,"line":883},[736,2464,1820],{"class":1819},[736,2466,2467],{"class":738,"line":1811},[736,2468,1826],{"class":1819},[736,2470,2471],{"class":738,"line":1816},[736,2472,829],{"emptyLinePlaceholder":828},[736,2474,2475],{"class":738,"line":1823},[736,2476,1837],{"class":1819},[736,2478,2479,2481,2483,2485,2487],{"class":738,"line":1829},[736,2480,1843],{"class":789},[736,2482,1189],{"class":746},[736,2484,1848],{"class":841},[736,2486,844],{"class":853},[736,2488,847],{"class":746},[736,2490,2491,2493,2495],{"class":738,"line":1834},[736,2492,1858],{"class":853},[736,2494,747],{"class":746},[736,2496,750],{"class":746},[736,2498,2499,2501,2503,2505,2507,2509],{"class":738,"line":1840},[736,2500,1868],{"class":853},[736,2502,747],{"class":746},[736,2504,1794],{"class":789},[736,2506,1189],{"class":746},[736,2508,1877],{"class":789},[736,2510,765],{"class":746},[736,2512,2513,2515,2517,2519,2521,2523,2525,2527,2529],{"class":738,"line":1855},[736,2514,1885],{"class":853},[736,2516,747],{"class":746},[736,2518,1890],{"class":841},[736,2520,844],{"class":853},[736,2522,1895],{"class":789},[736,2524,1189],{"class":746},[736,2526,1900],{"class":789},[736,2528,1221],{"class":853},[736,2530,765],{"class":746},[736,2532,2533],{"class":738,"line":1865},[736,2534,1910],{"class":1819},[736,2536,2537],{"class":738,"line":1882},[736,2538,1916],{"class":746},[736,2540,2541,2543],{"class":738,"line":1907},[736,2542,1922],{"class":746},[736,2544,889],{"class":853},[736,2546,2547],{"class":738,"line":1913},[736,2548,829],{"emptyLinePlaceholder":828},[736,2550,2551,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571],{"class":738,"line":1919},[736,2552,2334],{"class":782},[736,2554,2413],{"class":789},[736,2556,1189],{"class":746},[736,2558,2235],{"class":841},[736,2560,844],{"class":853},[736,2562,866],{"class":746},[736,2564,2348],{"class":853},[736,2566,747],{"class":746},[736,2568,762],{"class":761},[736,2570,793],{"class":746},[736,2572,889],{"class":853},[736,2574,2575,2577],{"class":738,"line":1927},[736,2576,886],{"class":746},[736,2578,889],{"class":789},[726,2580,2582],{"className":728,"code":2581,"filename":275,"language":730,"meta":1232,"style":732},"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",[625,2583,2584,2619,2635,2639,2654,2658,2662,2666,2670,2674,2686,2694,2708,2728,2732,2736,2742,2746,2769],{"__ignoreMap":732},[736,2585,2586,2588,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610,2613,2615,2617],{"class":738,"line":739},[736,2587,1262],{"class":789},[736,2589,1189],{"class":746},[736,2591,2377],{"class":841},[736,2593,844],{"class":789},[736,2595,974],{"class":746},[736,2597,2384],{"class":802},[736,2599,974],{"class":746},[736,2601,935],{"class":746},[736,2603,2391],{"class":926},[736,2605,1755],{"class":746},[736,2607,2450],{"class":1758},[736,2609,935],{"class":746},[736,2611,2612],{"class":1758}," res",[736,2614,1221],{"class":746},[736,2616,1764],{"class":926},[736,2618,750],{"class":746},[736,2620,2621,2623,2625,2627,2630,2632],{"class":738,"line":753},[736,2622,1771],{"class":926},[736,2624,943],{"class":789},[736,2626,953],{"class":746},[736,2628,2629],{"class":789}," req",[736,2631,1189],{"class":746},[736,2633,2634],{"class":789},"log\n",[736,2636,2637],{"class":738,"line":768},[736,2638,829],{"emptyLinePlaceholder":828},[736,2640,2641,2643,2645,2647,2649,2651],{"class":738,"line":832},[736,2642,1771],{"class":926},[736,2644,1794],{"class":789},[736,2646,953],{"class":746},[736,2648,2629],{"class":789},[736,2650,1189],{"class":746},[736,2652,2653],{"class":789},"body\n",[736,2655,2656],{"class":738,"line":850},[736,2657,829],{"emptyLinePlaceholder":828},[736,2659,2660],{"class":738,"line":883},[736,2661,1820],{"class":1819},[736,2663,2664],{"class":738,"line":1811},[736,2665,1826],{"class":1819},[736,2667,2668],{"class":738,"line":1816},[736,2669,829],{"emptyLinePlaceholder":828},[736,2671,2672],{"class":738,"line":1823},[736,2673,1837],{"class":1819},[736,2675,2676,2678,2680,2682,2684],{"class":738,"line":1829},[736,2677,1843],{"class":789},[736,2679,1189],{"class":746},[736,2681,1848],{"class":841},[736,2683,844],{"class":853},[736,2685,847],{"class":746},[736,2687,2688,2690,2692],{"class":738,"line":1834},[736,2689,1858],{"class":853},[736,2691,747],{"class":746},[736,2693,750],{"class":746},[736,2695,2696,2698,2700,2702,2704,2706],{"class":738,"line":1840},[736,2697,1868],{"class":853},[736,2699,747],{"class":746},[736,2701,1794],{"class":789},[736,2703,1189],{"class":746},[736,2705,1877],{"class":789},[736,2707,765],{"class":746},[736,2709,2710,2712,2714,2716,2718,2720,2722,2724,2726],{"class":738,"line":1855},[736,2711,1885],{"class":853},[736,2713,747],{"class":746},[736,2715,1890],{"class":841},[736,2717,844],{"class":853},[736,2719,1895],{"class":789},[736,2721,1189],{"class":746},[736,2723,1900],{"class":789},[736,2725,1221],{"class":853},[736,2727,765],{"class":746},[736,2729,2730],{"class":738,"line":1865},[736,2731,1910],{"class":1819},[736,2733,2734],{"class":738,"line":1882},[736,2735,1916],{"class":746},[736,2737,2738,2740],{"class":738,"line":1907},[736,2739,1922],{"class":746},[736,2741,889],{"class":853},[736,2743,2744],{"class":738,"line":1913},[736,2745,829],{"emptyLinePlaceholder":828},[736,2747,2748,2751,2753,2755,2757,2759,2761,2763,2765,2767],{"class":738,"line":1919},[736,2749,2750],{"class":789},"  res",[736,2752,1189],{"class":746},[736,2754,2235],{"class":841},[736,2756,844],{"class":853},[736,2758,866],{"class":746},[736,2760,2348],{"class":853},[736,2762,747],{"class":746},[736,2764,762],{"class":761},[736,2766,793],{"class":746},[736,2768,889],{"class":853},[736,2770,2771,2773],{"class":738,"line":1927},[736,2772,886],{"class":746},[736,2774,889],{"class":789},[1702,2776,2778],{"id":2777},"helper-functions","Helper Functions",[613,2780,2781],{},"Create utility functions to sanitize common data types:",[2783,2784,2785],"code-collapse",{},[726,2786,2789],{"className":728,"code":2787,"filename":2788,"language":730,"meta":732,"style":732},"\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",[625,2790,2791,2806,2831,2868,2894,2928,2972,2976,2980,2985,3009,3040,3044,3048,3053,3086,3111,3140,3144,3148,3153,3187,3200,3261,3278,3299,3322,3342,3357,3363,3369,3377],{"__ignoreMap":732},[736,2792,2793,2796,2799,2803],{"class":738,"line":739},[736,2794,2795],{"class":1819},"\u002F** Masks email: john.doe",[736,2797,2798],{"class":782},"@",[736,2800,2802],{"class":2801},"s6hCs","example",[736,2804,2805],{"class":1819},".com → j***.d**@e***.com *\u002F\n",[736,2807,2808,2810,2813,2815,2817,2819,2821,2824,2827,2829],{"class":738,"line":753},[736,2809,835],{"class":782},[736,2811,2812],{"class":926}," function",[736,2814,1890],{"class":841},[736,2816,844],{"class":746},[736,2818,1900],{"class":1758},[736,2820,747],{"class":746},[736,2822,2823],{"class":742}," string",[736,2825,2826],{"class":746},"):",[736,2828,2823],{"class":742},[736,2830,750],{"class":746},[736,2832,2833,2835,2837,2840,2842,2845,2848,2850,2853,2855,2858,2860,2862,2864,2866],{"class":738,"line":768},[736,2834,1771],{"class":926},[736,2836,859],{"class":746},[736,2838,2839],{"class":789},"local",[736,2841,935],{"class":746},[736,2843,2844],{"class":789}," domain",[736,2846,2847],{"class":746},"]",[736,2849,953],{"class":746},[736,2851,2852],{"class":789}," email",[736,2854,1189],{"class":746},[736,2856,2857],{"class":841},"split",[736,2859,844],{"class":853},[736,2861,974],{"class":746},[736,2863,2798],{"class":802},[736,2865,974],{"class":746},[736,2867,889],{"class":853},[736,2869,2870,2873,2875,2878,2881,2884,2887,2889,2892],{"class":738,"line":832},[736,2871,2872],{"class":782},"  if",[736,2874,1755],{"class":853},[736,2876,2877],{"class":746},"!",[736,2879,2880],{"class":789},"domain",[736,2882,2883],{"class":853},") ",[736,2885,2886],{"class":782},"return",[736,2888,799],{"class":746},[736,2890,2891],{"class":802},"***",[736,2893,806],{"class":746},[736,2895,2896,2898,2900,2903,2905,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926],{"class":738,"line":850},[736,2897,1771],{"class":926},[736,2899,859],{"class":746},[736,2901,2902],{"class":789},"domainName",[736,2904,935],{"class":746},[736,2906,2907],{"class":789}," tld",[736,2909,2847],{"class":746},[736,2911,953],{"class":746},[736,2913,2844],{"class":789},[736,2915,1189],{"class":746},[736,2917,2857],{"class":841},[736,2919,844],{"class":853},[736,2921,974],{"class":746},[736,2923,1189],{"class":802},[736,2925,974],{"class":746},[736,2927,889],{"class":853},[736,2929,2930,2932,2935,2938,2942,2944,2946,2949,2952,2955,2957,2959,2961,2964,2966,2969],{"class":738,"line":883},[736,2931,2334],{"class":782},[736,2933,2934],{"class":746}," `${",[736,2936,2937],{"class":789},"local[",[736,2939,2941],{"class":2940},"sbssI","0",[736,2943,2847],{"class":789},[736,2945,886],{"class":746},[736,2947,2948],{"class":802},"***@",[736,2950,2951],{"class":746},"${",[736,2953,2954],{"class":789},"domainName[",[736,2956,2941],{"class":2940},[736,2958,2847],{"class":789},[736,2960,886],{"class":746},[736,2962,2963],{"class":802},"***.",[736,2965,2951],{"class":746},[736,2967,2968],{"class":789},"tld",[736,2970,2971],{"class":746},"}`\n",[736,2973,2974],{"class":738,"line":1811},[736,2975,771],{"class":746},[736,2977,2978],{"class":738,"line":1816},[736,2979,829],{"emptyLinePlaceholder":828},[736,2981,2982],{"class":738,"line":1823},[736,2983,2984],{"class":1819},"\u002F** Masks card number: 4242424242424242 → ****4242 *\u002F\n",[736,2986,2987,2989,2991,2994,2996,2999,3001,3003,3005,3007],{"class":738,"line":1829},[736,2988,835],{"class":782},[736,2990,2812],{"class":926},[736,2992,2993],{"class":841}," maskCard",[736,2995,844],{"class":746},[736,2997,2998],{"class":1758},"card",[736,3000,747],{"class":746},[736,3002,2823],{"class":742},[736,3004,2826],{"class":746},[736,3006,2823],{"class":742},[736,3008,750],{"class":746},[736,3010,3011,3013,3016,3019,3021,3023,3025,3028,3030,3033,3036,3038],{"class":738,"line":1834},[736,3012,2334],{"class":782},[736,3014,3015],{"class":746}," `",[736,3017,3018],{"class":802},"****",[736,3020,2951],{"class":746},[736,3022,2998],{"class":789},[736,3024,1189],{"class":746},[736,3026,3027],{"class":841},"slice",[736,3029,844],{"class":789},[736,3031,3032],{"class":746},"-",[736,3034,3035],{"class":2940},"4",[736,3037,1221],{"class":789},[736,3039,2971],{"class":746},[736,3041,3042],{"class":738,"line":1840},[736,3043,771],{"class":746},[736,3045,3046],{"class":738,"line":1855},[736,3047,829],{"emptyLinePlaceholder":828},[736,3049,3050],{"class":738,"line":1865},[736,3051,3052],{"class":1819},"\u002F** Truncates long IDs for readability *\u002F\n",[736,3054,3055,3057,3059,3062,3064,3066,3068,3070,3072,3075,3077,3080,3082,3084],{"class":738,"line":1882},[736,3056,835],{"class":782},[736,3058,2812],{"class":926},[736,3060,3061],{"class":841}," truncateId",[736,3063,844],{"class":746},[736,3065,1877],{"class":1758},[736,3067,747],{"class":746},[736,3069,2823],{"class":742},[736,3071,935],{"class":746},[736,3073,3074],{"class":1758}," length",[736,3076,953],{"class":746},[736,3078,3079],{"class":2940}," 8",[736,3081,2826],{"class":746},[736,3083,2823],{"class":742},[736,3085,750],{"class":746},[736,3087,3088,3090,3092,3094,3096,3099,3102,3104,3106,3108],{"class":738,"line":1907},[736,3089,2872],{"class":782},[736,3091,1755],{"class":853},[736,3093,1877],{"class":789},[736,3095,1189],{"class":746},[736,3097,3098],{"class":789},"length",[736,3100,3101],{"class":746}," \u003C=",[736,3103,3074],{"class":789},[736,3105,2883],{"class":853},[736,3107,2886],{"class":782},[736,3109,3110],{"class":789}," id\n",[736,3112,3113,3115,3117,3119,3121,3123,3125,3127,3129,3132,3134,3137],{"class":738,"line":1913},[736,3114,2334],{"class":782},[736,3116,2934],{"class":746},[736,3118,1877],{"class":789},[736,3120,1189],{"class":746},[736,3122,3027],{"class":841},[736,3124,844],{"class":789},[736,3126,2941],{"class":2940},[736,3128,935],{"class":746},[736,3130,3131],{"class":789}," length)",[736,3133,886],{"class":746},[736,3135,3136],{"class":802},"...",[736,3138,3139],{"class":746},"`\n",[736,3141,3142],{"class":738,"line":1919},[736,3143,771],{"class":746},[736,3145,3146],{"class":738,"line":1927},[736,3147,829],{"emptyLinePlaceholder":828},[736,3149,3150],{"class":738,"line":2130},[736,3151,3152],{"class":1819},"\u002F** Removes sensitive fields from an object *\u002F\n",[736,3154,3155,3157,3159,3162,3165,3168,3171,3174,3176,3179,3181,3184],{"class":738,"line":2359},[736,3156,835],{"class":782},[736,3158,2812],{"class":926},[736,3160,3161],{"class":841}," sanitize",[736,3163,3164],{"class":746},"\u003C",[736,3166,3167],{"class":742},"T",[736,3169,3170],{"class":926}," extends",[736,3172,3173],{"class":742}," Record",[736,3175,3164],{"class":746},[736,3177,3178],{"class":742},"string",[736,3180,935],{"class":746},[736,3182,3183],{"class":742}," unknown",[736,3185,3186],{"class":746},">>(\n",[736,3188,3190,3193,3195,3198],{"class":738,"line":3189},22,[736,3191,3192],{"class":1758},"  obj",[736,3194,747],{"class":746},[736,3196,3197],{"class":742}," T",[736,3199,765],{"class":746},[736,3201,3203,3206,3208,3210,3212,3214,3216,3218,3221,3223,3225,3227,3230,3232,3234,3236,3239,3241,3243,3245,3248,3250,3252,3254,3257,3259],{"class":738,"line":3202},23,[736,3204,3205],{"class":1758},"  sensitiveKeys",[736,3207,747],{"class":746},[736,3209,2823],{"class":742},[736,3211,1195],{"class":789},[736,3213,1198],{"class":746},[736,3215,859],{"class":789},[736,3217,974],{"class":746},[736,3219,3220],{"class":802},"password",[736,3222,974],{"class":746},[736,3224,935],{"class":746},[736,3226,799],{"class":746},[736,3228,3229],{"class":802},"token",[736,3231,974],{"class":746},[736,3233,935],{"class":746},[736,3235,799],{"class":746},[736,3237,3238],{"class":802},"secret",[736,3240,974],{"class":746},[736,3242,935],{"class":746},[736,3244,799],{"class":746},[736,3246,3247],{"class":802},"apiKey",[736,3249,974],{"class":746},[736,3251,935],{"class":746},[736,3253,799],{"class":746},[736,3255,3256],{"class":802},"authorization",[736,3258,974],{"class":746},[736,3260,1228],{"class":789},[736,3262,3264,3266,3269,3271,3273,3276],{"class":738,"line":3263},24,[736,3265,2826],{"class":746},[736,3267,3268],{"class":742}," Partial",[736,3270,3164],{"class":746},[736,3272,3167],{"class":742},[736,3274,3275],{"class":746},">",[736,3277,750],{"class":746},[736,3279,3281,3283,3286,3288,3290,3293,3296],{"class":738,"line":3280},25,[736,3282,1771],{"class":926},[736,3284,3285],{"class":789}," result",[736,3287,953],{"class":746},[736,3289,786],{"class":746},[736,3291,3292],{"class":746}," ...",[736,3294,3295],{"class":789},"obj",[736,3297,3298],{"class":746}," }\n",[736,3300,3302,3305,3307,3309,3312,3315,3318,3320],{"class":738,"line":3301},26,[736,3303,3304],{"class":782},"  for",[736,3306,1755],{"class":853},[736,3308,1540],{"class":926},[736,3310,3311],{"class":789}," key",[736,3313,3314],{"class":746}," of",[736,3316,3317],{"class":789}," sensitiveKeys",[736,3319,2883],{"class":853},[736,3321,847],{"class":746},[736,3323,3325,3328,3330,3333,3336,3338,3340],{"class":738,"line":3324},27,[736,3326,3327],{"class":782},"    if",[736,3329,1755],{"class":853},[736,3331,3332],{"class":789},"key",[736,3334,3335],{"class":746}," in",[736,3337,3285],{"class":789},[736,3339,2883],{"class":853},[736,3341,847],{"class":746},[736,3343,3345,3348,3350,3353,3355],{"class":738,"line":3344},28,[736,3346,3347],{"class":746},"      delete",[736,3349,3285],{"class":789},[736,3351,3352],{"class":853},"[",[736,3354,3332],{"class":789},[736,3356,1228],{"class":853},[736,3358,3360],{"class":738,"line":3359},29,[736,3361,3362],{"class":746},"    }\n",[736,3364,3366],{"class":738,"line":3365},30,[736,3367,3368],{"class":746},"  }\n",[736,3370,3372,3374],{"class":738,"line":3371},31,[736,3373,2334],{"class":782},[736,3375,3376],{"class":789}," result\n",[736,3378,3380],{"class":738,"line":3379},32,[736,3381,771],{"class":746},[613,3383,3384],{},"Usage:",[723,3386,3387,3600,3824,4066,4298],{},[726,3388,3391],{"className":728,"code":3389,"filename":245,"language":730,"meta":3390,"style":732},"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",[625,3392,3393,3411,3415,3437,3453,3457,3485,3489,3501,3509,3523,3544,3548,3557,3579,3584,3588,3594],{"__ignoreMap":732},[736,3394,3395,3397,3399,3401,3403,3405,3407,3409],{"class":738,"line":739},[736,3396,783],{"class":782},[736,3398,786],{"class":746},[736,3400,938],{"class":789},[736,3402,793],{"class":746},[736,3404,796],{"class":782},[736,3406,799],{"class":746},[736,3408,743],{"class":802},[736,3410,806],{"class":746},[736,3412,3413],{"class":738,"line":753},[736,3414,829],{"emptyLinePlaceholder":828},[736,3416,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435],{"class":738,"line":768},[736,3418,835],{"class":782},[736,3420,838],{"class":782},[736,3422,1747],{"class":841},[736,3424,844],{"class":789},[736,3426,1752],{"class":926},[736,3428,1755],{"class":746},[736,3430,1759],{"class":1758},[736,3432,1221],{"class":746},[736,3434,1764],{"class":926},[736,3436,750],{"class":746},[736,3438,3439,3441,3443,3445,3447,3449,3451],{"class":738,"line":832},[736,3440,1771],{"class":926},[736,3442,943],{"class":789},[736,3444,953],{"class":746},[736,3446,938],{"class":841},[736,3448,844],{"class":853},[736,3450,1759],{"class":789},[736,3452,889],{"class":853},[736,3454,3455],{"class":738,"line":850},[736,3456,829],{"emptyLinePlaceholder":828},[736,3458,3459,3461,3463,3466,3468,3471,3473,3475,3477,3479,3481,3483],{"class":738,"line":883},[736,3460,1771],{"class":926},[736,3462,786],{"class":746},[736,3464,3465],{"class":789}," user",[736,3467,935],{"class":746},[736,3469,3470],{"class":789}," card",[736,3472,793],{"class":746},[736,3474,953],{"class":746},[736,3476,1799],{"class":782},[736,3478,1802],{"class":841},[736,3480,844],{"class":853},[736,3482,1759],{"class":789},[736,3484,889],{"class":853},[736,3486,3487],{"class":738,"line":1811},[736,3488,829],{"emptyLinePlaceholder":828},[736,3490,3491,3493,3495,3497,3499],{"class":738,"line":1816},[736,3492,1843],{"class":789},[736,3494,1189],{"class":746},[736,3496,1848],{"class":841},[736,3498,844],{"class":853},[736,3500,847],{"class":746},[736,3502,3503,3505,3507],{"class":738,"line":1823},[736,3504,1858],{"class":853},[736,3506,747],{"class":746},[736,3508,750],{"class":746},[736,3510,3511,3513,3515,3517,3519,3521],{"class":738,"line":1829},[736,3512,1868],{"class":853},[736,3514,747],{"class":746},[736,3516,3465],{"class":789},[736,3518,1189],{"class":746},[736,3520,1877],{"class":789},[736,3522,765],{"class":746},[736,3524,3525,3527,3529,3531,3533,3536,3538,3540,3542],{"class":738,"line":1834},[736,3526,1885],{"class":853},[736,3528,747],{"class":746},[736,3530,1890],{"class":841},[736,3532,844],{"class":853},[736,3534,3535],{"class":789},"user",[736,3537,1189],{"class":746},[736,3539,1900],{"class":789},[736,3541,1221],{"class":853},[736,3543,765],{"class":746},[736,3545,3546],{"class":738,"line":1840},[736,3547,1916],{"class":746},[736,3549,3550,3553,3555],{"class":738,"line":1855},[736,3551,3552],{"class":853},"    payment",[736,3554,747],{"class":746},[736,3556,750],{"class":746},[736,3558,3559,3562,3564,3566,3568,3570,3572,3575,3577],{"class":738,"line":1865},[736,3560,3561],{"class":853},"      last4",[736,3563,747],{"class":746},[736,3565,2993],{"class":841},[736,3567,844],{"class":853},[736,3569,2998],{"class":789},[736,3571,1189],{"class":746},[736,3573,3574],{"class":789},"number",[736,3576,1221],{"class":853},[736,3578,765],{"class":746},[736,3580,3581],{"class":738,"line":1882},[736,3582,3583],{"class":1819},"      \u002F\u002F ❌ Never: number, cvv, expiry\n",[736,3585,3586],{"class":738,"line":1907},[736,3587,1916],{"class":746},[736,3589,3590,3592],{"class":738,"line":1913},[736,3591,1922],{"class":746},[736,3593,889],{"class":853},[736,3595,3596,3598],{"class":738,"line":1919},[736,3597,886],{"class":746},[736,3599,889],{"class":789},[726,3601,3604],{"className":728,"code":3602,"filename":260,"language":730,"meta":3603,"style":732},"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",[625,3605,3606,3624,3642,3646,3668,3684,3688,3714,3718,3730,3738,3752,3772,3776,3784,3804,3808,3812,3818],{"__ignoreMap":732},[736,3607,3608,3610,3612,3614,3616,3618,3620,3622],{"class":738,"line":739},[736,3609,783],{"class":782},[736,3611,786],{"class":746},[736,3613,1946],{"class":789},[736,3615,793],{"class":746},[736,3617,796],{"class":782},[736,3619,799],{"class":746},[736,3621,1955],{"class":802},[736,3623,806],{"class":746},[736,3625,3626,3628,3630,3632,3634,3636,3638,3640],{"class":738,"line":753},[736,3627,783],{"class":782},[736,3629,786],{"class":746},[736,3631,938],{"class":789},[736,3633,793],{"class":746},[736,3635,796],{"class":782},[736,3637,799],{"class":746},[736,3639,821],{"class":802},[736,3641,806],{"class":746},[736,3643,3644],{"class":738,"line":768},[736,3645,829],{"emptyLinePlaceholder":828},[736,3647,3648,3650,3652,3654,3656,3658,3660,3662,3664,3666],{"class":738,"line":832},[736,3649,835],{"class":782},[736,3651,838],{"class":782},[736,3653,1946],{"class":841},[736,3655,844],{"class":789},[736,3657,1752],{"class":926},[736,3659,1755],{"class":746},[736,3661,1759],{"class":1758},[736,3663,1221],{"class":746},[736,3665,1764],{"class":926},[736,3667,750],{"class":746},[736,3669,3670,3672,3674,3676,3678,3680,3682],{"class":738,"line":850},[736,3671,1771],{"class":926},[736,3673,943],{"class":789},[736,3675,953],{"class":746},[736,3677,938],{"class":841},[736,3679,844],{"class":853},[736,3681,1759],{"class":789},[736,3683,889],{"class":853},[736,3685,3686],{"class":738,"line":883},[736,3687,829],{"emptyLinePlaceholder":828},[736,3689,3690,3692,3694,3696,3698,3700,3702,3704,3706,3708,3710,3712],{"class":738,"line":1811},[736,3691,1771],{"class":926},[736,3693,786],{"class":746},[736,3695,3465],{"class":789},[736,3697,935],{"class":746},[736,3699,3470],{"class":789},[736,3701,793],{"class":746},[736,3703,953],{"class":746},[736,3705,1799],{"class":782},[736,3707,1802],{"class":841},[736,3709,844],{"class":853},[736,3711,1759],{"class":789},[736,3713,889],{"class":853},[736,3715,3716],{"class":738,"line":1816},[736,3717,829],{"emptyLinePlaceholder":828},[736,3719,3720,3722,3724,3726,3728],{"class":738,"line":1823},[736,3721,1843],{"class":789},[736,3723,1189],{"class":746},[736,3725,1848],{"class":841},[736,3727,844],{"class":853},[736,3729,847],{"class":746},[736,3731,3732,3734,3736],{"class":738,"line":1829},[736,3733,1858],{"class":853},[736,3735,747],{"class":746},[736,3737,750],{"class":746},[736,3739,3740,3742,3744,3746,3748,3750],{"class":738,"line":1834},[736,3741,1868],{"class":853},[736,3743,747],{"class":746},[736,3745,3465],{"class":789},[736,3747,1189],{"class":746},[736,3749,1877],{"class":789},[736,3751,765],{"class":746},[736,3753,3754,3756,3758,3760,3762,3764,3766,3768,3770],{"class":738,"line":1840},[736,3755,1885],{"class":853},[736,3757,747],{"class":746},[736,3759,1890],{"class":841},[736,3761,844],{"class":853},[736,3763,3535],{"class":789},[736,3765,1189],{"class":746},[736,3767,1900],{"class":789},[736,3769,1221],{"class":853},[736,3771,765],{"class":746},[736,3773,3774],{"class":738,"line":1855},[736,3775,1916],{"class":746},[736,3777,3778,3780,3782],{"class":738,"line":1865},[736,3779,3552],{"class":853},[736,3781,747],{"class":746},[736,3783,750],{"class":746},[736,3785,3786,3788,3790,3792,3794,3796,3798,3800,3802],{"class":738,"line":1882},[736,3787,3561],{"class":853},[736,3789,747],{"class":746},[736,3791,2993],{"class":841},[736,3793,844],{"class":853},[736,3795,2998],{"class":789},[736,3797,1189],{"class":746},[736,3799,3574],{"class":789},[736,3801,1221],{"class":853},[736,3803,765],{"class":746},[736,3805,3806],{"class":738,"line":1907},[736,3807,3583],{"class":1819},[736,3809,3810],{"class":738,"line":1913},[736,3811,1916],{"class":746},[736,3813,3814,3816],{"class":738,"line":1919},[736,3815,1922],{"class":746},[736,3817,889],{"class":853},[736,3819,3820,3822],{"class":738,"line":1927},[736,3821,886],{"class":746},[736,3823,889],{"class":789},[726,3825,3828],{"className":728,"code":3826,"filename":250,"language":730,"meta":3827,"style":732},"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",[625,3829,3830,3852,3856,3886,3898,3902,3928,3932,3944,3952,3966,3986,3990,3998,4018,4022,4026,4032,4036,4060],{"__ignoreMap":732},[736,3831,3832,3834,3836,3838,3840,3842,3844,3846,3848,3850],{"class":738,"line":739},[736,3833,783],{"class":782},[736,3835,786],{"class":746},[736,3837,932],{"class":789},[736,3839,935],{"class":746},[736,3841,938],{"class":789},[736,3843,793],{"class":746},[736,3845,796],{"class":782},[736,3847,799],{"class":746},[736,3849,2161],{"class":802},[736,3851,806],{"class":746},[736,3853,3854],{"class":738,"line":753},[736,3855,829],{"emptyLinePlaceholder":828},[736,3857,3858,3860,3862,3864,3866,3868,3870,3872,3874,3876,3878,3880,3882,3884],{"class":738,"line":768},[736,3859,835],{"class":782},[736,3861,927],{"class":926},[736,3863,2176],{"class":789},[736,3865,1198],{"class":746},[736,3867,932],{"class":841},[736,3869,844],{"class":789},[736,3871,1752],{"class":926},[736,3873,1755],{"class":746},[736,3875,2189],{"class":1758},[736,3877,747],{"class":746},[736,3879,2194],{"class":742},[736,3881,1221],{"class":746},[736,3883,1764],{"class":926},[736,3885,750],{"class":746},[736,3887,3888,3890,3892,3894,3896],{"class":738,"line":832},[736,3889,1771],{"class":926},[736,3891,943],{"class":789},[736,3893,953],{"class":746},[736,3895,938],{"class":841},[736,3897,2213],{"class":853},[736,3899,3900],{"class":738,"line":850},[736,3901,829],{"emptyLinePlaceholder":828},[736,3903,3904,3906,3908,3910,3912,3914,3916,3918,3920,3922,3924,3926],{"class":738,"line":883},[736,3905,1771],{"class":926},[736,3907,786],{"class":746},[736,3909,3465],{"class":789},[736,3911,935],{"class":746},[736,3913,3470],{"class":789},[736,3915,793],{"class":746},[736,3917,953],{"class":746},[736,3919,1799],{"class":782},[736,3921,2230],{"class":789},[736,3923,1189],{"class":746},[736,3925,2235],{"class":841},[736,3927,2213],{"class":853},[736,3929,3930],{"class":738,"line":1811},[736,3931,829],{"emptyLinePlaceholder":828},[736,3933,3934,3936,3938,3940,3942],{"class":738,"line":1816},[736,3935,1843],{"class":789},[736,3937,1189],{"class":746},[736,3939,1848],{"class":841},[736,3941,844],{"class":853},[736,3943,847],{"class":746},[736,3945,3946,3948,3950],{"class":738,"line":1823},[736,3947,1858],{"class":853},[736,3949,747],{"class":746},[736,3951,750],{"class":746},[736,3953,3954,3956,3958,3960,3962,3964],{"class":738,"line":1829},[736,3955,1868],{"class":853},[736,3957,747],{"class":746},[736,3959,3465],{"class":789},[736,3961,1189],{"class":746},[736,3963,1877],{"class":789},[736,3965,765],{"class":746},[736,3967,3968,3970,3972,3974,3976,3978,3980,3982,3984],{"class":738,"line":1834},[736,3969,1885],{"class":853},[736,3971,747],{"class":746},[736,3973,1890],{"class":841},[736,3975,844],{"class":853},[736,3977,3535],{"class":789},[736,3979,1189],{"class":746},[736,3981,1900],{"class":789},[736,3983,1221],{"class":853},[736,3985,765],{"class":746},[736,3987,3988],{"class":738,"line":1840},[736,3989,1916],{"class":746},[736,3991,3992,3994,3996],{"class":738,"line":1855},[736,3993,3552],{"class":853},[736,3995,747],{"class":746},[736,3997,750],{"class":746},[736,3999,4000,4002,4004,4006,4008,4010,4012,4014,4016],{"class":738,"line":1865},[736,4001,3561],{"class":853},[736,4003,747],{"class":746},[736,4005,2993],{"class":841},[736,4007,844],{"class":853},[736,4009,2998],{"class":789},[736,4011,1189],{"class":746},[736,4013,3574],{"class":789},[736,4015,1221],{"class":853},[736,4017,765],{"class":746},[736,4019,4020],{"class":738,"line":1882},[736,4021,3583],{"class":1819},[736,4023,4024],{"class":738,"line":1907},[736,4025,1916],{"class":746},[736,4027,4028,4030],{"class":738,"line":1913},[736,4029,1922],{"class":746},[736,4031,889],{"class":853},[736,4033,4034],{"class":738,"line":1919},[736,4035,829],{"emptyLinePlaceholder":828},[736,4037,4038,4040,4042,4044,4046,4048,4050,4052,4054,4056,4058],{"class":738,"line":1927},[736,4039,2334],{"class":782},[736,4041,2337],{"class":789},[736,4043,1189],{"class":746},[736,4045,2235],{"class":841},[736,4047,844],{"class":853},[736,4049,866],{"class":746},[736,4051,2348],{"class":853},[736,4053,747],{"class":746},[736,4055,762],{"class":761},[736,4057,793],{"class":746},[736,4059,889],{"class":853},[736,4061,4062,4064],{"class":738,"line":2130},[736,4063,886],{"class":746},[736,4065,889],{"class":789},[726,4067,4069],{"className":728,"code":4068,"filename":280,"language":730,"meta":1232,"style":732},"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",[625,4070,4071,4102,4126,4130,4160,4164,4176,4184,4198,4218,4222,4230,4250,4254,4258,4264,4268,4292],{"__ignoreMap":732},[736,4072,4073,4075,4077,4079,4081,4083,4086,4088,4090,4092,4094,4096,4098,4100],{"class":738,"line":739},[736,4074,1262],{"class":789},[736,4076,1189],{"class":746},[736,4078,2377],{"class":841},[736,4080,844],{"class":789},[736,4082,974],{"class":746},[736,4084,4085],{"class":802},"\u002Fapi\u002Fcheckout",[736,4087,974],{"class":746},[736,4089,935],{"class":746},[736,4091,2391],{"class":926},[736,4093,1755],{"class":746},[736,4095,2396],{"class":1758},[736,4097,1221],{"class":746},[736,4099,1764],{"class":926},[736,4101,750],{"class":746},[736,4103,4104,4106,4108,4110,4112,4114,4116,4118,4120,4122,4124],{"class":738,"line":753},[736,4105,1771],{"class":926},[736,4107,943],{"class":789},[736,4109,953],{"class":746},[736,4111,2413],{"class":789},[736,4113,1189],{"class":746},[736,4115,2418],{"class":841},[736,4117,844],{"class":853},[736,4119,974],{"class":746},[736,4121,2425],{"class":802},[736,4123,974],{"class":746},[736,4125,889],{"class":853},[736,4127,4128],{"class":738,"line":768},[736,4129,829],{"emptyLinePlaceholder":828},[736,4131,4132,4134,4136,4138,4140,4142,4144,4146,4148,4150,4152,4154,4156,4158],{"class":738,"line":832},[736,4133,1771],{"class":926},[736,4135,786],{"class":746},[736,4137,3465],{"class":789},[736,4139,935],{"class":746},[736,4141,3470],{"class":789},[736,4143,793],{"class":746},[736,4145,953],{"class":746},[736,4147,1799],{"class":782},[736,4149,2413],{"class":789},[736,4151,1189],{"class":746},[736,4153,2450],{"class":789},[736,4155,1189],{"class":746},[736,4157,2235],{"class":841},[736,4159,2213],{"class":853},[736,4161,4162],{"class":738,"line":850},[736,4163,829],{"emptyLinePlaceholder":828},[736,4165,4166,4168,4170,4172,4174],{"class":738,"line":883},[736,4167,1843],{"class":789},[736,4169,1189],{"class":746},[736,4171,1848],{"class":841},[736,4173,844],{"class":853},[736,4175,847],{"class":746},[736,4177,4178,4180,4182],{"class":738,"line":1811},[736,4179,1858],{"class":853},[736,4181,747],{"class":746},[736,4183,750],{"class":746},[736,4185,4186,4188,4190,4192,4194,4196],{"class":738,"line":1816},[736,4187,1868],{"class":853},[736,4189,747],{"class":746},[736,4191,3465],{"class":789},[736,4193,1189],{"class":746},[736,4195,1877],{"class":789},[736,4197,765],{"class":746},[736,4199,4200,4202,4204,4206,4208,4210,4212,4214,4216],{"class":738,"line":1823},[736,4201,1885],{"class":853},[736,4203,747],{"class":746},[736,4205,1890],{"class":841},[736,4207,844],{"class":853},[736,4209,3535],{"class":789},[736,4211,1189],{"class":746},[736,4213,1900],{"class":789},[736,4215,1221],{"class":853},[736,4217,765],{"class":746},[736,4219,4220],{"class":738,"line":1829},[736,4221,1916],{"class":746},[736,4223,4224,4226,4228],{"class":738,"line":1834},[736,4225,3552],{"class":853},[736,4227,747],{"class":746},[736,4229,750],{"class":746},[736,4231,4232,4234,4236,4238,4240,4242,4244,4246,4248],{"class":738,"line":1840},[736,4233,3561],{"class":853},[736,4235,747],{"class":746},[736,4237,2993],{"class":841},[736,4239,844],{"class":853},[736,4241,2998],{"class":789},[736,4243,1189],{"class":746},[736,4245,3574],{"class":789},[736,4247,1221],{"class":853},[736,4249,765],{"class":746},[736,4251,4252],{"class":738,"line":1855},[736,4253,3583],{"class":1819},[736,4255,4256],{"class":738,"line":1865},[736,4257,1916],{"class":746},[736,4259,4260,4262],{"class":738,"line":1882},[736,4261,1922],{"class":746},[736,4263,889],{"class":853},[736,4265,4266],{"class":738,"line":1907},[736,4267,829],{"emptyLinePlaceholder":828},[736,4269,4270,4272,4274,4276,4278,4280,4282,4284,4286,4288,4290],{"class":738,"line":1913},[736,4271,2334],{"class":782},[736,4273,2413],{"class":789},[736,4275,1189],{"class":746},[736,4277,2235],{"class":841},[736,4279,844],{"class":853},[736,4281,866],{"class":746},[736,4283,2348],{"class":853},[736,4285,747],{"class":746},[736,4287,762],{"class":761},[736,4289,793],{"class":746},[736,4291,889],{"class":853},[736,4293,4294,4296],{"class":738,"line":1919},[736,4295,886],{"class":746},[736,4297,889],{"class":789},[726,4299,4301],{"className":728,"code":4300,"filename":275,"language":730,"meta":1232,"style":732},"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",[625,4302,4303,4337,4351,4355,4377,4381,4393,4401,4415,4435,4439,4447,4467,4471,4475,4481,4485,4507],{"__ignoreMap":732},[736,4304,4305,4307,4309,4311,4313,4315,4317,4319,4321,4323,4325,4327,4329,4331,4333,4335],{"class":738,"line":739},[736,4306,1262],{"class":789},[736,4308,1189],{"class":746},[736,4310,2377],{"class":841},[736,4312,844],{"class":789},[736,4314,974],{"class":746},[736,4316,4085],{"class":802},[736,4318,974],{"class":746},[736,4320,935],{"class":746},[736,4322,2391],{"class":926},[736,4324,1755],{"class":746},[736,4326,2450],{"class":1758},[736,4328,935],{"class":746},[736,4330,2612],{"class":1758},[736,4332,1221],{"class":746},[736,4334,1764],{"class":926},[736,4336,750],{"class":746},[736,4338,4339,4341,4343,4345,4347,4349],{"class":738,"line":753},[736,4340,1771],{"class":926},[736,4342,943],{"class":789},[736,4344,953],{"class":746},[736,4346,2629],{"class":789},[736,4348,1189],{"class":746},[736,4350,2634],{"class":789},[736,4352,4353],{"class":738,"line":768},[736,4354,829],{"emptyLinePlaceholder":828},[736,4356,4357,4359,4361,4363,4365,4367,4369,4371,4373,4375],{"class":738,"line":832},[736,4358,1771],{"class":926},[736,4360,786],{"class":746},[736,4362,3465],{"class":789},[736,4364,935],{"class":746},[736,4366,3470],{"class":789},[736,4368,793],{"class":746},[736,4370,953],{"class":746},[736,4372,2629],{"class":789},[736,4374,1189],{"class":746},[736,4376,2653],{"class":789},[736,4378,4379],{"class":738,"line":850},[736,4380,829],{"emptyLinePlaceholder":828},[736,4382,4383,4385,4387,4389,4391],{"class":738,"line":883},[736,4384,1843],{"class":789},[736,4386,1189],{"class":746},[736,4388,1848],{"class":841},[736,4390,844],{"class":853},[736,4392,847],{"class":746},[736,4394,4395,4397,4399],{"class":738,"line":1811},[736,4396,1858],{"class":853},[736,4398,747],{"class":746},[736,4400,750],{"class":746},[736,4402,4403,4405,4407,4409,4411,4413],{"class":738,"line":1816},[736,4404,1868],{"class":853},[736,4406,747],{"class":746},[736,4408,3465],{"class":789},[736,4410,1189],{"class":746},[736,4412,1877],{"class":789},[736,4414,765],{"class":746},[736,4416,4417,4419,4421,4423,4425,4427,4429,4431,4433],{"class":738,"line":1823},[736,4418,1885],{"class":853},[736,4420,747],{"class":746},[736,4422,1890],{"class":841},[736,4424,844],{"class":853},[736,4426,3535],{"class":789},[736,4428,1189],{"class":746},[736,4430,1900],{"class":789},[736,4432,1221],{"class":853},[736,4434,765],{"class":746},[736,4436,4437],{"class":738,"line":1829},[736,4438,1916],{"class":746},[736,4440,4441,4443,4445],{"class":738,"line":1834},[736,4442,3552],{"class":853},[736,4444,747],{"class":746},[736,4446,750],{"class":746},[736,4448,4449,4451,4453,4455,4457,4459,4461,4463,4465],{"class":738,"line":1840},[736,4450,3561],{"class":853},[736,4452,747],{"class":746},[736,4454,2993],{"class":841},[736,4456,844],{"class":853},[736,4458,2998],{"class":789},[736,4460,1189],{"class":746},[736,4462,3574],{"class":789},[736,4464,1221],{"class":853},[736,4466,765],{"class":746},[736,4468,4469],{"class":738,"line":1855},[736,4470,3583],{"class":1819},[736,4472,4473],{"class":738,"line":1865},[736,4474,1916],{"class":746},[736,4476,4477,4479],{"class":738,"line":1882},[736,4478,1922],{"class":746},[736,4480,889],{"class":853},[736,4482,4483],{"class":738,"line":1907},[736,4484,829],{"emptyLinePlaceholder":828},[736,4486,4487,4489,4491,4493,4495,4497,4499,4501,4503,4505],{"class":738,"line":1913},[736,4488,2750],{"class":789},[736,4490,1189],{"class":746},[736,4492,2235],{"class":841},[736,4494,844],{"class":853},[736,4496,866],{"class":746},[736,4498,2348],{"class":853},[736,4500,747],{"class":746},[736,4502,762],{"class":761},[736,4504,793],{"class":746},[736,4506,889],{"class":853},[736,4508,4509,4511],{"class":738,"line":1919},[736,4510,886],{"class":746},[736,4512,889],{"class":789},[1702,4514,4516],{"id":4515},"drain-hook-filtering","Drain Hook Filtering",[613,4518,4519],{},"As a last line of defense, filter sensitive data before sending to external services:",[723,4521,4522,4994,5432,5880,6303,6744,7184,7599,8014,8429,8844,9255,9676,10089],{},[726,4523,4526],{"className":728,"code":4524,"filename":245,"language":730,"meta":4525,"style":732},"const SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', (ctx) => {\n    \u002F\u002F Sanitize before sending to external service\n    ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n  })\n})\n","server\u002Fplugins\u002Fevlog.ts",[625,4527,4528,4589,4593,4616,4653,4688,4692,4717,4754,4800,4864,4868,4874,4878,4882,4904,4941,4946,4982,4988],{"__ignoreMap":732},[736,4529,4530,4532,4535,4537,4539,4541,4543,4545,4547,4549,4551,4553,4555,4557,4559,4561,4563,4565,4568,4570,4572,4574,4576,4578,4580,4582,4585,4587],{"class":738,"line":739},[736,4531,1540],{"class":926},[736,4533,4534],{"class":789}," SENSITIVE_KEYS ",[736,4536,1198],{"class":746},[736,4538,859],{"class":789},[736,4540,974],{"class":746},[736,4542,3220],{"class":802},[736,4544,974],{"class":746},[736,4546,935],{"class":746},[736,4548,799],{"class":746},[736,4550,3229],{"class":802},[736,4552,974],{"class":746},[736,4554,935],{"class":746},[736,4556,799],{"class":746},[736,4558,3238],{"class":802},[736,4560,974],{"class":746},[736,4562,935],{"class":746},[736,4564,799],{"class":746},[736,4566,4567],{"class":802},"apikey",[736,4569,974],{"class":746},[736,4571,935],{"class":746},[736,4573,799],{"class":746},[736,4575,3256],{"class":802},[736,4577,974],{"class":746},[736,4579,935],{"class":746},[736,4581,799],{"class":746},[736,4583,4584],{"class":802},"cookie",[736,4586,974],{"class":746},[736,4588,1228],{"class":789},[736,4590,4591],{"class":738,"line":753},[736,4592,829],{"emptyLinePlaceholder":828},[736,4594,4595,4598,4601,4603,4606,4608,4610,4612,4614],{"class":738,"line":768},[736,4596,4597],{"class":926},"function",[736,4599,4600],{"class":841}," deepSanitize",[736,4602,844],{"class":746},[736,4604,4605],{"class":1758},"value",[736,4607,747],{"class":746},[736,4609,3183],{"class":742},[736,4611,2826],{"class":746},[736,4613,3183],{"class":742},[736,4615,750],{"class":746},[736,4617,4618,4620,4622,4625,4627,4630,4632,4634,4637,4639,4642,4644,4646,4648,4651],{"class":738,"line":832},[736,4619,2872],{"class":782},[736,4621,1755],{"class":853},[736,4623,4624],{"class":789},"Array",[736,4626,1189],{"class":746},[736,4628,4629],{"class":841},"isArray",[736,4631,844],{"class":853},[736,4633,4605],{"class":789},[736,4635,4636],{"class":853},")) ",[736,4638,2886],{"class":782},[736,4640,4641],{"class":789}," value",[736,4643,1189],{"class":746},[736,4645,104],{"class":841},[736,4647,844],{"class":853},[736,4649,4650],{"class":789},"deepSanitize",[736,4652,889],{"class":853},[736,4654,4655,4657,4659,4661,4663,4666,4669,4671,4674,4676,4679,4681,4683,4685],{"class":738,"line":850},[736,4656,2872],{"class":782},[736,4658,1755],{"class":853},[736,4660,2877],{"class":746},[736,4662,4605],{"class":789},[736,4664,4665],{"class":746}," ||",[736,4667,4668],{"class":746}," typeof",[736,4670,4641],{"class":789},[736,4672,4673],{"class":746}," !==",[736,4675,799],{"class":746},[736,4677,4678],{"class":802},"object",[736,4680,974],{"class":746},[736,4682,2883],{"class":853},[736,4684,2886],{"class":782},[736,4686,4687],{"class":789}," value\n",[736,4689,4690],{"class":738,"line":883},[736,4691,829],{"emptyLinePlaceholder":828},[736,4693,4694,4696,4698,4700,4702,4704,4706,4708,4710,4712,4714],{"class":738,"line":1811},[736,4695,1771],{"class":926},[736,4697,3285],{"class":789},[736,4699,747],{"class":746},[736,4701,3173],{"class":742},[736,4703,3164],{"class":746},[736,4705,3178],{"class":742},[736,4707,935],{"class":746},[736,4709,3183],{"class":742},[736,4711,3275],{"class":746},[736,4713,953],{"class":746},[736,4715,4716],{"class":746}," {}\n",[736,4718,4719,4721,4723,4725,4727,4729,4731,4734,4736,4738,4741,4743,4746,4748,4750,4752],{"class":738,"line":1816},[736,4720,3304],{"class":782},[736,4722,1755],{"class":853},[736,4724,1540],{"class":926},[736,4726,859],{"class":746},[736,4728,3332],{"class":789},[736,4730,935],{"class":746},[736,4732,4733],{"class":789}," nested",[736,4735,2847],{"class":746},[736,4737,3314],{"class":746},[736,4739,4740],{"class":789}," Object",[736,4742,1189],{"class":746},[736,4744,4745],{"class":841},"entries",[736,4747,844],{"class":853},[736,4749,4605],{"class":789},[736,4751,4636],{"class":853},[736,4753,847],{"class":746},[736,4755,4756,4759,4762,4764,4766,4768,4771,4774,4776,4779,4781,4784,4787,4790,4793,4795,4798],{"class":738,"line":1823},[736,4757,4758],{"class":926},"    const",[736,4760,4761],{"class":789}," name",[736,4763,953],{"class":746},[736,4765,3311],{"class":789},[736,4767,1189],{"class":746},[736,4769,4770],{"class":841},"toLowerCase",[736,4772,4773],{"class":853},"()",[736,4775,1189],{"class":746},[736,4777,4778],{"class":841},"replace",[736,4780,844],{"class":853},[736,4782,4783],{"class":746},"\u002F[",[736,4785,4786],{"class":802},"-_",[736,4788,4789],{"class":746},"]\u002F",[736,4791,4792],{"class":2940},"g",[736,4794,935],{"class":746},[736,4796,4797],{"class":746}," ''",[736,4799,889],{"class":853},[736,4801,4802,4805,4807,4809,4812,4814,4817,4819,4822,4824,4827,4829,4831,4833,4836,4838,4840,4842,4845,4847,4850,4852,4855,4857,4859,4862],{"class":738,"line":1829},[736,4803,4804],{"class":789},"    result",[736,4806,3352],{"class":853},[736,4808,3332],{"class":789},[736,4810,4811],{"class":853},"] ",[736,4813,1198],{"class":746},[736,4815,4816],{"class":789}," SENSITIVE_KEYS",[736,4818,1189],{"class":746},[736,4820,4821],{"class":841},"some",[736,4823,844],{"class":853},[736,4825,4826],{"class":1758},"k",[736,4828,1764],{"class":926},[736,4830,4761],{"class":789},[736,4832,1189],{"class":746},[736,4834,4835],{"class":841},"includes",[736,4837,844],{"class":853},[736,4839,4826],{"class":789},[736,4841,4636],{"class":853},[736,4843,4844],{"class":746},"?",[736,4846,799],{"class":746},[736,4848,4849],{"class":802},"[REDACTED]",[736,4851,974],{"class":746},[736,4853,4854],{"class":746}," :",[736,4856,4600],{"class":841},[736,4858,844],{"class":853},[736,4860,4861],{"class":789},"nested",[736,4863,889],{"class":853},[736,4865,4866],{"class":738,"line":1834},[736,4867,3368],{"class":746},[736,4869,4870,4872],{"class":738,"line":1840},[736,4871,2334],{"class":782},[736,4873,3376],{"class":789},[736,4875,4876],{"class":738,"line":1855},[736,4877,771],{"class":746},[736,4879,4880],{"class":738,"line":1865},[736,4881,829],{"emptyLinePlaceholder":828},[736,4883,4884,4886,4888,4891,4893,4895,4898,4900,4902],{"class":738,"line":1882},[736,4885,835],{"class":782},[736,4887,838],{"class":782},[736,4889,4890],{"class":841}," defineNitroPlugin",[736,4892,844],{"class":789},[736,4894,844],{"class":746},[736,4896,4897],{"class":1758},"nitroApp",[736,4899,1221],{"class":746},[736,4901,1764],{"class":926},[736,4903,750],{"class":746},[736,4905,4906,4909,4911,4914,4916,4919,4921,4923,4926,4928,4930,4932,4935,4937,4939],{"class":738,"line":1907},[736,4907,4908],{"class":789},"  nitroApp",[736,4910,1189],{"class":746},[736,4912,4913],{"class":789},"hooks",[736,4915,1189],{"class":746},[736,4917,4918],{"class":841},"hook",[736,4920,844],{"class":853},[736,4922,974],{"class":746},[736,4924,4925],{"class":802},"evlog:drain",[736,4927,974],{"class":746},[736,4929,935],{"class":746},[736,4931,1755],{"class":746},[736,4933,4934],{"class":1758},"ctx",[736,4936,1221],{"class":746},[736,4938,1764],{"class":926},[736,4940,750],{"class":746},[736,4942,4943],{"class":738,"line":1913},[736,4944,4945],{"class":1819},"    \u002F\u002F Sanitize before sending to external service\n",[736,4947,4948,4951,4953,4955,4957,4959,4961,4963,4965,4967,4969,4972,4974,4977,4979],{"class":738,"line":1919},[736,4949,4950],{"class":789},"    ctx",[736,4952,1189],{"class":746},[736,4954,1759],{"class":789},[736,4956,953],{"class":746},[736,4958,4600],{"class":841},[736,4960,844],{"class":853},[736,4962,4934],{"class":789},[736,4964,1189],{"class":746},[736,4966,1759],{"class":789},[736,4968,2883],{"class":853},[736,4970,4971],{"class":782},"as",[736,4973,4668],{"class":746},[736,4975,4976],{"class":789}," ctx",[736,4978,1189],{"class":746},[736,4980,4981],{"class":789},"event\n",[736,4983,4984,4986],{"class":738,"line":1927},[736,4985,1922],{"class":746},[736,4987,889],{"class":853},[736,4989,4990,4992],{"class":738,"line":2130},[736,4991,886],{"class":746},[736,4993,889],{"class":789},[726,4995,4997],{"className":728,"code":4996,"filename":260,"language":730,"meta":4525,"style":732},"import { definePlugin } from 'nitro'\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\n\nexport default definePlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', (ctx) => {\n    \u002F\u002F Sanitize before sending to external service\n    ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n  })\n})\n",[625,4998,4999,5018,5076,5080,5100,5132,5162,5166,5190,5224,5260,5314,5318,5324,5328,5332,5352,5384,5388,5420,5426],{"__ignoreMap":732},[736,5000,5001,5003,5005,5008,5010,5012,5014,5016],{"class":738,"line":739},[736,5002,783],{"class":782},[736,5004,786],{"class":746},[736,5006,5007],{"class":789}," definePlugin",[736,5009,793],{"class":746},[736,5011,796],{"class":782},[736,5013,799],{"class":746},[736,5015,803],{"class":802},[736,5017,806],{"class":746},[736,5019,5020,5022,5024,5026,5028,5030,5032,5034,5036,5038,5040,5042,5044,5046,5048,5050,5052,5054,5056,5058,5060,5062,5064,5066,5068,5070,5072,5074],{"class":738,"line":753},[736,5021,1540],{"class":926},[736,5023,4534],{"class":789},[736,5025,1198],{"class":746},[736,5027,859],{"class":789},[736,5029,974],{"class":746},[736,5031,3220],{"class":802},[736,5033,974],{"class":746},[736,5035,935],{"class":746},[736,5037,799],{"class":746},[736,5039,3229],{"class":802},[736,5041,974],{"class":746},[736,5043,935],{"class":746},[736,5045,799],{"class":746},[736,5047,3238],{"class":802},[736,5049,974],{"class":746},[736,5051,935],{"class":746},[736,5053,799],{"class":746},[736,5055,4567],{"class":802},[736,5057,974],{"class":746},[736,5059,935],{"class":746},[736,5061,799],{"class":746},[736,5063,3256],{"class":802},[736,5065,974],{"class":746},[736,5067,935],{"class":746},[736,5069,799],{"class":746},[736,5071,4584],{"class":802},[736,5073,974],{"class":746},[736,5075,1228],{"class":789},[736,5077,5078],{"class":738,"line":768},[736,5079,829],{"emptyLinePlaceholder":828},[736,5081,5082,5084,5086,5088,5090,5092,5094,5096,5098],{"class":738,"line":832},[736,5083,4597],{"class":926},[736,5085,4600],{"class":841},[736,5087,844],{"class":746},[736,5089,4605],{"class":1758},[736,5091,747],{"class":746},[736,5093,3183],{"class":742},[736,5095,2826],{"class":746},[736,5097,3183],{"class":742},[736,5099,750],{"class":746},[736,5101,5102,5104,5106,5108,5110,5112,5114,5116,5118,5120,5122,5124,5126,5128,5130],{"class":738,"line":850},[736,5103,2872],{"class":782},[736,5105,1755],{"class":853},[736,5107,4624],{"class":789},[736,5109,1189],{"class":746},[736,5111,4629],{"class":841},[736,5113,844],{"class":853},[736,5115,4605],{"class":789},[736,5117,4636],{"class":853},[736,5119,2886],{"class":782},[736,5121,4641],{"class":789},[736,5123,1189],{"class":746},[736,5125,104],{"class":841},[736,5127,844],{"class":853},[736,5129,4650],{"class":789},[736,5131,889],{"class":853},[736,5133,5134,5136,5138,5140,5142,5144,5146,5148,5150,5152,5154,5156,5158,5160],{"class":738,"line":883},[736,5135,2872],{"class":782},[736,5137,1755],{"class":853},[736,5139,2877],{"class":746},[736,5141,4605],{"class":789},[736,5143,4665],{"class":746},[736,5145,4668],{"class":746},[736,5147,4641],{"class":789},[736,5149,4673],{"class":746},[736,5151,799],{"class":746},[736,5153,4678],{"class":802},[736,5155,974],{"class":746},[736,5157,2883],{"class":853},[736,5159,2886],{"class":782},[736,5161,4687],{"class":789},[736,5163,5164],{"class":738,"line":1811},[736,5165,829],{"emptyLinePlaceholder":828},[736,5167,5168,5170,5172,5174,5176,5178,5180,5182,5184,5186,5188],{"class":738,"line":1816},[736,5169,1771],{"class":926},[736,5171,3285],{"class":789},[736,5173,747],{"class":746},[736,5175,3173],{"class":742},[736,5177,3164],{"class":746},[736,5179,3178],{"class":742},[736,5181,935],{"class":746},[736,5183,3183],{"class":742},[736,5185,3275],{"class":746},[736,5187,953],{"class":746},[736,5189,4716],{"class":746},[736,5191,5192,5194,5196,5198,5200,5202,5204,5206,5208,5210,5212,5214,5216,5218,5220,5222],{"class":738,"line":1823},[736,5193,3304],{"class":782},[736,5195,1755],{"class":853},[736,5197,1540],{"class":926},[736,5199,859],{"class":746},[736,5201,3332],{"class":789},[736,5203,935],{"class":746},[736,5205,4733],{"class":789},[736,5207,2847],{"class":746},[736,5209,3314],{"class":746},[736,5211,4740],{"class":789},[736,5213,1189],{"class":746},[736,5215,4745],{"class":841},[736,5217,844],{"class":853},[736,5219,4605],{"class":789},[736,5221,4636],{"class":853},[736,5223,847],{"class":746},[736,5225,5226,5228,5230,5232,5234,5236,5238,5240,5242,5244,5246,5248,5250,5252,5254,5256,5258],{"class":738,"line":1829},[736,5227,4758],{"class":926},[736,5229,4761],{"class":789},[736,5231,953],{"class":746},[736,5233,3311],{"class":789},[736,5235,1189],{"class":746},[736,5237,4770],{"class":841},[736,5239,4773],{"class":853},[736,5241,1189],{"class":746},[736,5243,4778],{"class":841},[736,5245,844],{"class":853},[736,5247,4783],{"class":746},[736,5249,4786],{"class":802},[736,5251,4789],{"class":746},[736,5253,4792],{"class":2940},[736,5255,935],{"class":746},[736,5257,4797],{"class":746},[736,5259,889],{"class":853},[736,5261,5262,5264,5266,5268,5270,5272,5274,5276,5278,5280,5282,5284,5286,5288,5290,5292,5294,5296,5298,5300,5302,5304,5306,5308,5310,5312],{"class":738,"line":1834},[736,5263,4804],{"class":789},[736,5265,3352],{"class":853},[736,5267,3332],{"class":789},[736,5269,4811],{"class":853},[736,5271,1198],{"class":746},[736,5273,4816],{"class":789},[736,5275,1189],{"class":746},[736,5277,4821],{"class":841},[736,5279,844],{"class":853},[736,5281,4826],{"class":1758},[736,5283,1764],{"class":926},[736,5285,4761],{"class":789},[736,5287,1189],{"class":746},[736,5289,4835],{"class":841},[736,5291,844],{"class":853},[736,5293,4826],{"class":789},[736,5295,4636],{"class":853},[736,5297,4844],{"class":746},[736,5299,799],{"class":746},[736,5301,4849],{"class":802},[736,5303,974],{"class":746},[736,5305,4854],{"class":746},[736,5307,4600],{"class":841},[736,5309,844],{"class":853},[736,5311,4861],{"class":789},[736,5313,889],{"class":853},[736,5315,5316],{"class":738,"line":1840},[736,5317,3368],{"class":746},[736,5319,5320,5322],{"class":738,"line":1855},[736,5321,2334],{"class":782},[736,5323,3376],{"class":789},[736,5325,5326],{"class":738,"line":1865},[736,5327,771],{"class":746},[736,5329,5330],{"class":738,"line":1882},[736,5331,829],{"emptyLinePlaceholder":828},[736,5333,5334,5336,5338,5340,5342,5344,5346,5348,5350],{"class":738,"line":1907},[736,5335,835],{"class":782},[736,5337,838],{"class":782},[736,5339,5007],{"class":841},[736,5341,844],{"class":789},[736,5343,844],{"class":746},[736,5345,4897],{"class":1758},[736,5347,1221],{"class":746},[736,5349,1764],{"class":926},[736,5351,750],{"class":746},[736,5353,5354,5356,5358,5360,5362,5364,5366,5368,5370,5372,5374,5376,5378,5380,5382],{"class":738,"line":1913},[736,5355,4908],{"class":789},[736,5357,1189],{"class":746},[736,5359,4913],{"class":789},[736,5361,1189],{"class":746},[736,5363,4918],{"class":841},[736,5365,844],{"class":853},[736,5367,974],{"class":746},[736,5369,4925],{"class":802},[736,5371,974],{"class":746},[736,5373,935],{"class":746},[736,5375,1755],{"class":746},[736,5377,4934],{"class":1758},[736,5379,1221],{"class":746},[736,5381,1764],{"class":926},[736,5383,750],{"class":746},[736,5385,5386],{"class":738,"line":1919},[736,5387,4945],{"class":1819},[736,5389,5390,5392,5394,5396,5398,5400,5402,5404,5406,5408,5410,5412,5414,5416,5418],{"class":738,"line":1927},[736,5391,4950],{"class":789},[736,5393,1189],{"class":746},[736,5395,1759],{"class":789},[736,5397,953],{"class":746},[736,5399,4600],{"class":841},[736,5401,844],{"class":853},[736,5403,4934],{"class":789},[736,5405,1189],{"class":746},[736,5407,1759],{"class":789},[736,5409,2883],{"class":853},[736,5411,4971],{"class":782},[736,5413,4668],{"class":746},[736,5415,4976],{"class":789},[736,5417,1189],{"class":746},[736,5419,4981],{"class":789},[736,5421,5422,5424],{"class":738,"line":2130},[736,5423,1922],{"class":746},[736,5425,889],{"class":853},[736,5427,5428,5430],{"class":738,"line":2359},[736,5429,886],{"class":746},[736,5431,889],{"class":789},[726,5433,5435],{"className":728,"code":5434,"filename":250,"language":730,"meta":893,"style":732},"import { createEvlog } from 'evlog\u002Fnext'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[625,5436,5437,5455,5459,5517,5521,5541,5573,5603,5607,5631,5665,5701,5755,5759,5765,5769,5801,5815,5832,5837,5870,5874],{"__ignoreMap":732},[736,5438,5439,5441,5443,5445,5447,5449,5451,5453],{"class":738,"line":739},[736,5440,783],{"class":782},[736,5442,786],{"class":746},[736,5444,904],{"class":789},[736,5446,793],{"class":746},[736,5448,796],{"class":782},[736,5450,799],{"class":746},[736,5452,913],{"class":802},[736,5454,806],{"class":746},[736,5456,5457],{"class":738,"line":753},[736,5458,829],{"emptyLinePlaceholder":828},[736,5460,5461,5463,5465,5467,5469,5471,5473,5475,5477,5479,5481,5483,5485,5487,5489,5491,5493,5495,5497,5499,5501,5503,5505,5507,5509,5511,5513,5515],{"class":738,"line":768},[736,5462,1540],{"class":926},[736,5464,4534],{"class":789},[736,5466,1198],{"class":746},[736,5468,859],{"class":789},[736,5470,974],{"class":746},[736,5472,3220],{"class":802},[736,5474,974],{"class":746},[736,5476,935],{"class":746},[736,5478,799],{"class":746},[736,5480,3229],{"class":802},[736,5482,974],{"class":746},[736,5484,935],{"class":746},[736,5486,799],{"class":746},[736,5488,3238],{"class":802},[736,5490,974],{"class":746},[736,5492,935],{"class":746},[736,5494,799],{"class":746},[736,5496,4567],{"class":802},[736,5498,974],{"class":746},[736,5500,935],{"class":746},[736,5502,799],{"class":746},[736,5504,3256],{"class":802},[736,5506,974],{"class":746},[736,5508,935],{"class":746},[736,5510,799],{"class":746},[736,5512,4584],{"class":802},[736,5514,974],{"class":746},[736,5516,1228],{"class":789},[736,5518,5519],{"class":738,"line":832},[736,5520,829],{"emptyLinePlaceholder":828},[736,5522,5523,5525,5527,5529,5531,5533,5535,5537,5539],{"class":738,"line":850},[736,5524,4597],{"class":926},[736,5526,4600],{"class":841},[736,5528,844],{"class":746},[736,5530,4605],{"class":1758},[736,5532,747],{"class":746},[736,5534,3183],{"class":742},[736,5536,2826],{"class":746},[736,5538,3183],{"class":742},[736,5540,750],{"class":746},[736,5542,5543,5545,5547,5549,5551,5553,5555,5557,5559,5561,5563,5565,5567,5569,5571],{"class":738,"line":883},[736,5544,2872],{"class":782},[736,5546,1755],{"class":853},[736,5548,4624],{"class":789},[736,5550,1189],{"class":746},[736,5552,4629],{"class":841},[736,5554,844],{"class":853},[736,5556,4605],{"class":789},[736,5558,4636],{"class":853},[736,5560,2886],{"class":782},[736,5562,4641],{"class":789},[736,5564,1189],{"class":746},[736,5566,104],{"class":841},[736,5568,844],{"class":853},[736,5570,4650],{"class":789},[736,5572,889],{"class":853},[736,5574,5575,5577,5579,5581,5583,5585,5587,5589,5591,5593,5595,5597,5599,5601],{"class":738,"line":1811},[736,5576,2872],{"class":782},[736,5578,1755],{"class":853},[736,5580,2877],{"class":746},[736,5582,4605],{"class":789},[736,5584,4665],{"class":746},[736,5586,4668],{"class":746},[736,5588,4641],{"class":789},[736,5590,4673],{"class":746},[736,5592,799],{"class":746},[736,5594,4678],{"class":802},[736,5596,974],{"class":746},[736,5598,2883],{"class":853},[736,5600,2886],{"class":782},[736,5602,4687],{"class":789},[736,5604,5605],{"class":738,"line":1816},[736,5606,829],{"emptyLinePlaceholder":828},[736,5608,5609,5611,5613,5615,5617,5619,5621,5623,5625,5627,5629],{"class":738,"line":1823},[736,5610,1771],{"class":926},[736,5612,3285],{"class":789},[736,5614,747],{"class":746},[736,5616,3173],{"class":742},[736,5618,3164],{"class":746},[736,5620,3178],{"class":742},[736,5622,935],{"class":746},[736,5624,3183],{"class":742},[736,5626,3275],{"class":746},[736,5628,953],{"class":746},[736,5630,4716],{"class":746},[736,5632,5633,5635,5637,5639,5641,5643,5645,5647,5649,5651,5653,5655,5657,5659,5661,5663],{"class":738,"line":1829},[736,5634,3304],{"class":782},[736,5636,1755],{"class":853},[736,5638,1540],{"class":926},[736,5640,859],{"class":746},[736,5642,3332],{"class":789},[736,5644,935],{"class":746},[736,5646,4733],{"class":789},[736,5648,2847],{"class":746},[736,5650,3314],{"class":746},[736,5652,4740],{"class":789},[736,5654,1189],{"class":746},[736,5656,4745],{"class":841},[736,5658,844],{"class":853},[736,5660,4605],{"class":789},[736,5662,4636],{"class":853},[736,5664,847],{"class":746},[736,5666,5667,5669,5671,5673,5675,5677,5679,5681,5683,5685,5687,5689,5691,5693,5695,5697,5699],{"class":738,"line":1834},[736,5668,4758],{"class":926},[736,5670,4761],{"class":789},[736,5672,953],{"class":746},[736,5674,3311],{"class":789},[736,5676,1189],{"class":746},[736,5678,4770],{"class":841},[736,5680,4773],{"class":853},[736,5682,1189],{"class":746},[736,5684,4778],{"class":841},[736,5686,844],{"class":853},[736,5688,4783],{"class":746},[736,5690,4786],{"class":802},[736,5692,4789],{"class":746},[736,5694,4792],{"class":2940},[736,5696,935],{"class":746},[736,5698,4797],{"class":746},[736,5700,889],{"class":853},[736,5702,5703,5705,5707,5709,5711,5713,5715,5717,5719,5721,5723,5725,5727,5729,5731,5733,5735,5737,5739,5741,5743,5745,5747,5749,5751,5753],{"class":738,"line":1840},[736,5704,4804],{"class":789},[736,5706,3352],{"class":853},[736,5708,3332],{"class":789},[736,5710,4811],{"class":853},[736,5712,1198],{"class":746},[736,5714,4816],{"class":789},[736,5716,1189],{"class":746},[736,5718,4821],{"class":841},[736,5720,844],{"class":853},[736,5722,4826],{"class":1758},[736,5724,1764],{"class":926},[736,5726,4761],{"class":789},[736,5728,1189],{"class":746},[736,5730,4835],{"class":841},[736,5732,844],{"class":853},[736,5734,4826],{"class":789},[736,5736,4636],{"class":853},[736,5738,4844],{"class":746},[736,5740,799],{"class":746},[736,5742,4849],{"class":802},[736,5744,974],{"class":746},[736,5746,4854],{"class":746},[736,5748,4600],{"class":841},[736,5750,844],{"class":853},[736,5752,4861],{"class":789},[736,5754,889],{"class":853},[736,5756,5757],{"class":738,"line":1855},[736,5758,3368],{"class":746},[736,5760,5761,5763],{"class":738,"line":1865},[736,5762,2334],{"class":782},[736,5764,3376],{"class":789},[736,5766,5767],{"class":738,"line":1882},[736,5768,771],{"class":746},[736,5770,5771,5773,5775,5777,5779,5781,5783,5785,5787,5789,5791,5793,5795,5797,5799],{"class":738,"line":1907},[736,5772,835],{"class":782},[736,5774,927],{"class":926},[736,5776,786],{"class":746},[736,5778,932],{"class":789},[736,5780,935],{"class":746},[736,5782,938],{"class":789},[736,5784,935],{"class":746},[736,5786,943],{"class":789},[736,5788,935],{"class":746},[736,5790,948],{"class":789},[736,5792,886],{"class":746},[736,5794,953],{"class":746},[736,5796,904],{"class":841},[736,5798,844],{"class":789},[736,5800,847],{"class":746},[736,5802,5803,5805,5807,5809,5811,5813],{"class":738,"line":1913},[736,5804,964],{"class":853},[736,5806,747],{"class":746},[736,5808,799],{"class":746},[736,5810,971],{"class":802},[736,5812,974],{"class":746},[736,5814,765],{"class":746},[736,5816,5817,5820,5822,5824,5826,5828,5830],{"class":738,"line":1919},[736,5818,5819],{"class":841},"  drain",[736,5821,747],{"class":746},[736,5823,1755],{"class":746},[736,5825,4934],{"class":1758},[736,5827,1221],{"class":746},[736,5829,1764],{"class":926},[736,5831,750],{"class":746},[736,5833,5834],{"class":738,"line":1927},[736,5835,5836],{"class":1819},"      \u002F\u002F Sanitize before sending to external service\n",[736,5838,5839,5842,5844,5846,5848,5850,5852,5854,5856,5858,5860,5862,5864,5866,5868],{"class":738,"line":2130},[736,5840,5841],{"class":789},"      ctx",[736,5843,1189],{"class":746},[736,5845,1759],{"class":789},[736,5847,953],{"class":746},[736,5849,4600],{"class":841},[736,5851,844],{"class":853},[736,5853,4934],{"class":789},[736,5855,1189],{"class":746},[736,5857,1759],{"class":789},[736,5859,2883],{"class":853},[736,5861,4971],{"class":782},[736,5863,4668],{"class":746},[736,5865,4976],{"class":789},[736,5867,1189],{"class":746},[736,5869,4981],{"class":789},[736,5871,5872],{"class":738,"line":2359},[736,5873,1916],{"class":746},[736,5875,5876,5878],{"class":738,"line":3189},[736,5877,886],{"class":746},[736,5879,889],{"class":789},[726,5881,5883],{"className":728,"code":5882,"filename":255,"language":730,"meta":996,"style":732},"import { createEvlogHooks } from 'evlog\u002Fsveltekit'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nexport const { handle, handleError } = createEvlogHooks({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[625,5884,5885,5903,5907,5965,5969,5989,6021,6051,6055,6079,6113,6149,6203,6207,6213,6217,6241,6257,6261,6293,6297],{"__ignoreMap":732},[736,5886,5887,5889,5891,5893,5895,5897,5899,5901],{"class":738,"line":739},[736,5888,783],{"class":782},[736,5890,786],{"class":746},[736,5892,1007],{"class":789},[736,5894,793],{"class":746},[736,5896,796],{"class":782},[736,5898,799],{"class":746},[736,5900,1016],{"class":802},[736,5902,806],{"class":746},[736,5904,5905],{"class":738,"line":753},[736,5906,829],{"emptyLinePlaceholder":828},[736,5908,5909,5911,5913,5915,5917,5919,5921,5923,5925,5927,5929,5931,5933,5935,5937,5939,5941,5943,5945,5947,5949,5951,5953,5955,5957,5959,5961,5963],{"class":738,"line":768},[736,5910,1540],{"class":926},[736,5912,4534],{"class":789},[736,5914,1198],{"class":746},[736,5916,859],{"class":789},[736,5918,974],{"class":746},[736,5920,3220],{"class":802},[736,5922,974],{"class":746},[736,5924,935],{"class":746},[736,5926,799],{"class":746},[736,5928,3229],{"class":802},[736,5930,974],{"class":746},[736,5932,935],{"class":746},[736,5934,799],{"class":746},[736,5936,3238],{"class":802},[736,5938,974],{"class":746},[736,5940,935],{"class":746},[736,5942,799],{"class":746},[736,5944,4567],{"class":802},[736,5946,974],{"class":746},[736,5948,935],{"class":746},[736,5950,799],{"class":746},[736,5952,3256],{"class":802},[736,5954,974],{"class":746},[736,5956,935],{"class":746},[736,5958,799],{"class":746},[736,5960,4584],{"class":802},[736,5962,974],{"class":746},[736,5964,1228],{"class":789},[736,5966,5967],{"class":738,"line":832},[736,5968,829],{"emptyLinePlaceholder":828},[736,5970,5971,5973,5975,5977,5979,5981,5983,5985,5987],{"class":738,"line":850},[736,5972,4597],{"class":926},[736,5974,4600],{"class":841},[736,5976,844],{"class":746},[736,5978,4605],{"class":1758},[736,5980,747],{"class":746},[736,5982,3183],{"class":742},[736,5984,2826],{"class":746},[736,5986,3183],{"class":742},[736,5988,750],{"class":746},[736,5990,5991,5993,5995,5997,5999,6001,6003,6005,6007,6009,6011,6013,6015,6017,6019],{"class":738,"line":883},[736,5992,2872],{"class":782},[736,5994,1755],{"class":853},[736,5996,4624],{"class":789},[736,5998,1189],{"class":746},[736,6000,4629],{"class":841},[736,6002,844],{"class":853},[736,6004,4605],{"class":789},[736,6006,4636],{"class":853},[736,6008,2886],{"class":782},[736,6010,4641],{"class":789},[736,6012,1189],{"class":746},[736,6014,104],{"class":841},[736,6016,844],{"class":853},[736,6018,4650],{"class":789},[736,6020,889],{"class":853},[736,6022,6023,6025,6027,6029,6031,6033,6035,6037,6039,6041,6043,6045,6047,6049],{"class":738,"line":1811},[736,6024,2872],{"class":782},[736,6026,1755],{"class":853},[736,6028,2877],{"class":746},[736,6030,4605],{"class":789},[736,6032,4665],{"class":746},[736,6034,4668],{"class":746},[736,6036,4641],{"class":789},[736,6038,4673],{"class":746},[736,6040,799],{"class":746},[736,6042,4678],{"class":802},[736,6044,974],{"class":746},[736,6046,2883],{"class":853},[736,6048,2886],{"class":782},[736,6050,4687],{"class":789},[736,6052,6053],{"class":738,"line":1816},[736,6054,829],{"emptyLinePlaceholder":828},[736,6056,6057,6059,6061,6063,6065,6067,6069,6071,6073,6075,6077],{"class":738,"line":1823},[736,6058,1771],{"class":926},[736,6060,3285],{"class":789},[736,6062,747],{"class":746},[736,6064,3173],{"class":742},[736,6066,3164],{"class":746},[736,6068,3178],{"class":742},[736,6070,935],{"class":746},[736,6072,3183],{"class":742},[736,6074,3275],{"class":746},[736,6076,953],{"class":746},[736,6078,4716],{"class":746},[736,6080,6081,6083,6085,6087,6089,6091,6093,6095,6097,6099,6101,6103,6105,6107,6109,6111],{"class":738,"line":1829},[736,6082,3304],{"class":782},[736,6084,1755],{"class":853},[736,6086,1540],{"class":926},[736,6088,859],{"class":746},[736,6090,3332],{"class":789},[736,6092,935],{"class":746},[736,6094,4733],{"class":789},[736,6096,2847],{"class":746},[736,6098,3314],{"class":746},[736,6100,4740],{"class":789},[736,6102,1189],{"class":746},[736,6104,4745],{"class":841},[736,6106,844],{"class":853},[736,6108,4605],{"class":789},[736,6110,4636],{"class":853},[736,6112,847],{"class":746},[736,6114,6115,6117,6119,6121,6123,6125,6127,6129,6131,6133,6135,6137,6139,6141,6143,6145,6147],{"class":738,"line":1834},[736,6116,4758],{"class":926},[736,6118,4761],{"class":789},[736,6120,953],{"class":746},[736,6122,3311],{"class":789},[736,6124,1189],{"class":746},[736,6126,4770],{"class":841},[736,6128,4773],{"class":853},[736,6130,1189],{"class":746},[736,6132,4778],{"class":841},[736,6134,844],{"class":853},[736,6136,4783],{"class":746},[736,6138,4786],{"class":802},[736,6140,4789],{"class":746},[736,6142,4792],{"class":2940},[736,6144,935],{"class":746},[736,6146,4797],{"class":746},[736,6148,889],{"class":853},[736,6150,6151,6153,6155,6157,6159,6161,6163,6165,6167,6169,6171,6173,6175,6177,6179,6181,6183,6185,6187,6189,6191,6193,6195,6197,6199,6201],{"class":738,"line":1840},[736,6152,4804],{"class":789},[736,6154,3352],{"class":853},[736,6156,3332],{"class":789},[736,6158,4811],{"class":853},[736,6160,1198],{"class":746},[736,6162,4816],{"class":789},[736,6164,1189],{"class":746},[736,6166,4821],{"class":841},[736,6168,844],{"class":853},[736,6170,4826],{"class":1758},[736,6172,1764],{"class":926},[736,6174,4761],{"class":789},[736,6176,1189],{"class":746},[736,6178,4835],{"class":841},[736,6180,844],{"class":853},[736,6182,4826],{"class":789},[736,6184,4636],{"class":853},[736,6186,4844],{"class":746},[736,6188,799],{"class":746},[736,6190,4849],{"class":802},[736,6192,974],{"class":746},[736,6194,4854],{"class":746},[736,6196,4600],{"class":841},[736,6198,844],{"class":853},[736,6200,4861],{"class":789},[736,6202,889],{"class":853},[736,6204,6205],{"class":738,"line":1855},[736,6206,3368],{"class":746},[736,6208,6209,6211],{"class":738,"line":1865},[736,6210,2334],{"class":782},[736,6212,3376],{"class":789},[736,6214,6215],{"class":738,"line":1882},[736,6216,771],{"class":746},[736,6218,6219,6221,6223,6225,6227,6229,6231,6233,6235,6237,6239],{"class":738,"line":1907},[736,6220,835],{"class":782},[736,6222,927],{"class":926},[736,6224,786],{"class":746},[736,6226,1033],{"class":789},[736,6228,935],{"class":746},[736,6230,1038],{"class":789},[736,6232,886],{"class":746},[736,6234,953],{"class":746},[736,6236,1007],{"class":841},[736,6238,844],{"class":789},[736,6240,847],{"class":746},[736,6242,6243,6245,6247,6249,6251,6253,6255],{"class":738,"line":1913},[736,6244,5819],{"class":841},[736,6246,747],{"class":746},[736,6248,1755],{"class":746},[736,6250,4934],{"class":1758},[736,6252,1221],{"class":746},[736,6254,1764],{"class":926},[736,6256,750],{"class":746},[736,6258,6259],{"class":738,"line":1919},[736,6260,5836],{"class":1819},[736,6262,6263,6265,6267,6269,6271,6273,6275,6277,6279,6281,6283,6285,6287,6289,6291],{"class":738,"line":1927},[736,6264,5841],{"class":789},[736,6266,1189],{"class":746},[736,6268,1759],{"class":789},[736,6270,953],{"class":746},[736,6272,4600],{"class":841},[736,6274,844],{"class":853},[736,6276,4934],{"class":789},[736,6278,1189],{"class":746},[736,6280,1759],{"class":789},[736,6282,2883],{"class":853},[736,6284,4971],{"class":782},[736,6286,4668],{"class":746},[736,6288,4976],{"class":789},[736,6290,1189],{"class":746},[736,6292,4981],{"class":789},[736,6294,6295],{"class":738,"line":2130},[736,6296,1916],{"class":746},[736,6298,6299,6301],{"class":738,"line":2359},[736,6300,886],{"class":746},[736,6302,889],{"class":789},[726,6304,6306],{"className":728,"code":6305,"filename":265,"language":730,"meta":4525,"style":732},"import { definePlugin } from 'nitro'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\n\nexport default definePlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', (ctx) => {\n    \u002F\u002F Sanitize before sending to external service\n    ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n  })\n})\n",[625,6307,6308,6326,6330,6388,6392,6412,6444,6474,6478,6502,6536,6572,6626,6630,6636,6640,6644,6664,6696,6700,6732,6738],{"__ignoreMap":732},[736,6309,6310,6312,6314,6316,6318,6320,6322,6324],{"class":738,"line":739},[736,6311,783],{"class":782},[736,6313,786],{"class":746},[736,6315,5007],{"class":789},[736,6317,793],{"class":746},[736,6319,796],{"class":782},[736,6321,799],{"class":746},[736,6323,803],{"class":802},[736,6325,806],{"class":746},[736,6327,6328],{"class":738,"line":753},[736,6329,829],{"emptyLinePlaceholder":828},[736,6331,6332,6334,6336,6338,6340,6342,6344,6346,6348,6350,6352,6354,6356,6358,6360,6362,6364,6366,6368,6370,6372,6374,6376,6378,6380,6382,6384,6386],{"class":738,"line":768},[736,6333,1540],{"class":926},[736,6335,4534],{"class":789},[736,6337,1198],{"class":746},[736,6339,859],{"class":789},[736,6341,974],{"class":746},[736,6343,3220],{"class":802},[736,6345,974],{"class":746},[736,6347,935],{"class":746},[736,6349,799],{"class":746},[736,6351,3229],{"class":802},[736,6353,974],{"class":746},[736,6355,935],{"class":746},[736,6357,799],{"class":746},[736,6359,3238],{"class":802},[736,6361,974],{"class":746},[736,6363,935],{"class":746},[736,6365,799],{"class":746},[736,6367,4567],{"class":802},[736,6369,974],{"class":746},[736,6371,935],{"class":746},[736,6373,799],{"class":746},[736,6375,3256],{"class":802},[736,6377,974],{"class":746},[736,6379,935],{"class":746},[736,6381,799],{"class":746},[736,6383,4584],{"class":802},[736,6385,974],{"class":746},[736,6387,1228],{"class":789},[736,6389,6390],{"class":738,"line":832},[736,6391,829],{"emptyLinePlaceholder":828},[736,6393,6394,6396,6398,6400,6402,6404,6406,6408,6410],{"class":738,"line":850},[736,6395,4597],{"class":926},[736,6397,4600],{"class":841},[736,6399,844],{"class":746},[736,6401,4605],{"class":1758},[736,6403,747],{"class":746},[736,6405,3183],{"class":742},[736,6407,2826],{"class":746},[736,6409,3183],{"class":742},[736,6411,750],{"class":746},[736,6413,6414,6416,6418,6420,6422,6424,6426,6428,6430,6432,6434,6436,6438,6440,6442],{"class":738,"line":883},[736,6415,2872],{"class":782},[736,6417,1755],{"class":853},[736,6419,4624],{"class":789},[736,6421,1189],{"class":746},[736,6423,4629],{"class":841},[736,6425,844],{"class":853},[736,6427,4605],{"class":789},[736,6429,4636],{"class":853},[736,6431,2886],{"class":782},[736,6433,4641],{"class":789},[736,6435,1189],{"class":746},[736,6437,104],{"class":841},[736,6439,844],{"class":853},[736,6441,4650],{"class":789},[736,6443,889],{"class":853},[736,6445,6446,6448,6450,6452,6454,6456,6458,6460,6462,6464,6466,6468,6470,6472],{"class":738,"line":1811},[736,6447,2872],{"class":782},[736,6449,1755],{"class":853},[736,6451,2877],{"class":746},[736,6453,4605],{"class":789},[736,6455,4665],{"class":746},[736,6457,4668],{"class":746},[736,6459,4641],{"class":789},[736,6461,4673],{"class":746},[736,6463,799],{"class":746},[736,6465,4678],{"class":802},[736,6467,974],{"class":746},[736,6469,2883],{"class":853},[736,6471,2886],{"class":782},[736,6473,4687],{"class":789},[736,6475,6476],{"class":738,"line":1816},[736,6477,829],{"emptyLinePlaceholder":828},[736,6479,6480,6482,6484,6486,6488,6490,6492,6494,6496,6498,6500],{"class":738,"line":1823},[736,6481,1771],{"class":926},[736,6483,3285],{"class":789},[736,6485,747],{"class":746},[736,6487,3173],{"class":742},[736,6489,3164],{"class":746},[736,6491,3178],{"class":742},[736,6493,935],{"class":746},[736,6495,3183],{"class":742},[736,6497,3275],{"class":746},[736,6499,953],{"class":746},[736,6501,4716],{"class":746},[736,6503,6504,6506,6508,6510,6512,6514,6516,6518,6520,6522,6524,6526,6528,6530,6532,6534],{"class":738,"line":1829},[736,6505,3304],{"class":782},[736,6507,1755],{"class":853},[736,6509,1540],{"class":926},[736,6511,859],{"class":746},[736,6513,3332],{"class":789},[736,6515,935],{"class":746},[736,6517,4733],{"class":789},[736,6519,2847],{"class":746},[736,6521,3314],{"class":746},[736,6523,4740],{"class":789},[736,6525,1189],{"class":746},[736,6527,4745],{"class":841},[736,6529,844],{"class":853},[736,6531,4605],{"class":789},[736,6533,4636],{"class":853},[736,6535,847],{"class":746},[736,6537,6538,6540,6542,6544,6546,6548,6550,6552,6554,6556,6558,6560,6562,6564,6566,6568,6570],{"class":738,"line":1834},[736,6539,4758],{"class":926},[736,6541,4761],{"class":789},[736,6543,953],{"class":746},[736,6545,3311],{"class":789},[736,6547,1189],{"class":746},[736,6549,4770],{"class":841},[736,6551,4773],{"class":853},[736,6553,1189],{"class":746},[736,6555,4778],{"class":841},[736,6557,844],{"class":853},[736,6559,4783],{"class":746},[736,6561,4786],{"class":802},[736,6563,4789],{"class":746},[736,6565,4792],{"class":2940},[736,6567,935],{"class":746},[736,6569,4797],{"class":746},[736,6571,889],{"class":853},[736,6573,6574,6576,6578,6580,6582,6584,6586,6588,6590,6592,6594,6596,6598,6600,6602,6604,6606,6608,6610,6612,6614,6616,6618,6620,6622,6624],{"class":738,"line":1840},[736,6575,4804],{"class":789},[736,6577,3352],{"class":853},[736,6579,3332],{"class":789},[736,6581,4811],{"class":853},[736,6583,1198],{"class":746},[736,6585,4816],{"class":789},[736,6587,1189],{"class":746},[736,6589,4821],{"class":841},[736,6591,844],{"class":853},[736,6593,4826],{"class":1758},[736,6595,1764],{"class":926},[736,6597,4761],{"class":789},[736,6599,1189],{"class":746},[736,6601,4835],{"class":841},[736,6603,844],{"class":853},[736,6605,4826],{"class":789},[736,6607,4636],{"class":853},[736,6609,4844],{"class":746},[736,6611,799],{"class":746},[736,6613,4849],{"class":802},[736,6615,974],{"class":746},[736,6617,4854],{"class":746},[736,6619,4600],{"class":841},[736,6621,844],{"class":853},[736,6623,4861],{"class":789},[736,6625,889],{"class":853},[736,6627,6628],{"class":738,"line":1855},[736,6629,3368],{"class":746},[736,6631,6632,6634],{"class":738,"line":1865},[736,6633,2334],{"class":782},[736,6635,3376],{"class":789},[736,6637,6638],{"class":738,"line":1882},[736,6639,771],{"class":746},[736,6641,6642],{"class":738,"line":1907},[736,6643,829],{"emptyLinePlaceholder":828},[736,6645,6646,6648,6650,6652,6654,6656,6658,6660,6662],{"class":738,"line":1913},[736,6647,835],{"class":782},[736,6649,838],{"class":782},[736,6651,5007],{"class":841},[736,6653,844],{"class":789},[736,6655,844],{"class":746},[736,6657,4897],{"class":1758},[736,6659,1221],{"class":746},[736,6661,1764],{"class":926},[736,6663,750],{"class":746},[736,6665,6666,6668,6670,6672,6674,6676,6678,6680,6682,6684,6686,6688,6690,6692,6694],{"class":738,"line":1919},[736,6667,4908],{"class":789},[736,6669,1189],{"class":746},[736,6671,4913],{"class":789},[736,6673,1189],{"class":746},[736,6675,4918],{"class":841},[736,6677,844],{"class":853},[736,6679,974],{"class":746},[736,6681,4925],{"class":802},[736,6683,974],{"class":746},[736,6685,935],{"class":746},[736,6687,1755],{"class":746},[736,6689,4934],{"class":1758},[736,6691,1221],{"class":746},[736,6693,1764],{"class":926},[736,6695,750],{"class":746},[736,6697,6698],{"class":738,"line":1927},[736,6699,4945],{"class":1819},[736,6701,6702,6704,6706,6708,6710,6712,6714,6716,6718,6720,6722,6724,6726,6728,6730],{"class":738,"line":2130},[736,6703,4950],{"class":789},[736,6705,1189],{"class":746},[736,6707,1759],{"class":789},[736,6709,953],{"class":746},[736,6711,4600],{"class":841},[736,6713,844],{"class":853},[736,6715,4934],{"class":789},[736,6717,1189],{"class":746},[736,6719,1759],{"class":789},[736,6721,2883],{"class":853},[736,6723,4971],{"class":782},[736,6725,4668],{"class":746},[736,6727,4976],{"class":789},[736,6729,1189],{"class":746},[736,6731,4981],{"class":789},[736,6733,6734,6736],{"class":738,"line":2359},[736,6735,1922],{"class":746},[736,6737,889],{"class":853},[736,6739,6740,6742],{"class":738,"line":3189},[736,6741,886],{"class":746},[736,6743,889],{"class":789},[726,6745,6747],{"className":728,"code":6746,"filename":295,"language":730,"meta":1146,"style":732},"import { evlog } from 'evlog\u002Freact-router'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nexport const middleware: Route.MiddlewareFunction[] = [\n  evlog({\n      drain: (ctx) => {\n          \u002F\u002F Sanitize before sending to external service\n          ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n        },\n    }),\n]\n",[625,6748,6749,6767,6771,6829,6833,6853,6885,6915,6919,6943,6977,7013,7067,7071,7077,7081,7103,7111,7128,7133,7166,7171,7180],{"__ignoreMap":732},[736,6750,6751,6753,6755,6757,6759,6761,6763,6765],{"class":738,"line":739},[736,6752,783],{"class":782},[736,6754,786],{"class":746},[736,6756,1157],{"class":789},[736,6758,793],{"class":746},[736,6760,796],{"class":782},[736,6762,799],{"class":746},[736,6764,1166],{"class":802},[736,6766,806],{"class":746},[736,6768,6769],{"class":738,"line":753},[736,6770,829],{"emptyLinePlaceholder":828},[736,6772,6773,6775,6777,6779,6781,6783,6785,6787,6789,6791,6793,6795,6797,6799,6801,6803,6805,6807,6809,6811,6813,6815,6817,6819,6821,6823,6825,6827],{"class":738,"line":768},[736,6774,1540],{"class":926},[736,6776,4534],{"class":789},[736,6778,1198],{"class":746},[736,6780,859],{"class":789},[736,6782,974],{"class":746},[736,6784,3220],{"class":802},[736,6786,974],{"class":746},[736,6788,935],{"class":746},[736,6790,799],{"class":746},[736,6792,3229],{"class":802},[736,6794,974],{"class":746},[736,6796,935],{"class":746},[736,6798,799],{"class":746},[736,6800,3238],{"class":802},[736,6802,974],{"class":746},[736,6804,935],{"class":746},[736,6806,799],{"class":746},[736,6808,4567],{"class":802},[736,6810,974],{"class":746},[736,6812,935],{"class":746},[736,6814,799],{"class":746},[736,6816,3256],{"class":802},[736,6818,974],{"class":746},[736,6820,935],{"class":746},[736,6822,799],{"class":746},[736,6824,4584],{"class":802},[736,6826,974],{"class":746},[736,6828,1228],{"class":789},[736,6830,6831],{"class":738,"line":832},[736,6832,829],{"emptyLinePlaceholder":828},[736,6834,6835,6837,6839,6841,6843,6845,6847,6849,6851],{"class":738,"line":850},[736,6836,4597],{"class":926},[736,6838,4600],{"class":841},[736,6840,844],{"class":746},[736,6842,4605],{"class":1758},[736,6844,747],{"class":746},[736,6846,3183],{"class":742},[736,6848,2826],{"class":746},[736,6850,3183],{"class":742},[736,6852,750],{"class":746},[736,6854,6855,6857,6859,6861,6863,6865,6867,6869,6871,6873,6875,6877,6879,6881,6883],{"class":738,"line":883},[736,6856,2872],{"class":782},[736,6858,1755],{"class":853},[736,6860,4624],{"class":789},[736,6862,1189],{"class":746},[736,6864,4629],{"class":841},[736,6866,844],{"class":853},[736,6868,4605],{"class":789},[736,6870,4636],{"class":853},[736,6872,2886],{"class":782},[736,6874,4641],{"class":789},[736,6876,1189],{"class":746},[736,6878,104],{"class":841},[736,6880,844],{"class":853},[736,6882,4650],{"class":789},[736,6884,889],{"class":853},[736,6886,6887,6889,6891,6893,6895,6897,6899,6901,6903,6905,6907,6909,6911,6913],{"class":738,"line":1811},[736,6888,2872],{"class":782},[736,6890,1755],{"class":853},[736,6892,2877],{"class":746},[736,6894,4605],{"class":789},[736,6896,4665],{"class":746},[736,6898,4668],{"class":746},[736,6900,4641],{"class":789},[736,6902,4673],{"class":746},[736,6904,799],{"class":746},[736,6906,4678],{"class":802},[736,6908,974],{"class":746},[736,6910,2883],{"class":853},[736,6912,2886],{"class":782},[736,6914,4687],{"class":789},[736,6916,6917],{"class":738,"line":1816},[736,6918,829],{"emptyLinePlaceholder":828},[736,6920,6921,6923,6925,6927,6929,6931,6933,6935,6937,6939,6941],{"class":738,"line":1823},[736,6922,1771],{"class":926},[736,6924,3285],{"class":789},[736,6926,747],{"class":746},[736,6928,3173],{"class":742},[736,6930,3164],{"class":746},[736,6932,3178],{"class":742},[736,6934,935],{"class":746},[736,6936,3183],{"class":742},[736,6938,3275],{"class":746},[736,6940,953],{"class":746},[736,6942,4716],{"class":746},[736,6944,6945,6947,6949,6951,6953,6955,6957,6959,6961,6963,6965,6967,6969,6971,6973,6975],{"class":738,"line":1829},[736,6946,3304],{"class":782},[736,6948,1755],{"class":853},[736,6950,1540],{"class":926},[736,6952,859],{"class":746},[736,6954,3332],{"class":789},[736,6956,935],{"class":746},[736,6958,4733],{"class":789},[736,6960,2847],{"class":746},[736,6962,3314],{"class":746},[736,6964,4740],{"class":789},[736,6966,1189],{"class":746},[736,6968,4745],{"class":841},[736,6970,844],{"class":853},[736,6972,4605],{"class":789},[736,6974,4636],{"class":853},[736,6976,847],{"class":746},[736,6978,6979,6981,6983,6985,6987,6989,6991,6993,6995,6997,6999,7001,7003,7005,7007,7009,7011],{"class":738,"line":1834},[736,6980,4758],{"class":926},[736,6982,4761],{"class":789},[736,6984,953],{"class":746},[736,6986,3311],{"class":789},[736,6988,1189],{"class":746},[736,6990,4770],{"class":841},[736,6992,4773],{"class":853},[736,6994,1189],{"class":746},[736,6996,4778],{"class":841},[736,6998,844],{"class":853},[736,7000,4783],{"class":746},[736,7002,4786],{"class":802},[736,7004,4789],{"class":746},[736,7006,4792],{"class":2940},[736,7008,935],{"class":746},[736,7010,4797],{"class":746},[736,7012,889],{"class":853},[736,7014,7015,7017,7019,7021,7023,7025,7027,7029,7031,7033,7035,7037,7039,7041,7043,7045,7047,7049,7051,7053,7055,7057,7059,7061,7063,7065],{"class":738,"line":1840},[736,7016,4804],{"class":789},[736,7018,3352],{"class":853},[736,7020,3332],{"class":789},[736,7022,4811],{"class":853},[736,7024,1198],{"class":746},[736,7026,4816],{"class":789},[736,7028,1189],{"class":746},[736,7030,4821],{"class":841},[736,7032,844],{"class":853},[736,7034,4826],{"class":1758},[736,7036,1764],{"class":926},[736,7038,4761],{"class":789},[736,7040,1189],{"class":746},[736,7042,4835],{"class":841},[736,7044,844],{"class":853},[736,7046,4826],{"class":789},[736,7048,4636],{"class":853},[736,7050,4844],{"class":746},[736,7052,799],{"class":746},[736,7054,4849],{"class":802},[736,7056,974],{"class":746},[736,7058,4854],{"class":746},[736,7060,4600],{"class":841},[736,7062,844],{"class":853},[736,7064,4861],{"class":789},[736,7066,889],{"class":853},[736,7068,7069],{"class":738,"line":1855},[736,7070,3368],{"class":746},[736,7072,7073,7075],{"class":738,"line":1865},[736,7074,2334],{"class":782},[736,7076,3376],{"class":789},[736,7078,7079],{"class":738,"line":1882},[736,7080,771],{"class":746},[736,7082,7083,7085,7087,7089,7091,7093,7095,7097,7099,7101],{"class":738,"line":1907},[736,7084,835],{"class":782},[736,7086,927],{"class":926},[736,7088,1181],{"class":789},[736,7090,747],{"class":746},[736,7092,1186],{"class":742},[736,7094,1189],{"class":746},[736,7096,1192],{"class":742},[736,7098,1195],{"class":789},[736,7100,1198],{"class":746},[736,7102,1201],{"class":789},[736,7104,7105,7107,7109],{"class":738,"line":1913},[736,7106,1206],{"class":841},[736,7108,844],{"class":789},[736,7110,847],{"class":746},[736,7112,7113,7116,7118,7120,7122,7124,7126],{"class":738,"line":1919},[736,7114,7115],{"class":841},"      drain",[736,7117,747],{"class":746},[736,7119,1755],{"class":746},[736,7121,4934],{"class":1758},[736,7123,1221],{"class":746},[736,7125,1764],{"class":926},[736,7127,750],{"class":746},[736,7129,7130],{"class":738,"line":1927},[736,7131,7132],{"class":1819},"          \u002F\u002F Sanitize before sending to external service\n",[736,7134,7135,7138,7140,7142,7144,7146,7148,7150,7152,7154,7156,7158,7160,7162,7164],{"class":738,"line":2130},[736,7136,7137],{"class":789},"          ctx",[736,7139,1189],{"class":746},[736,7141,1759],{"class":789},[736,7143,953],{"class":746},[736,7145,4600],{"class":841},[736,7147,844],{"class":853},[736,7149,4934],{"class":789},[736,7151,1189],{"class":746},[736,7153,1759],{"class":789},[736,7155,2883],{"class":853},[736,7157,4971],{"class":782},[736,7159,4668],{"class":746},[736,7161,4976],{"class":789},[736,7163,1189],{"class":746},[736,7165,4981],{"class":789},[736,7167,7168],{"class":738,"line":2359},[736,7169,7170],{"class":746},"        },\n",[736,7172,7173,7176,7178],{"class":738,"line":3189},[736,7174,7175],{"class":746},"    }",[736,7177,1221],{"class":789},[736,7179,765],{"class":746},[736,7181,7182],{"class":738,"line":3202},[736,7183,1228],{"class":789},[726,7185,7187],{"className":728,"code":7186,"filename":280,"language":730,"meta":1232,"style":732},"import { evlog } from 'evlog\u002Fhono'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\napp.use(evlog({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n}))\n",[625,7188,7189,7207,7211,7269,7273,7293,7325,7355,7359,7383,7417,7453,7507,7511,7517,7521,7537,7553,7557,7589,7593],{"__ignoreMap":732},[736,7190,7191,7193,7195,7197,7199,7201,7203,7205],{"class":738,"line":739},[736,7192,783],{"class":782},[736,7194,786],{"class":746},[736,7196,1157],{"class":789},[736,7198,793],{"class":746},[736,7200,796],{"class":782},[736,7202,799],{"class":746},[736,7204,1251],{"class":802},[736,7206,806],{"class":746},[736,7208,7209],{"class":738,"line":753},[736,7210,829],{"emptyLinePlaceholder":828},[736,7212,7213,7215,7217,7219,7221,7223,7225,7227,7229,7231,7233,7235,7237,7239,7241,7243,7245,7247,7249,7251,7253,7255,7257,7259,7261,7263,7265,7267],{"class":738,"line":768},[736,7214,1540],{"class":926},[736,7216,4534],{"class":789},[736,7218,1198],{"class":746},[736,7220,859],{"class":789},[736,7222,974],{"class":746},[736,7224,3220],{"class":802},[736,7226,974],{"class":746},[736,7228,935],{"class":746},[736,7230,799],{"class":746},[736,7232,3229],{"class":802},[736,7234,974],{"class":746},[736,7236,935],{"class":746},[736,7238,799],{"class":746},[736,7240,3238],{"class":802},[736,7242,974],{"class":746},[736,7244,935],{"class":746},[736,7246,799],{"class":746},[736,7248,4567],{"class":802},[736,7250,974],{"class":746},[736,7252,935],{"class":746},[736,7254,799],{"class":746},[736,7256,3256],{"class":802},[736,7258,974],{"class":746},[736,7260,935],{"class":746},[736,7262,799],{"class":746},[736,7264,4584],{"class":802},[736,7266,974],{"class":746},[736,7268,1228],{"class":789},[736,7270,7271],{"class":738,"line":832},[736,7272,829],{"emptyLinePlaceholder":828},[736,7274,7275,7277,7279,7281,7283,7285,7287,7289,7291],{"class":738,"line":850},[736,7276,4597],{"class":926},[736,7278,4600],{"class":841},[736,7280,844],{"class":746},[736,7282,4605],{"class":1758},[736,7284,747],{"class":746},[736,7286,3183],{"class":742},[736,7288,2826],{"class":746},[736,7290,3183],{"class":742},[736,7292,750],{"class":746},[736,7294,7295,7297,7299,7301,7303,7305,7307,7309,7311,7313,7315,7317,7319,7321,7323],{"class":738,"line":883},[736,7296,2872],{"class":782},[736,7298,1755],{"class":853},[736,7300,4624],{"class":789},[736,7302,1189],{"class":746},[736,7304,4629],{"class":841},[736,7306,844],{"class":853},[736,7308,4605],{"class":789},[736,7310,4636],{"class":853},[736,7312,2886],{"class":782},[736,7314,4641],{"class":789},[736,7316,1189],{"class":746},[736,7318,104],{"class":841},[736,7320,844],{"class":853},[736,7322,4650],{"class":789},[736,7324,889],{"class":853},[736,7326,7327,7329,7331,7333,7335,7337,7339,7341,7343,7345,7347,7349,7351,7353],{"class":738,"line":1811},[736,7328,2872],{"class":782},[736,7330,1755],{"class":853},[736,7332,2877],{"class":746},[736,7334,4605],{"class":789},[736,7336,4665],{"class":746},[736,7338,4668],{"class":746},[736,7340,4641],{"class":789},[736,7342,4673],{"class":746},[736,7344,799],{"class":746},[736,7346,4678],{"class":802},[736,7348,974],{"class":746},[736,7350,2883],{"class":853},[736,7352,2886],{"class":782},[736,7354,4687],{"class":789},[736,7356,7357],{"class":738,"line":1816},[736,7358,829],{"emptyLinePlaceholder":828},[736,7360,7361,7363,7365,7367,7369,7371,7373,7375,7377,7379,7381],{"class":738,"line":1823},[736,7362,1771],{"class":926},[736,7364,3285],{"class":789},[736,7366,747],{"class":746},[736,7368,3173],{"class":742},[736,7370,3164],{"class":746},[736,7372,3178],{"class":742},[736,7374,935],{"class":746},[736,7376,3183],{"class":742},[736,7378,3275],{"class":746},[736,7380,953],{"class":746},[736,7382,4716],{"class":746},[736,7384,7385,7387,7389,7391,7393,7395,7397,7399,7401,7403,7405,7407,7409,7411,7413,7415],{"class":738,"line":1829},[736,7386,3304],{"class":782},[736,7388,1755],{"class":853},[736,7390,1540],{"class":926},[736,7392,859],{"class":746},[736,7394,3332],{"class":789},[736,7396,935],{"class":746},[736,7398,4733],{"class":789},[736,7400,2847],{"class":746},[736,7402,3314],{"class":746},[736,7404,4740],{"class":789},[736,7406,1189],{"class":746},[736,7408,4745],{"class":841},[736,7410,844],{"class":853},[736,7412,4605],{"class":789},[736,7414,4636],{"class":853},[736,7416,847],{"class":746},[736,7418,7419,7421,7423,7425,7427,7429,7431,7433,7435,7437,7439,7441,7443,7445,7447,7449,7451],{"class":738,"line":1834},[736,7420,4758],{"class":926},[736,7422,4761],{"class":789},[736,7424,953],{"class":746},[736,7426,3311],{"class":789},[736,7428,1189],{"class":746},[736,7430,4770],{"class":841},[736,7432,4773],{"class":853},[736,7434,1189],{"class":746},[736,7436,4778],{"class":841},[736,7438,844],{"class":853},[736,7440,4783],{"class":746},[736,7442,4786],{"class":802},[736,7444,4789],{"class":746},[736,7446,4792],{"class":2940},[736,7448,935],{"class":746},[736,7450,4797],{"class":746},[736,7452,889],{"class":853},[736,7454,7455,7457,7459,7461,7463,7465,7467,7469,7471,7473,7475,7477,7479,7481,7483,7485,7487,7489,7491,7493,7495,7497,7499,7501,7503,7505],{"class":738,"line":1840},[736,7456,4804],{"class":789},[736,7458,3352],{"class":853},[736,7460,3332],{"class":789},[736,7462,4811],{"class":853},[736,7464,1198],{"class":746},[736,7466,4816],{"class":789},[736,7468,1189],{"class":746},[736,7470,4821],{"class":841},[736,7472,844],{"class":853},[736,7474,4826],{"class":1758},[736,7476,1764],{"class":926},[736,7478,4761],{"class":789},[736,7480,1189],{"class":746},[736,7482,4835],{"class":841},[736,7484,844],{"class":853},[736,7486,4826],{"class":789},[736,7488,4636],{"class":853},[736,7490,4844],{"class":746},[736,7492,799],{"class":746},[736,7494,4849],{"class":802},[736,7496,974],{"class":746},[736,7498,4854],{"class":746},[736,7500,4600],{"class":841},[736,7502,844],{"class":853},[736,7504,4861],{"class":789},[736,7506,889],{"class":853},[736,7508,7509],{"class":738,"line":1855},[736,7510,3368],{"class":746},[736,7512,7513,7515],{"class":738,"line":1865},[736,7514,2334],{"class":782},[736,7516,3376],{"class":789},[736,7518,7519],{"class":738,"line":1882},[736,7520,771],{"class":746},[736,7522,7523,7525,7527,7529,7531,7533,7535],{"class":738,"line":1907},[736,7524,1262],{"class":789},[736,7526,1189],{"class":746},[736,7528,1267],{"class":841},[736,7530,844],{"class":789},[736,7532,743],{"class":841},[736,7534,844],{"class":789},[736,7536,847],{"class":746},[736,7538,7539,7541,7543,7545,7547,7549,7551],{"class":738,"line":1913},[736,7540,5819],{"class":841},[736,7542,747],{"class":746},[736,7544,1755],{"class":746},[736,7546,4934],{"class":1758},[736,7548,1221],{"class":746},[736,7550,1764],{"class":926},[736,7552,750],{"class":746},[736,7554,7555],{"class":738,"line":1919},[736,7556,5836],{"class":1819},[736,7558,7559,7561,7563,7565,7567,7569,7571,7573,7575,7577,7579,7581,7583,7585,7587],{"class":738,"line":1927},[736,7560,5841],{"class":789},[736,7562,1189],{"class":746},[736,7564,1759],{"class":789},[736,7566,953],{"class":746},[736,7568,4600],{"class":841},[736,7570,844],{"class":853},[736,7572,4934],{"class":789},[736,7574,1189],{"class":746},[736,7576,1759],{"class":789},[736,7578,2883],{"class":853},[736,7580,4971],{"class":782},[736,7582,4668],{"class":746},[736,7584,4976],{"class":789},[736,7586,1189],{"class":746},[736,7588,4981],{"class":789},[736,7590,7591],{"class":738,"line":2130},[736,7592,1916],{"class":746},[736,7594,7595,7597],{"class":738,"line":2359},[736,7596,886],{"class":746},[736,7598,1286],{"class":789},[726,7600,7602],{"className":728,"code":7601,"filename":275,"language":730,"meta":1232,"style":732},"import { evlog } from 'evlog\u002Fexpress'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\napp.use(evlog({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n}))\n",[625,7603,7604,7622,7626,7684,7688,7708,7740,7770,7774,7798,7832,7868,7922,7926,7932,7936,7952,7968,7972,8004,8008],{"__ignoreMap":732},[736,7605,7606,7608,7610,7612,7614,7616,7618,7620],{"class":738,"line":739},[736,7607,783],{"class":782},[736,7609,786],{"class":746},[736,7611,1157],{"class":789},[736,7613,793],{"class":746},[736,7615,796],{"class":782},[736,7617,799],{"class":746},[736,7619,1308],{"class":802},[736,7621,806],{"class":746},[736,7623,7624],{"class":738,"line":753},[736,7625,829],{"emptyLinePlaceholder":828},[736,7627,7628,7630,7632,7634,7636,7638,7640,7642,7644,7646,7648,7650,7652,7654,7656,7658,7660,7662,7664,7666,7668,7670,7672,7674,7676,7678,7680,7682],{"class":738,"line":768},[736,7629,1540],{"class":926},[736,7631,4534],{"class":789},[736,7633,1198],{"class":746},[736,7635,859],{"class":789},[736,7637,974],{"class":746},[736,7639,3220],{"class":802},[736,7641,974],{"class":746},[736,7643,935],{"class":746},[736,7645,799],{"class":746},[736,7647,3229],{"class":802},[736,7649,974],{"class":746},[736,7651,935],{"class":746},[736,7653,799],{"class":746},[736,7655,3238],{"class":802},[736,7657,974],{"class":746},[736,7659,935],{"class":746},[736,7661,799],{"class":746},[736,7663,4567],{"class":802},[736,7665,974],{"class":746},[736,7667,935],{"class":746},[736,7669,799],{"class":746},[736,7671,3256],{"class":802},[736,7673,974],{"class":746},[736,7675,935],{"class":746},[736,7677,799],{"class":746},[736,7679,4584],{"class":802},[736,7681,974],{"class":746},[736,7683,1228],{"class":789},[736,7685,7686],{"class":738,"line":832},[736,7687,829],{"emptyLinePlaceholder":828},[736,7689,7690,7692,7694,7696,7698,7700,7702,7704,7706],{"class":738,"line":850},[736,7691,4597],{"class":926},[736,7693,4600],{"class":841},[736,7695,844],{"class":746},[736,7697,4605],{"class":1758},[736,7699,747],{"class":746},[736,7701,3183],{"class":742},[736,7703,2826],{"class":746},[736,7705,3183],{"class":742},[736,7707,750],{"class":746},[736,7709,7710,7712,7714,7716,7718,7720,7722,7724,7726,7728,7730,7732,7734,7736,7738],{"class":738,"line":883},[736,7711,2872],{"class":782},[736,7713,1755],{"class":853},[736,7715,4624],{"class":789},[736,7717,1189],{"class":746},[736,7719,4629],{"class":841},[736,7721,844],{"class":853},[736,7723,4605],{"class":789},[736,7725,4636],{"class":853},[736,7727,2886],{"class":782},[736,7729,4641],{"class":789},[736,7731,1189],{"class":746},[736,7733,104],{"class":841},[736,7735,844],{"class":853},[736,7737,4650],{"class":789},[736,7739,889],{"class":853},[736,7741,7742,7744,7746,7748,7750,7752,7754,7756,7758,7760,7762,7764,7766,7768],{"class":738,"line":1811},[736,7743,2872],{"class":782},[736,7745,1755],{"class":853},[736,7747,2877],{"class":746},[736,7749,4605],{"class":789},[736,7751,4665],{"class":746},[736,7753,4668],{"class":746},[736,7755,4641],{"class":789},[736,7757,4673],{"class":746},[736,7759,799],{"class":746},[736,7761,4678],{"class":802},[736,7763,974],{"class":746},[736,7765,2883],{"class":853},[736,7767,2886],{"class":782},[736,7769,4687],{"class":789},[736,7771,7772],{"class":738,"line":1816},[736,7773,829],{"emptyLinePlaceholder":828},[736,7775,7776,7778,7780,7782,7784,7786,7788,7790,7792,7794,7796],{"class":738,"line":1823},[736,7777,1771],{"class":926},[736,7779,3285],{"class":789},[736,7781,747],{"class":746},[736,7783,3173],{"class":742},[736,7785,3164],{"class":746},[736,7787,3178],{"class":742},[736,7789,935],{"class":746},[736,7791,3183],{"class":742},[736,7793,3275],{"class":746},[736,7795,953],{"class":746},[736,7797,4716],{"class":746},[736,7799,7800,7802,7804,7806,7808,7810,7812,7814,7816,7818,7820,7822,7824,7826,7828,7830],{"class":738,"line":1829},[736,7801,3304],{"class":782},[736,7803,1755],{"class":853},[736,7805,1540],{"class":926},[736,7807,859],{"class":746},[736,7809,3332],{"class":789},[736,7811,935],{"class":746},[736,7813,4733],{"class":789},[736,7815,2847],{"class":746},[736,7817,3314],{"class":746},[736,7819,4740],{"class":789},[736,7821,1189],{"class":746},[736,7823,4745],{"class":841},[736,7825,844],{"class":853},[736,7827,4605],{"class":789},[736,7829,4636],{"class":853},[736,7831,847],{"class":746},[736,7833,7834,7836,7838,7840,7842,7844,7846,7848,7850,7852,7854,7856,7858,7860,7862,7864,7866],{"class":738,"line":1834},[736,7835,4758],{"class":926},[736,7837,4761],{"class":789},[736,7839,953],{"class":746},[736,7841,3311],{"class":789},[736,7843,1189],{"class":746},[736,7845,4770],{"class":841},[736,7847,4773],{"class":853},[736,7849,1189],{"class":746},[736,7851,4778],{"class":841},[736,7853,844],{"class":853},[736,7855,4783],{"class":746},[736,7857,4786],{"class":802},[736,7859,4789],{"class":746},[736,7861,4792],{"class":2940},[736,7863,935],{"class":746},[736,7865,4797],{"class":746},[736,7867,889],{"class":853},[736,7869,7870,7872,7874,7876,7878,7880,7882,7884,7886,7888,7890,7892,7894,7896,7898,7900,7902,7904,7906,7908,7910,7912,7914,7916,7918,7920],{"class":738,"line":1840},[736,7871,4804],{"class":789},[736,7873,3352],{"class":853},[736,7875,3332],{"class":789},[736,7877,4811],{"class":853},[736,7879,1198],{"class":746},[736,7881,4816],{"class":789},[736,7883,1189],{"class":746},[736,7885,4821],{"class":841},[736,7887,844],{"class":853},[736,7889,4826],{"class":1758},[736,7891,1764],{"class":926},[736,7893,4761],{"class":789},[736,7895,1189],{"class":746},[736,7897,4835],{"class":841},[736,7899,844],{"class":853},[736,7901,4826],{"class":789},[736,7903,4636],{"class":853},[736,7905,4844],{"class":746},[736,7907,799],{"class":746},[736,7909,4849],{"class":802},[736,7911,974],{"class":746},[736,7913,4854],{"class":746},[736,7915,4600],{"class":841},[736,7917,844],{"class":853},[736,7919,4861],{"class":789},[736,7921,889],{"class":853},[736,7923,7924],{"class":738,"line":1855},[736,7925,3368],{"class":746},[736,7927,7928,7930],{"class":738,"line":1865},[736,7929,2334],{"class":782},[736,7931,3376],{"class":789},[736,7933,7934],{"class":738,"line":1882},[736,7935,771],{"class":746},[736,7937,7938,7940,7942,7944,7946,7948,7950],{"class":738,"line":1907},[736,7939,1262],{"class":789},[736,7941,1189],{"class":746},[736,7943,1267],{"class":841},[736,7945,844],{"class":789},[736,7947,743],{"class":841},[736,7949,844],{"class":789},[736,7951,847],{"class":746},[736,7953,7954,7956,7958,7960,7962,7964,7966],{"class":738,"line":1913},[736,7955,5819],{"class":841},[736,7957,747],{"class":746},[736,7959,1755],{"class":746},[736,7961,4934],{"class":1758},[736,7963,1221],{"class":746},[736,7965,1764],{"class":926},[736,7967,750],{"class":746},[736,7969,7970],{"class":738,"line":1919},[736,7971,5836],{"class":1819},[736,7973,7974,7976,7978,7980,7982,7984,7986,7988,7990,7992,7994,7996,7998,8000,8002],{"class":738,"line":1927},[736,7975,5841],{"class":789},[736,7977,1189],{"class":746},[736,7979,1759],{"class":789},[736,7981,953],{"class":746},[736,7983,4600],{"class":841},[736,7985,844],{"class":853},[736,7987,4934],{"class":789},[736,7989,1189],{"class":746},[736,7991,1759],{"class":789},[736,7993,2883],{"class":853},[736,7995,4971],{"class":782},[736,7997,4668],{"class":746},[736,7999,4976],{"class":789},[736,8001,1189],{"class":746},[736,8003,4981],{"class":789},[736,8005,8006],{"class":738,"line":2130},[736,8007,1916],{"class":746},[736,8009,8010,8012],{"class":738,"line":2359},[736,8011,886],{"class":746},[736,8013,1286],{"class":789},[726,8015,8017],{"className":728,"code":8016,"filename":285,"language":730,"meta":1232,"style":732},"import { evlog } from 'evlog\u002Ffastify'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nawait app.register(evlog, {\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[625,8018,8019,8037,8041,8099,8103,8123,8155,8185,8189,8213,8247,8283,8337,8341,8347,8351,8367,8383,8387,8419,8423],{"__ignoreMap":732},[736,8020,8021,8023,8025,8027,8029,8031,8033,8035],{"class":738,"line":739},[736,8022,783],{"class":782},[736,8024,786],{"class":746},[736,8026,1157],{"class":789},[736,8028,793],{"class":746},[736,8030,796],{"class":782},[736,8032,799],{"class":746},[736,8034,1362],{"class":802},[736,8036,806],{"class":746},[736,8038,8039],{"class":738,"line":753},[736,8040,829],{"emptyLinePlaceholder":828},[736,8042,8043,8045,8047,8049,8051,8053,8055,8057,8059,8061,8063,8065,8067,8069,8071,8073,8075,8077,8079,8081,8083,8085,8087,8089,8091,8093,8095,8097],{"class":738,"line":768},[736,8044,1540],{"class":926},[736,8046,4534],{"class":789},[736,8048,1198],{"class":746},[736,8050,859],{"class":789},[736,8052,974],{"class":746},[736,8054,3220],{"class":802},[736,8056,974],{"class":746},[736,8058,935],{"class":746},[736,8060,799],{"class":746},[736,8062,3229],{"class":802},[736,8064,974],{"class":746},[736,8066,935],{"class":746},[736,8068,799],{"class":746},[736,8070,3238],{"class":802},[736,8072,974],{"class":746},[736,8074,935],{"class":746},[736,8076,799],{"class":746},[736,8078,4567],{"class":802},[736,8080,974],{"class":746},[736,8082,935],{"class":746},[736,8084,799],{"class":746},[736,8086,3256],{"class":802},[736,8088,974],{"class":746},[736,8090,935],{"class":746},[736,8092,799],{"class":746},[736,8094,4584],{"class":802},[736,8096,974],{"class":746},[736,8098,1228],{"class":789},[736,8100,8101],{"class":738,"line":832},[736,8102,829],{"emptyLinePlaceholder":828},[736,8104,8105,8107,8109,8111,8113,8115,8117,8119,8121],{"class":738,"line":850},[736,8106,4597],{"class":926},[736,8108,4600],{"class":841},[736,8110,844],{"class":746},[736,8112,4605],{"class":1758},[736,8114,747],{"class":746},[736,8116,3183],{"class":742},[736,8118,2826],{"class":746},[736,8120,3183],{"class":742},[736,8122,750],{"class":746},[736,8124,8125,8127,8129,8131,8133,8135,8137,8139,8141,8143,8145,8147,8149,8151,8153],{"class":738,"line":883},[736,8126,2872],{"class":782},[736,8128,1755],{"class":853},[736,8130,4624],{"class":789},[736,8132,1189],{"class":746},[736,8134,4629],{"class":841},[736,8136,844],{"class":853},[736,8138,4605],{"class":789},[736,8140,4636],{"class":853},[736,8142,2886],{"class":782},[736,8144,4641],{"class":789},[736,8146,1189],{"class":746},[736,8148,104],{"class":841},[736,8150,844],{"class":853},[736,8152,4650],{"class":789},[736,8154,889],{"class":853},[736,8156,8157,8159,8161,8163,8165,8167,8169,8171,8173,8175,8177,8179,8181,8183],{"class":738,"line":1811},[736,8158,2872],{"class":782},[736,8160,1755],{"class":853},[736,8162,2877],{"class":746},[736,8164,4605],{"class":789},[736,8166,4665],{"class":746},[736,8168,4668],{"class":746},[736,8170,4641],{"class":789},[736,8172,4673],{"class":746},[736,8174,799],{"class":746},[736,8176,4678],{"class":802},[736,8178,974],{"class":746},[736,8180,2883],{"class":853},[736,8182,2886],{"class":782},[736,8184,4687],{"class":789},[736,8186,8187],{"class":738,"line":1816},[736,8188,829],{"emptyLinePlaceholder":828},[736,8190,8191,8193,8195,8197,8199,8201,8203,8205,8207,8209,8211],{"class":738,"line":1823},[736,8192,1771],{"class":926},[736,8194,3285],{"class":789},[736,8196,747],{"class":746},[736,8198,3173],{"class":742},[736,8200,3164],{"class":746},[736,8202,3178],{"class":742},[736,8204,935],{"class":746},[736,8206,3183],{"class":742},[736,8208,3275],{"class":746},[736,8210,953],{"class":746},[736,8212,4716],{"class":746},[736,8214,8215,8217,8219,8221,8223,8225,8227,8229,8231,8233,8235,8237,8239,8241,8243,8245],{"class":738,"line":1829},[736,8216,3304],{"class":782},[736,8218,1755],{"class":853},[736,8220,1540],{"class":926},[736,8222,859],{"class":746},[736,8224,3332],{"class":789},[736,8226,935],{"class":746},[736,8228,4733],{"class":789},[736,8230,2847],{"class":746},[736,8232,3314],{"class":746},[736,8234,4740],{"class":789},[736,8236,1189],{"class":746},[736,8238,4745],{"class":841},[736,8240,844],{"class":853},[736,8242,4605],{"class":789},[736,8244,4636],{"class":853},[736,8246,847],{"class":746},[736,8248,8249,8251,8253,8255,8257,8259,8261,8263,8265,8267,8269,8271,8273,8275,8277,8279,8281],{"class":738,"line":1834},[736,8250,4758],{"class":926},[736,8252,4761],{"class":789},[736,8254,953],{"class":746},[736,8256,3311],{"class":789},[736,8258,1189],{"class":746},[736,8260,4770],{"class":841},[736,8262,4773],{"class":853},[736,8264,1189],{"class":746},[736,8266,4778],{"class":841},[736,8268,844],{"class":853},[736,8270,4783],{"class":746},[736,8272,4786],{"class":802},[736,8274,4789],{"class":746},[736,8276,4792],{"class":2940},[736,8278,935],{"class":746},[736,8280,4797],{"class":746},[736,8282,889],{"class":853},[736,8284,8285,8287,8289,8291,8293,8295,8297,8299,8301,8303,8305,8307,8309,8311,8313,8315,8317,8319,8321,8323,8325,8327,8329,8331,8333,8335],{"class":738,"line":1840},[736,8286,4804],{"class":789},[736,8288,3352],{"class":853},[736,8290,3332],{"class":789},[736,8292,4811],{"class":853},[736,8294,1198],{"class":746},[736,8296,4816],{"class":789},[736,8298,1189],{"class":746},[736,8300,4821],{"class":841},[736,8302,844],{"class":853},[736,8304,4826],{"class":1758},[736,8306,1764],{"class":926},[736,8308,4761],{"class":789},[736,8310,1189],{"class":746},[736,8312,4835],{"class":841},[736,8314,844],{"class":853},[736,8316,4826],{"class":789},[736,8318,4636],{"class":853},[736,8320,4844],{"class":746},[736,8322,799],{"class":746},[736,8324,4849],{"class":802},[736,8326,974],{"class":746},[736,8328,4854],{"class":746},[736,8330,4600],{"class":841},[736,8332,844],{"class":853},[736,8334,4861],{"class":789},[736,8336,889],{"class":853},[736,8338,8339],{"class":738,"line":1855},[736,8340,3368],{"class":746},[736,8342,8343,8345],{"class":738,"line":1865},[736,8344,2334],{"class":782},[736,8346,3376],{"class":789},[736,8348,8349],{"class":738,"line":1882},[736,8350,771],{"class":746},[736,8352,8353,8355,8357,8359,8361,8363,8365],{"class":738,"line":1907},[736,8354,1373],{"class":782},[736,8356,1376],{"class":789},[736,8358,1189],{"class":746},[736,8360,1381],{"class":841},[736,8362,1384],{"class":789},[736,8364,935],{"class":746},[736,8366,750],{"class":746},[736,8368,8369,8371,8373,8375,8377,8379,8381],{"class":738,"line":1913},[736,8370,5819],{"class":841},[736,8372,747],{"class":746},[736,8374,1755],{"class":746},[736,8376,4934],{"class":1758},[736,8378,1221],{"class":746},[736,8380,1764],{"class":926},[736,8382,750],{"class":746},[736,8384,8385],{"class":738,"line":1919},[736,8386,5836],{"class":1819},[736,8388,8389,8391,8393,8395,8397,8399,8401,8403,8405,8407,8409,8411,8413,8415,8417],{"class":738,"line":1927},[736,8390,5841],{"class":789},[736,8392,1189],{"class":746},[736,8394,1759],{"class":789},[736,8396,953],{"class":746},[736,8398,4600],{"class":841},[736,8400,844],{"class":853},[736,8402,4934],{"class":789},[736,8404,1189],{"class":746},[736,8406,1759],{"class":789},[736,8408,2883],{"class":853},[736,8410,4971],{"class":782},[736,8412,4668],{"class":746},[736,8414,4976],{"class":789},[736,8416,1189],{"class":746},[736,8418,4981],{"class":789},[736,8420,8421],{"class":738,"line":2130},[736,8422,1916],{"class":746},[736,8424,8425,8427],{"class":738,"line":2359},[736,8426,886],{"class":746},[736,8428,889],{"class":789},[726,8430,8432],{"className":728,"code":8431,"filename":290,"language":730,"meta":1232,"style":732},"import { evlog } from 'evlog\u002Felysia'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\napp.use(evlog({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n}))\n",[625,8433,8434,8452,8456,8514,8518,8538,8570,8600,8604,8628,8662,8698,8752,8756,8762,8766,8782,8798,8802,8834,8838],{"__ignoreMap":732},[736,8435,8436,8438,8440,8442,8444,8446,8448,8450],{"class":738,"line":739},[736,8437,783],{"class":782},[736,8439,786],{"class":746},[736,8441,1157],{"class":789},[736,8443,793],{"class":746},[736,8445,796],{"class":782},[736,8447,799],{"class":746},[736,8449,1420],{"class":802},[736,8451,806],{"class":746},[736,8453,8454],{"class":738,"line":753},[736,8455,829],{"emptyLinePlaceholder":828},[736,8457,8458,8460,8462,8464,8466,8468,8470,8472,8474,8476,8478,8480,8482,8484,8486,8488,8490,8492,8494,8496,8498,8500,8502,8504,8506,8508,8510,8512],{"class":738,"line":768},[736,8459,1540],{"class":926},[736,8461,4534],{"class":789},[736,8463,1198],{"class":746},[736,8465,859],{"class":789},[736,8467,974],{"class":746},[736,8469,3220],{"class":802},[736,8471,974],{"class":746},[736,8473,935],{"class":746},[736,8475,799],{"class":746},[736,8477,3229],{"class":802},[736,8479,974],{"class":746},[736,8481,935],{"class":746},[736,8483,799],{"class":746},[736,8485,3238],{"class":802},[736,8487,974],{"class":746},[736,8489,935],{"class":746},[736,8491,799],{"class":746},[736,8493,4567],{"class":802},[736,8495,974],{"class":746},[736,8497,935],{"class":746},[736,8499,799],{"class":746},[736,8501,3256],{"class":802},[736,8503,974],{"class":746},[736,8505,935],{"class":746},[736,8507,799],{"class":746},[736,8509,4584],{"class":802},[736,8511,974],{"class":746},[736,8513,1228],{"class":789},[736,8515,8516],{"class":738,"line":832},[736,8517,829],{"emptyLinePlaceholder":828},[736,8519,8520,8522,8524,8526,8528,8530,8532,8534,8536],{"class":738,"line":850},[736,8521,4597],{"class":926},[736,8523,4600],{"class":841},[736,8525,844],{"class":746},[736,8527,4605],{"class":1758},[736,8529,747],{"class":746},[736,8531,3183],{"class":742},[736,8533,2826],{"class":746},[736,8535,3183],{"class":742},[736,8537,750],{"class":746},[736,8539,8540,8542,8544,8546,8548,8550,8552,8554,8556,8558,8560,8562,8564,8566,8568],{"class":738,"line":883},[736,8541,2872],{"class":782},[736,8543,1755],{"class":853},[736,8545,4624],{"class":789},[736,8547,1189],{"class":746},[736,8549,4629],{"class":841},[736,8551,844],{"class":853},[736,8553,4605],{"class":789},[736,8555,4636],{"class":853},[736,8557,2886],{"class":782},[736,8559,4641],{"class":789},[736,8561,1189],{"class":746},[736,8563,104],{"class":841},[736,8565,844],{"class":853},[736,8567,4650],{"class":789},[736,8569,889],{"class":853},[736,8571,8572,8574,8576,8578,8580,8582,8584,8586,8588,8590,8592,8594,8596,8598],{"class":738,"line":1811},[736,8573,2872],{"class":782},[736,8575,1755],{"class":853},[736,8577,2877],{"class":746},[736,8579,4605],{"class":789},[736,8581,4665],{"class":746},[736,8583,4668],{"class":746},[736,8585,4641],{"class":789},[736,8587,4673],{"class":746},[736,8589,799],{"class":746},[736,8591,4678],{"class":802},[736,8593,974],{"class":746},[736,8595,2883],{"class":853},[736,8597,2886],{"class":782},[736,8599,4687],{"class":789},[736,8601,8602],{"class":738,"line":1816},[736,8603,829],{"emptyLinePlaceholder":828},[736,8605,8606,8608,8610,8612,8614,8616,8618,8620,8622,8624,8626],{"class":738,"line":1823},[736,8607,1771],{"class":926},[736,8609,3285],{"class":789},[736,8611,747],{"class":746},[736,8613,3173],{"class":742},[736,8615,3164],{"class":746},[736,8617,3178],{"class":742},[736,8619,935],{"class":746},[736,8621,3183],{"class":742},[736,8623,3275],{"class":746},[736,8625,953],{"class":746},[736,8627,4716],{"class":746},[736,8629,8630,8632,8634,8636,8638,8640,8642,8644,8646,8648,8650,8652,8654,8656,8658,8660],{"class":738,"line":1829},[736,8631,3304],{"class":782},[736,8633,1755],{"class":853},[736,8635,1540],{"class":926},[736,8637,859],{"class":746},[736,8639,3332],{"class":789},[736,8641,935],{"class":746},[736,8643,4733],{"class":789},[736,8645,2847],{"class":746},[736,8647,3314],{"class":746},[736,8649,4740],{"class":789},[736,8651,1189],{"class":746},[736,8653,4745],{"class":841},[736,8655,844],{"class":853},[736,8657,4605],{"class":789},[736,8659,4636],{"class":853},[736,8661,847],{"class":746},[736,8663,8664,8666,8668,8670,8672,8674,8676,8678,8680,8682,8684,8686,8688,8690,8692,8694,8696],{"class":738,"line":1834},[736,8665,4758],{"class":926},[736,8667,4761],{"class":789},[736,8669,953],{"class":746},[736,8671,3311],{"class":789},[736,8673,1189],{"class":746},[736,8675,4770],{"class":841},[736,8677,4773],{"class":853},[736,8679,1189],{"class":746},[736,8681,4778],{"class":841},[736,8683,844],{"class":853},[736,8685,4783],{"class":746},[736,8687,4786],{"class":802},[736,8689,4789],{"class":746},[736,8691,4792],{"class":2940},[736,8693,935],{"class":746},[736,8695,4797],{"class":746},[736,8697,889],{"class":853},[736,8699,8700,8702,8704,8706,8708,8710,8712,8714,8716,8718,8720,8722,8724,8726,8728,8730,8732,8734,8736,8738,8740,8742,8744,8746,8748,8750],{"class":738,"line":1840},[736,8701,4804],{"class":789},[736,8703,3352],{"class":853},[736,8705,3332],{"class":789},[736,8707,4811],{"class":853},[736,8709,1198],{"class":746},[736,8711,4816],{"class":789},[736,8713,1189],{"class":746},[736,8715,4821],{"class":841},[736,8717,844],{"class":853},[736,8719,4826],{"class":1758},[736,8721,1764],{"class":926},[736,8723,4761],{"class":789},[736,8725,1189],{"class":746},[736,8727,4835],{"class":841},[736,8729,844],{"class":853},[736,8731,4826],{"class":789},[736,8733,4636],{"class":853},[736,8735,4844],{"class":746},[736,8737,799],{"class":746},[736,8739,4849],{"class":802},[736,8741,974],{"class":746},[736,8743,4854],{"class":746},[736,8745,4600],{"class":841},[736,8747,844],{"class":853},[736,8749,4861],{"class":789},[736,8751,889],{"class":853},[736,8753,8754],{"class":738,"line":1855},[736,8755,3368],{"class":746},[736,8757,8758,8760],{"class":738,"line":1865},[736,8759,2334],{"class":782},[736,8761,3376],{"class":789},[736,8763,8764],{"class":738,"line":1882},[736,8765,771],{"class":746},[736,8767,8768,8770,8772,8774,8776,8778,8780],{"class":738,"line":1907},[736,8769,1262],{"class":789},[736,8771,1189],{"class":746},[736,8773,1267],{"class":841},[736,8775,844],{"class":789},[736,8777,743],{"class":841},[736,8779,844],{"class":789},[736,8781,847],{"class":746},[736,8783,8784,8786,8788,8790,8792,8794,8796],{"class":738,"line":1913},[736,8785,5819],{"class":841},[736,8787,747],{"class":746},[736,8789,1755],{"class":746},[736,8791,4934],{"class":1758},[736,8793,1221],{"class":746},[736,8795,1764],{"class":926},[736,8797,750],{"class":746},[736,8799,8800],{"class":738,"line":1919},[736,8801,5836],{"class":1819},[736,8803,8804,8806,8808,8810,8812,8814,8816,8818,8820,8822,8824,8826,8828,8830,8832],{"class":738,"line":1927},[736,8805,5841],{"class":789},[736,8807,1189],{"class":746},[736,8809,1759],{"class":789},[736,8811,953],{"class":746},[736,8813,4600],{"class":841},[736,8815,844],{"class":853},[736,8817,4934],{"class":789},[736,8819,1189],{"class":746},[736,8821,1759],{"class":789},[736,8823,2883],{"class":853},[736,8825,4971],{"class":782},[736,8827,4668],{"class":746},[736,8829,4976],{"class":789},[736,8831,1189],{"class":746},[736,8833,4981],{"class":789},[736,8835,8836],{"class":738,"line":2130},[736,8837,1916],{"class":746},[736,8839,8840,8842],{"class":738,"line":2359},[736,8841,886],{"class":746},[736,8843,1286],{"class":789},[726,8845,8847],{"className":728,"code":8846,"filename":270,"language":730,"meta":1456,"style":732},"import { EvlogModule } from 'evlog\u002Fnestjs'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nEvlogModule.forRoot({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[625,8848,8849,8867,8871,8929,8933,8953,8985,9015,9019,9043,9077,9113,9167,9171,9177,9181,9193,9209,9213,9245,9249],{"__ignoreMap":732},[736,8850,8851,8853,8855,8857,8859,8861,8863,8865],{"class":738,"line":739},[736,8852,783],{"class":782},[736,8854,786],{"class":746},[736,8856,1467],{"class":789},[736,8858,793],{"class":746},[736,8860,796],{"class":782},[736,8862,799],{"class":746},[736,8864,1476],{"class":802},[736,8866,806],{"class":746},[736,8868,8869],{"class":738,"line":753},[736,8870,829],{"emptyLinePlaceholder":828},[736,8872,8873,8875,8877,8879,8881,8883,8885,8887,8889,8891,8893,8895,8897,8899,8901,8903,8905,8907,8909,8911,8913,8915,8917,8919,8921,8923,8925,8927],{"class":738,"line":768},[736,8874,1540],{"class":926},[736,8876,4534],{"class":789},[736,8878,1198],{"class":746},[736,8880,859],{"class":789},[736,8882,974],{"class":746},[736,8884,3220],{"class":802},[736,8886,974],{"class":746},[736,8888,935],{"class":746},[736,8890,799],{"class":746},[736,8892,3229],{"class":802},[736,8894,974],{"class":746},[736,8896,935],{"class":746},[736,8898,799],{"class":746},[736,8900,3238],{"class":802},[736,8902,974],{"class":746},[736,8904,935],{"class":746},[736,8906,799],{"class":746},[736,8908,4567],{"class":802},[736,8910,974],{"class":746},[736,8912,935],{"class":746},[736,8914,799],{"class":746},[736,8916,3256],{"class":802},[736,8918,974],{"class":746},[736,8920,935],{"class":746},[736,8922,799],{"class":746},[736,8924,4584],{"class":802},[736,8926,974],{"class":746},[736,8928,1228],{"class":789},[736,8930,8931],{"class":738,"line":832},[736,8932,829],{"emptyLinePlaceholder":828},[736,8934,8935,8937,8939,8941,8943,8945,8947,8949,8951],{"class":738,"line":850},[736,8936,4597],{"class":926},[736,8938,4600],{"class":841},[736,8940,844],{"class":746},[736,8942,4605],{"class":1758},[736,8944,747],{"class":746},[736,8946,3183],{"class":742},[736,8948,2826],{"class":746},[736,8950,3183],{"class":742},[736,8952,750],{"class":746},[736,8954,8955,8957,8959,8961,8963,8965,8967,8969,8971,8973,8975,8977,8979,8981,8983],{"class":738,"line":883},[736,8956,2872],{"class":782},[736,8958,1755],{"class":853},[736,8960,4624],{"class":789},[736,8962,1189],{"class":746},[736,8964,4629],{"class":841},[736,8966,844],{"class":853},[736,8968,4605],{"class":789},[736,8970,4636],{"class":853},[736,8972,2886],{"class":782},[736,8974,4641],{"class":789},[736,8976,1189],{"class":746},[736,8978,104],{"class":841},[736,8980,844],{"class":853},[736,8982,4650],{"class":789},[736,8984,889],{"class":853},[736,8986,8987,8989,8991,8993,8995,8997,8999,9001,9003,9005,9007,9009,9011,9013],{"class":738,"line":1811},[736,8988,2872],{"class":782},[736,8990,1755],{"class":853},[736,8992,2877],{"class":746},[736,8994,4605],{"class":789},[736,8996,4665],{"class":746},[736,8998,4668],{"class":746},[736,9000,4641],{"class":789},[736,9002,4673],{"class":746},[736,9004,799],{"class":746},[736,9006,4678],{"class":802},[736,9008,974],{"class":746},[736,9010,2883],{"class":853},[736,9012,2886],{"class":782},[736,9014,4687],{"class":789},[736,9016,9017],{"class":738,"line":1816},[736,9018,829],{"emptyLinePlaceholder":828},[736,9020,9021,9023,9025,9027,9029,9031,9033,9035,9037,9039,9041],{"class":738,"line":1823},[736,9022,1771],{"class":926},[736,9024,3285],{"class":789},[736,9026,747],{"class":746},[736,9028,3173],{"class":742},[736,9030,3164],{"class":746},[736,9032,3178],{"class":742},[736,9034,935],{"class":746},[736,9036,3183],{"class":742},[736,9038,3275],{"class":746},[736,9040,953],{"class":746},[736,9042,4716],{"class":746},[736,9044,9045,9047,9049,9051,9053,9055,9057,9059,9061,9063,9065,9067,9069,9071,9073,9075],{"class":738,"line":1829},[736,9046,3304],{"class":782},[736,9048,1755],{"class":853},[736,9050,1540],{"class":926},[736,9052,859],{"class":746},[736,9054,3332],{"class":789},[736,9056,935],{"class":746},[736,9058,4733],{"class":789},[736,9060,2847],{"class":746},[736,9062,3314],{"class":746},[736,9064,4740],{"class":789},[736,9066,1189],{"class":746},[736,9068,4745],{"class":841},[736,9070,844],{"class":853},[736,9072,4605],{"class":789},[736,9074,4636],{"class":853},[736,9076,847],{"class":746},[736,9078,9079,9081,9083,9085,9087,9089,9091,9093,9095,9097,9099,9101,9103,9105,9107,9109,9111],{"class":738,"line":1834},[736,9080,4758],{"class":926},[736,9082,4761],{"class":789},[736,9084,953],{"class":746},[736,9086,3311],{"class":789},[736,9088,1189],{"class":746},[736,9090,4770],{"class":841},[736,9092,4773],{"class":853},[736,9094,1189],{"class":746},[736,9096,4778],{"class":841},[736,9098,844],{"class":853},[736,9100,4783],{"class":746},[736,9102,4786],{"class":802},[736,9104,4789],{"class":746},[736,9106,4792],{"class":2940},[736,9108,935],{"class":746},[736,9110,4797],{"class":746},[736,9112,889],{"class":853},[736,9114,9115,9117,9119,9121,9123,9125,9127,9129,9131,9133,9135,9137,9139,9141,9143,9145,9147,9149,9151,9153,9155,9157,9159,9161,9163,9165],{"class":738,"line":1840},[736,9116,4804],{"class":789},[736,9118,3352],{"class":853},[736,9120,3332],{"class":789},[736,9122,4811],{"class":853},[736,9124,1198],{"class":746},[736,9126,4816],{"class":789},[736,9128,1189],{"class":746},[736,9130,4821],{"class":841},[736,9132,844],{"class":853},[736,9134,4826],{"class":1758},[736,9136,1764],{"class":926},[736,9138,4761],{"class":789},[736,9140,1189],{"class":746},[736,9142,4835],{"class":841},[736,9144,844],{"class":853},[736,9146,4826],{"class":789},[736,9148,4636],{"class":853},[736,9150,4844],{"class":746},[736,9152,799],{"class":746},[736,9154,4849],{"class":802},[736,9156,974],{"class":746},[736,9158,4854],{"class":746},[736,9160,4600],{"class":841},[736,9162,844],{"class":853},[736,9164,4861],{"class":789},[736,9166,889],{"class":853},[736,9168,9169],{"class":738,"line":1855},[736,9170,3368],{"class":746},[736,9172,9173,9175],{"class":738,"line":1865},[736,9174,2334],{"class":782},[736,9176,3376],{"class":789},[736,9178,9179],{"class":738,"line":1882},[736,9180,771],{"class":746},[736,9182,9183,9185,9187,9189,9191],{"class":738,"line":1907},[736,9184,1487],{"class":789},[736,9186,1189],{"class":746},[736,9188,1492],{"class":841},[736,9190,844],{"class":789},[736,9192,847],{"class":746},[736,9194,9195,9197,9199,9201,9203,9205,9207],{"class":738,"line":1913},[736,9196,5819],{"class":841},[736,9198,747],{"class":746},[736,9200,1755],{"class":746},[736,9202,4934],{"class":1758},[736,9204,1221],{"class":746},[736,9206,1764],{"class":926},[736,9208,750],{"class":746},[736,9210,9211],{"class":738,"line":1919},[736,9212,5836],{"class":1819},[736,9214,9215,9217,9219,9221,9223,9225,9227,9229,9231,9233,9235,9237,9239,9241,9243],{"class":738,"line":1927},[736,9216,5841],{"class":789},[736,9218,1189],{"class":746},[736,9220,1759],{"class":789},[736,9222,953],{"class":746},[736,9224,4600],{"class":841},[736,9226,844],{"class":853},[736,9228,4934],{"class":789},[736,9230,1189],{"class":746},[736,9232,1759],{"class":789},[736,9234,2883],{"class":853},[736,9236,4971],{"class":782},[736,9238,4668],{"class":746},[736,9240,4976],{"class":789},[736,9242,1189],{"class":746},[736,9244,4981],{"class":789},[736,9246,9247],{"class":738,"line":2130},[736,9248,1916],{"class":746},[736,9250,9251,9253],{"class":738,"line":2359},[736,9252,886],{"class":746},[736,9254,889],{"class":789},[726,9256,9258],{"className":728,"code":9257,"filename":314,"language":730,"meta":1510,"style":732},"import { withEvlog } from 'evlog\u002Forpc'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nconst handler = withEvlog(new RPCHandler(router), {\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[625,9259,9260,9278,9282,9340,9344,9364,9396,9426,9430,9454,9488,9524,9578,9582,9588,9592,9614,9630,9634,9666,9670],{"__ignoreMap":732},[736,9261,9262,9264,9266,9268,9270,9272,9274,9276],{"class":738,"line":739},[736,9263,783],{"class":782},[736,9265,786],{"class":746},[736,9267,932],{"class":789},[736,9269,793],{"class":746},[736,9271,796],{"class":782},[736,9273,799],{"class":746},[736,9275,1529],{"class":802},[736,9277,806],{"class":746},[736,9279,9280],{"class":738,"line":753},[736,9281,829],{"emptyLinePlaceholder":828},[736,9283,9284,9286,9288,9290,9292,9294,9296,9298,9300,9302,9304,9306,9308,9310,9312,9314,9316,9318,9320,9322,9324,9326,9328,9330,9332,9334,9336,9338],{"class":738,"line":768},[736,9285,1540],{"class":926},[736,9287,4534],{"class":789},[736,9289,1198],{"class":746},[736,9291,859],{"class":789},[736,9293,974],{"class":746},[736,9295,3220],{"class":802},[736,9297,974],{"class":746},[736,9299,935],{"class":746},[736,9301,799],{"class":746},[736,9303,3229],{"class":802},[736,9305,974],{"class":746},[736,9307,935],{"class":746},[736,9309,799],{"class":746},[736,9311,3238],{"class":802},[736,9313,974],{"class":746},[736,9315,935],{"class":746},[736,9317,799],{"class":746},[736,9319,4567],{"class":802},[736,9321,974],{"class":746},[736,9323,935],{"class":746},[736,9325,799],{"class":746},[736,9327,3256],{"class":802},[736,9329,974],{"class":746},[736,9331,935],{"class":746},[736,9333,799],{"class":746},[736,9335,4584],{"class":802},[736,9337,974],{"class":746},[736,9339,1228],{"class":789},[736,9341,9342],{"class":738,"line":832},[736,9343,829],{"emptyLinePlaceholder":828},[736,9345,9346,9348,9350,9352,9354,9356,9358,9360,9362],{"class":738,"line":850},[736,9347,4597],{"class":926},[736,9349,4600],{"class":841},[736,9351,844],{"class":746},[736,9353,4605],{"class":1758},[736,9355,747],{"class":746},[736,9357,3183],{"class":742},[736,9359,2826],{"class":746},[736,9361,3183],{"class":742},[736,9363,750],{"class":746},[736,9365,9366,9368,9370,9372,9374,9376,9378,9380,9382,9384,9386,9388,9390,9392,9394],{"class":738,"line":883},[736,9367,2872],{"class":782},[736,9369,1755],{"class":853},[736,9371,4624],{"class":789},[736,9373,1189],{"class":746},[736,9375,4629],{"class":841},[736,9377,844],{"class":853},[736,9379,4605],{"class":789},[736,9381,4636],{"class":853},[736,9383,2886],{"class":782},[736,9385,4641],{"class":789},[736,9387,1189],{"class":746},[736,9389,104],{"class":841},[736,9391,844],{"class":853},[736,9393,4650],{"class":789},[736,9395,889],{"class":853},[736,9397,9398,9400,9402,9404,9406,9408,9410,9412,9414,9416,9418,9420,9422,9424],{"class":738,"line":1811},[736,9399,2872],{"class":782},[736,9401,1755],{"class":853},[736,9403,2877],{"class":746},[736,9405,4605],{"class":789},[736,9407,4665],{"class":746},[736,9409,4668],{"class":746},[736,9411,4641],{"class":789},[736,9413,4673],{"class":746},[736,9415,799],{"class":746},[736,9417,4678],{"class":802},[736,9419,974],{"class":746},[736,9421,2883],{"class":853},[736,9423,2886],{"class":782},[736,9425,4687],{"class":789},[736,9427,9428],{"class":738,"line":1816},[736,9429,829],{"emptyLinePlaceholder":828},[736,9431,9432,9434,9436,9438,9440,9442,9444,9446,9448,9450,9452],{"class":738,"line":1823},[736,9433,1771],{"class":926},[736,9435,3285],{"class":789},[736,9437,747],{"class":746},[736,9439,3173],{"class":742},[736,9441,3164],{"class":746},[736,9443,3178],{"class":742},[736,9445,935],{"class":746},[736,9447,3183],{"class":742},[736,9449,3275],{"class":746},[736,9451,953],{"class":746},[736,9453,4716],{"class":746},[736,9455,9456,9458,9460,9462,9464,9466,9468,9470,9472,9474,9476,9478,9480,9482,9484,9486],{"class":738,"line":1829},[736,9457,3304],{"class":782},[736,9459,1755],{"class":853},[736,9461,1540],{"class":926},[736,9463,859],{"class":746},[736,9465,3332],{"class":789},[736,9467,935],{"class":746},[736,9469,4733],{"class":789},[736,9471,2847],{"class":746},[736,9473,3314],{"class":746},[736,9475,4740],{"class":789},[736,9477,1189],{"class":746},[736,9479,4745],{"class":841},[736,9481,844],{"class":853},[736,9483,4605],{"class":789},[736,9485,4636],{"class":853},[736,9487,847],{"class":746},[736,9489,9490,9492,9494,9496,9498,9500,9502,9504,9506,9508,9510,9512,9514,9516,9518,9520,9522],{"class":738,"line":1834},[736,9491,4758],{"class":926},[736,9493,4761],{"class":789},[736,9495,953],{"class":746},[736,9497,3311],{"class":789},[736,9499,1189],{"class":746},[736,9501,4770],{"class":841},[736,9503,4773],{"class":853},[736,9505,1189],{"class":746},[736,9507,4778],{"class":841},[736,9509,844],{"class":853},[736,9511,4783],{"class":746},[736,9513,4786],{"class":802},[736,9515,4789],{"class":746},[736,9517,4792],{"class":2940},[736,9519,935],{"class":746},[736,9521,4797],{"class":746},[736,9523,889],{"class":853},[736,9525,9526,9528,9530,9532,9534,9536,9538,9540,9542,9544,9546,9548,9550,9552,9554,9556,9558,9560,9562,9564,9566,9568,9570,9572,9574,9576],{"class":738,"line":1840},[736,9527,4804],{"class":789},[736,9529,3352],{"class":853},[736,9531,3332],{"class":789},[736,9533,4811],{"class":853},[736,9535,1198],{"class":746},[736,9537,4816],{"class":789},[736,9539,1189],{"class":746},[736,9541,4821],{"class":841},[736,9543,844],{"class":853},[736,9545,4826],{"class":1758},[736,9547,1764],{"class":926},[736,9549,4761],{"class":789},[736,9551,1189],{"class":746},[736,9553,4835],{"class":841},[736,9555,844],{"class":853},[736,9557,4826],{"class":789},[736,9559,4636],{"class":853},[736,9561,4844],{"class":746},[736,9563,799],{"class":746},[736,9565,4849],{"class":802},[736,9567,974],{"class":746},[736,9569,4854],{"class":746},[736,9571,4600],{"class":841},[736,9573,844],{"class":853},[736,9575,4861],{"class":789},[736,9577,889],{"class":853},[736,9579,9580],{"class":738,"line":1855},[736,9581,3368],{"class":746},[736,9583,9584,9586],{"class":738,"line":1865},[736,9585,2334],{"class":782},[736,9587,3376],{"class":789},[736,9589,9590],{"class":738,"line":1882},[736,9591,771],{"class":746},[736,9593,9594,9596,9598,9600,9602,9604,9606,9608,9610,9612],{"class":738,"line":1907},[736,9595,1540],{"class":926},[736,9597,1543],{"class":789},[736,9599,1198],{"class":746},[736,9601,932],{"class":841},[736,9603,844],{"class":789},[736,9605,1552],{"class":746},[736,9607,1555],{"class":841},[736,9609,1558],{"class":789},[736,9611,935],{"class":746},[736,9613,750],{"class":746},[736,9615,9616,9618,9620,9622,9624,9626,9628],{"class":738,"line":1913},[736,9617,5819],{"class":841},[736,9619,747],{"class":746},[736,9621,1755],{"class":746},[736,9623,4934],{"class":1758},[736,9625,1221],{"class":746},[736,9627,1764],{"class":926},[736,9629,750],{"class":746},[736,9631,9632],{"class":738,"line":1919},[736,9633,5836],{"class":1819},[736,9635,9636,9638,9640,9642,9644,9646,9648,9650,9652,9654,9656,9658,9660,9662,9664],{"class":738,"line":1927},[736,9637,5841],{"class":789},[736,9639,1189],{"class":746},[736,9641,1759],{"class":789},[736,9643,953],{"class":746},[736,9645,4600],{"class":841},[736,9647,844],{"class":853},[736,9649,4934],{"class":789},[736,9651,1189],{"class":746},[736,9653,1759],{"class":789},[736,9655,2883],{"class":853},[736,9657,4971],{"class":782},[736,9659,4668],{"class":746},[736,9661,4976],{"class":789},[736,9663,1189],{"class":746},[736,9665,4981],{"class":789},[736,9667,9668],{"class":738,"line":2130},[736,9669,1916],{"class":746},[736,9671,9672,9674],{"class":738,"line":2359},[736,9673,886],{"class":746},[736,9675,889],{"class":789},[726,9677,9679],{"className":728,"code":9678,"filename":300,"language":730,"meta":1576,"style":732},"import { withEvlog } from 'evlog\u002Fworkers'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\nexport default withEvlog(handler, {\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[625,9680,9681,9699,9703,9761,9765,9785,9817,9847,9851,9875,9909,9945,9999,10003,10009,10013,10027,10043,10047,10079,10083],{"__ignoreMap":732},[736,9682,9683,9685,9687,9689,9691,9693,9695,9697],{"class":738,"line":739},[736,9684,783],{"class":782},[736,9686,786],{"class":746},[736,9688,932],{"class":789},[736,9690,793],{"class":746},[736,9692,796],{"class":782},[736,9694,799],{"class":746},[736,9696,1595],{"class":802},[736,9698,806],{"class":746},[736,9700,9701],{"class":738,"line":753},[736,9702,829],{"emptyLinePlaceholder":828},[736,9704,9705,9707,9709,9711,9713,9715,9717,9719,9721,9723,9725,9727,9729,9731,9733,9735,9737,9739,9741,9743,9745,9747,9749,9751,9753,9755,9757,9759],{"class":738,"line":768},[736,9706,1540],{"class":926},[736,9708,4534],{"class":789},[736,9710,1198],{"class":746},[736,9712,859],{"class":789},[736,9714,974],{"class":746},[736,9716,3220],{"class":802},[736,9718,974],{"class":746},[736,9720,935],{"class":746},[736,9722,799],{"class":746},[736,9724,3229],{"class":802},[736,9726,974],{"class":746},[736,9728,935],{"class":746},[736,9730,799],{"class":746},[736,9732,3238],{"class":802},[736,9734,974],{"class":746},[736,9736,935],{"class":746},[736,9738,799],{"class":746},[736,9740,4567],{"class":802},[736,9742,974],{"class":746},[736,9744,935],{"class":746},[736,9746,799],{"class":746},[736,9748,3256],{"class":802},[736,9750,974],{"class":746},[736,9752,935],{"class":746},[736,9754,799],{"class":746},[736,9756,4584],{"class":802},[736,9758,974],{"class":746},[736,9760,1228],{"class":789},[736,9762,9763],{"class":738,"line":832},[736,9764,829],{"emptyLinePlaceholder":828},[736,9766,9767,9769,9771,9773,9775,9777,9779,9781,9783],{"class":738,"line":850},[736,9768,4597],{"class":926},[736,9770,4600],{"class":841},[736,9772,844],{"class":746},[736,9774,4605],{"class":1758},[736,9776,747],{"class":746},[736,9778,3183],{"class":742},[736,9780,2826],{"class":746},[736,9782,3183],{"class":742},[736,9784,750],{"class":746},[736,9786,9787,9789,9791,9793,9795,9797,9799,9801,9803,9805,9807,9809,9811,9813,9815],{"class":738,"line":883},[736,9788,2872],{"class":782},[736,9790,1755],{"class":853},[736,9792,4624],{"class":789},[736,9794,1189],{"class":746},[736,9796,4629],{"class":841},[736,9798,844],{"class":853},[736,9800,4605],{"class":789},[736,9802,4636],{"class":853},[736,9804,2886],{"class":782},[736,9806,4641],{"class":789},[736,9808,1189],{"class":746},[736,9810,104],{"class":841},[736,9812,844],{"class":853},[736,9814,4650],{"class":789},[736,9816,889],{"class":853},[736,9818,9819,9821,9823,9825,9827,9829,9831,9833,9835,9837,9839,9841,9843,9845],{"class":738,"line":1811},[736,9820,2872],{"class":782},[736,9822,1755],{"class":853},[736,9824,2877],{"class":746},[736,9826,4605],{"class":789},[736,9828,4665],{"class":746},[736,9830,4668],{"class":746},[736,9832,4641],{"class":789},[736,9834,4673],{"class":746},[736,9836,799],{"class":746},[736,9838,4678],{"class":802},[736,9840,974],{"class":746},[736,9842,2883],{"class":853},[736,9844,2886],{"class":782},[736,9846,4687],{"class":789},[736,9848,9849],{"class":738,"line":1816},[736,9850,829],{"emptyLinePlaceholder":828},[736,9852,9853,9855,9857,9859,9861,9863,9865,9867,9869,9871,9873],{"class":738,"line":1823},[736,9854,1771],{"class":926},[736,9856,3285],{"class":789},[736,9858,747],{"class":746},[736,9860,3173],{"class":742},[736,9862,3164],{"class":746},[736,9864,3178],{"class":742},[736,9866,935],{"class":746},[736,9868,3183],{"class":742},[736,9870,3275],{"class":746},[736,9872,953],{"class":746},[736,9874,4716],{"class":746},[736,9876,9877,9879,9881,9883,9885,9887,9889,9891,9893,9895,9897,9899,9901,9903,9905,9907],{"class":738,"line":1829},[736,9878,3304],{"class":782},[736,9880,1755],{"class":853},[736,9882,1540],{"class":926},[736,9884,859],{"class":746},[736,9886,3332],{"class":789},[736,9888,935],{"class":746},[736,9890,4733],{"class":789},[736,9892,2847],{"class":746},[736,9894,3314],{"class":746},[736,9896,4740],{"class":789},[736,9898,1189],{"class":746},[736,9900,4745],{"class":841},[736,9902,844],{"class":853},[736,9904,4605],{"class":789},[736,9906,4636],{"class":853},[736,9908,847],{"class":746},[736,9910,9911,9913,9915,9917,9919,9921,9923,9925,9927,9929,9931,9933,9935,9937,9939,9941,9943],{"class":738,"line":1834},[736,9912,4758],{"class":926},[736,9914,4761],{"class":789},[736,9916,953],{"class":746},[736,9918,3311],{"class":789},[736,9920,1189],{"class":746},[736,9922,4770],{"class":841},[736,9924,4773],{"class":853},[736,9926,1189],{"class":746},[736,9928,4778],{"class":841},[736,9930,844],{"class":853},[736,9932,4783],{"class":746},[736,9934,4786],{"class":802},[736,9936,4789],{"class":746},[736,9938,4792],{"class":2940},[736,9940,935],{"class":746},[736,9942,4797],{"class":746},[736,9944,889],{"class":853},[736,9946,9947,9949,9951,9953,9955,9957,9959,9961,9963,9965,9967,9969,9971,9973,9975,9977,9979,9981,9983,9985,9987,9989,9991,9993,9995,9997],{"class":738,"line":1840},[736,9948,4804],{"class":789},[736,9950,3352],{"class":853},[736,9952,3332],{"class":789},[736,9954,4811],{"class":853},[736,9956,1198],{"class":746},[736,9958,4816],{"class":789},[736,9960,1189],{"class":746},[736,9962,4821],{"class":841},[736,9964,844],{"class":853},[736,9966,4826],{"class":1758},[736,9968,1764],{"class":926},[736,9970,4761],{"class":789},[736,9972,1189],{"class":746},[736,9974,4835],{"class":841},[736,9976,844],{"class":853},[736,9978,4826],{"class":789},[736,9980,4636],{"class":853},[736,9982,4844],{"class":746},[736,9984,799],{"class":746},[736,9986,4849],{"class":802},[736,9988,974],{"class":746},[736,9990,4854],{"class":746},[736,9992,4600],{"class":841},[736,9994,844],{"class":853},[736,9996,4861],{"class":789},[736,9998,889],{"class":853},[736,10000,10001],{"class":738,"line":1855},[736,10002,3368],{"class":746},[736,10004,10005,10007],{"class":738,"line":1865},[736,10006,2334],{"class":782},[736,10008,3376],{"class":789},[736,10010,10011],{"class":738,"line":1882},[736,10012,771],{"class":746},[736,10014,10015,10017,10019,10021,10023,10025],{"class":738,"line":1907},[736,10016,835],{"class":782},[736,10018,838],{"class":782},[736,10020,932],{"class":841},[736,10022,1612],{"class":789},[736,10024,935],{"class":746},[736,10026,750],{"class":746},[736,10028,10029,10031,10033,10035,10037,10039,10041],{"class":738,"line":1913},[736,10030,5819],{"class":841},[736,10032,747],{"class":746},[736,10034,1755],{"class":746},[736,10036,4934],{"class":1758},[736,10038,1221],{"class":746},[736,10040,1764],{"class":926},[736,10042,750],{"class":746},[736,10044,10045],{"class":738,"line":1919},[736,10046,5836],{"class":1819},[736,10048,10049,10051,10053,10055,10057,10059,10061,10063,10065,10067,10069,10071,10073,10075,10077],{"class":738,"line":1927},[736,10050,5841],{"class":789},[736,10052,1189],{"class":746},[736,10054,1759],{"class":789},[736,10056,953],{"class":746},[736,10058,4600],{"class":841},[736,10060,844],{"class":853},[736,10062,4934],{"class":789},[736,10064,1189],{"class":746},[736,10066,1759],{"class":789},[736,10068,2883],{"class":853},[736,10070,4971],{"class":782},[736,10072,4668],{"class":746},[736,10074,4976],{"class":789},[736,10076,1189],{"class":746},[736,10078,4981],{"class":789},[736,10080,10081],{"class":738,"line":2130},[736,10082,1916],{"class":746},[736,10084,10085,10087],{"class":738,"line":2359},[736,10086,886],{"class":746},[736,10088,889],{"class":789},[726,10090,10092],{"className":728,"code":10091,"filename":305,"language":730,"meta":1232,"style":732},"import { initLogger } from 'evlog'\n\nconst SENSITIVE_KEYS = ['password', 'token', 'secret', 'apikey', 'authorization', 'cookie']\n\nfunction deepSanitize(value: unknown): unknown {\n  if (Array.isArray(value)) return value.map(deepSanitize)\n  if (!value || typeof value !== 'object') return value\n\n  const result: Record\u003Cstring, unknown> = {}\n  for (const [key, nested] of Object.entries(value)) {\n    const name = key.toLowerCase().replace(\u002F[-_]\u002Fg, '')\n    result[key] = SENSITIVE_KEYS.some(k => name.includes(k)) ? '[REDACTED]' : deepSanitize(nested)\n  }\n  return result\n}\ninitLogger({\n  drain: (ctx) => {\n      \u002F\u002F Sanitize before sending to external service\n      ctx.event = deepSanitize(ctx.event) as typeof ctx.event\n    },\n})\n",[625,10093,10094,10112,10116,10174,10178,10198,10230,10260,10264,10288,10322,10358,10412,10416,10422,10426,10434,10450,10454,10486,10490],{"__ignoreMap":732},[736,10095,10096,10098,10100,10102,10104,10106,10108,10110],{"class":738,"line":739},[736,10097,783],{"class":782},[736,10099,786],{"class":746},[736,10101,1640],{"class":789},[736,10103,793],{"class":746},[736,10105,796],{"class":782},[736,10107,799],{"class":746},[736,10109,743],{"class":802},[736,10111,806],{"class":746},[736,10113,10114],{"class":738,"line":753},[736,10115,829],{"emptyLinePlaceholder":828},[736,10117,10118,10120,10122,10124,10126,10128,10130,10132,10134,10136,10138,10140,10142,10144,10146,10148,10150,10152,10154,10156,10158,10160,10162,10164,10166,10168,10170,10172],{"class":738,"line":768},[736,10119,1540],{"class":926},[736,10121,4534],{"class":789},[736,10123,1198],{"class":746},[736,10125,859],{"class":789},[736,10127,974],{"class":746},[736,10129,3220],{"class":802},[736,10131,974],{"class":746},[736,10133,935],{"class":746},[736,10135,799],{"class":746},[736,10137,3229],{"class":802},[736,10139,974],{"class":746},[736,10141,935],{"class":746},[736,10143,799],{"class":746},[736,10145,3238],{"class":802},[736,10147,974],{"class":746},[736,10149,935],{"class":746},[736,10151,799],{"class":746},[736,10153,4567],{"class":802},[736,10155,974],{"class":746},[736,10157,935],{"class":746},[736,10159,799],{"class":746},[736,10161,3256],{"class":802},[736,10163,974],{"class":746},[736,10165,935],{"class":746},[736,10167,799],{"class":746},[736,10169,4584],{"class":802},[736,10171,974],{"class":746},[736,10173,1228],{"class":789},[736,10175,10176],{"class":738,"line":832},[736,10177,829],{"emptyLinePlaceholder":828},[736,10179,10180,10182,10184,10186,10188,10190,10192,10194,10196],{"class":738,"line":850},[736,10181,4597],{"class":926},[736,10183,4600],{"class":841},[736,10185,844],{"class":746},[736,10187,4605],{"class":1758},[736,10189,747],{"class":746},[736,10191,3183],{"class":742},[736,10193,2826],{"class":746},[736,10195,3183],{"class":742},[736,10197,750],{"class":746},[736,10199,10200,10202,10204,10206,10208,10210,10212,10214,10216,10218,10220,10222,10224,10226,10228],{"class":738,"line":883},[736,10201,2872],{"class":782},[736,10203,1755],{"class":853},[736,10205,4624],{"class":789},[736,10207,1189],{"class":746},[736,10209,4629],{"class":841},[736,10211,844],{"class":853},[736,10213,4605],{"class":789},[736,10215,4636],{"class":853},[736,10217,2886],{"class":782},[736,10219,4641],{"class":789},[736,10221,1189],{"class":746},[736,10223,104],{"class":841},[736,10225,844],{"class":853},[736,10227,4650],{"class":789},[736,10229,889],{"class":853},[736,10231,10232,10234,10236,10238,10240,10242,10244,10246,10248,10250,10252,10254,10256,10258],{"class":738,"line":1811},[736,10233,2872],{"class":782},[736,10235,1755],{"class":853},[736,10237,2877],{"class":746},[736,10239,4605],{"class":789},[736,10241,4665],{"class":746},[736,10243,4668],{"class":746},[736,10245,4641],{"class":789},[736,10247,4673],{"class":746},[736,10249,799],{"class":746},[736,10251,4678],{"class":802},[736,10253,974],{"class":746},[736,10255,2883],{"class":853},[736,10257,2886],{"class":782},[736,10259,4687],{"class":789},[736,10261,10262],{"class":738,"line":1816},[736,10263,829],{"emptyLinePlaceholder":828},[736,10265,10266,10268,10270,10272,10274,10276,10278,10280,10282,10284,10286],{"class":738,"line":1823},[736,10267,1771],{"class":926},[736,10269,3285],{"class":789},[736,10271,747],{"class":746},[736,10273,3173],{"class":742},[736,10275,3164],{"class":746},[736,10277,3178],{"class":742},[736,10279,935],{"class":746},[736,10281,3183],{"class":742},[736,10283,3275],{"class":746},[736,10285,953],{"class":746},[736,10287,4716],{"class":746},[736,10289,10290,10292,10294,10296,10298,10300,10302,10304,10306,10308,10310,10312,10314,10316,10318,10320],{"class":738,"line":1829},[736,10291,3304],{"class":782},[736,10293,1755],{"class":853},[736,10295,1540],{"class":926},[736,10297,859],{"class":746},[736,10299,3332],{"class":789},[736,10301,935],{"class":746},[736,10303,4733],{"class":789},[736,10305,2847],{"class":746},[736,10307,3314],{"class":746},[736,10309,4740],{"class":789},[736,10311,1189],{"class":746},[736,10313,4745],{"class":841},[736,10315,844],{"class":853},[736,10317,4605],{"class":789},[736,10319,4636],{"class":853},[736,10321,847],{"class":746},[736,10323,10324,10326,10328,10330,10332,10334,10336,10338,10340,10342,10344,10346,10348,10350,10352,10354,10356],{"class":738,"line":1834},[736,10325,4758],{"class":926},[736,10327,4761],{"class":789},[736,10329,953],{"class":746},[736,10331,3311],{"class":789},[736,10333,1189],{"class":746},[736,10335,4770],{"class":841},[736,10337,4773],{"class":853},[736,10339,1189],{"class":746},[736,10341,4778],{"class":841},[736,10343,844],{"class":853},[736,10345,4783],{"class":746},[736,10347,4786],{"class":802},[736,10349,4789],{"class":746},[736,10351,4792],{"class":2940},[736,10353,935],{"class":746},[736,10355,4797],{"class":746},[736,10357,889],{"class":853},[736,10359,10360,10362,10364,10366,10368,10370,10372,10374,10376,10378,10380,10382,10384,10386,10388,10390,10392,10394,10396,10398,10400,10402,10404,10406,10408,10410],{"class":738,"line":1840},[736,10361,4804],{"class":789},[736,10363,3352],{"class":853},[736,10365,3332],{"class":789},[736,10367,4811],{"class":853},[736,10369,1198],{"class":746},[736,10371,4816],{"class":789},[736,10373,1189],{"class":746},[736,10375,4821],{"class":841},[736,10377,844],{"class":853},[736,10379,4826],{"class":1758},[736,10381,1764],{"class":926},[736,10383,4761],{"class":789},[736,10385,1189],{"class":746},[736,10387,4835],{"class":841},[736,10389,844],{"class":853},[736,10391,4826],{"class":789},[736,10393,4636],{"class":853},[736,10395,4844],{"class":746},[736,10397,799],{"class":746},[736,10399,4849],{"class":802},[736,10401,974],{"class":746},[736,10403,4854],{"class":746},[736,10405,4600],{"class":841},[736,10407,844],{"class":853},[736,10409,4861],{"class":789},[736,10411,889],{"class":853},[736,10413,10414],{"class":738,"line":1855},[736,10415,3368],{"class":746},[736,10417,10418,10420],{"class":738,"line":1865},[736,10419,2334],{"class":782},[736,10421,3376],{"class":789},[736,10423,10424],{"class":738,"line":1882},[736,10425,771],{"class":746},[736,10427,10428,10430,10432],{"class":738,"line":1907},[736,10429,1659],{"class":841},[736,10431,844],{"class":789},[736,10433,847],{"class":746},[736,10435,10436,10438,10440,10442,10444,10446,10448],{"class":738,"line":1913},[736,10437,5819],{"class":841},[736,10439,747],{"class":746},[736,10441,1755],{"class":746},[736,10443,4934],{"class":1758},[736,10445,1221],{"class":746},[736,10447,1764],{"class":926},[736,10449,750],{"class":746},[736,10451,10452],{"class":738,"line":1919},[736,10453,5836],{"class":1819},[736,10455,10456,10458,10460,10462,10464,10466,10468,10470,10472,10474,10476,10478,10480,10482,10484],{"class":738,"line":1927},[736,10457,5841],{"class":789},[736,10459,1189],{"class":746},[736,10461,1759],{"class":789},[736,10463,953],{"class":746},[736,10465,4600],{"class":841},[736,10467,844],{"class":853},[736,10469,4934],{"class":789},[736,10471,1189],{"class":746},[736,10473,1759],{"class":789},[736,10475,2883],{"class":853},[736,10477,4971],{"class":782},[736,10479,4668],{"class":746},[736,10481,4976],{"class":789},[736,10483,1189],{"class":746},[736,10485,4981],{"class":789},[736,10487,10488],{"class":738,"line":2130},[736,10489,1916],{"class":746},[736,10491,10492,10494],{"class":738,"line":2359},[736,10493,886],{"class":746},[736,10495,889],{"class":789},[712,10497,10499],{"color":10498,"icon":483},"warning","Drain hook sanitization is a safety net, not a replacement for careful logging practices. Always sanitize at the source.",[617,10501,10503],{"id":10502},"production-checklist","Production Checklist",[613,10505,10506],{},"Before deploying to production, verify:",[1702,10508,10510],{"id":10509},"logging-configuration","Logging Configuration",[10512,10513,10516,10529,10535,10541],"ul",{"className":10514},[10515],"contains-task-list",[10517,10518,10521,10525,10526,1221],"li",{"className":10519},[10520],"task-list-item",[10522,10523],"input",{"disabled":828,"type":10524},"checkbox"," Service name is set (",[625,10527,10528],{},"env.service",[10517,10530,10532,10534],{"className":10531},[10520],[10522,10533],{"disabled":828,"type":10524}," Sampling is configured for high-traffic routes",[10517,10536,10538,10540],{"className":10537},[10520],[10522,10539],{"disabled":828,"type":10524}," Log draining is set up for external service (Axiom, Loki, etc.)",[10517,10542,10544,10546,10547,1221],{"className":10543},[10520],[10522,10545],{"disabled":828,"type":10524}," Pretty mode is disabled in production (",[625,10548,10549],{},"pretty: false",[1702,10551,10553],{"id":10552},"data-security","Data Security",[10512,10555,10557,10565,10571,10577,10583,10589,10595],{"className":10556},[10515],[10517,10558,10560,10562,10563,1221],{"className":10559},[10520],[10522,10561],{"disabled":828,"type":10524}," Auto-redaction is enabled (",[625,10564,1695],{},[10517,10566,10568,10570],{"className":10567},[10520],[10522,10569],{"disabled":828,"type":10524}," No passwords or secrets in logs",[10517,10572,10574,10576],{"className":10573},[10520],[10522,10575],{"disabled":828,"type":10524}," No full credit card numbers (only last 4 digits)",[10517,10578,10580,10582],{"className":10579},[10520],[10522,10581],{"disabled":828,"type":10524}," No API keys or tokens",[10517,10584,10586,10588],{"className":10585},[10520],[10522,10587],{"disabled":828,"type":10524}," PII is masked or omitted (emails, phone numbers)",[10517,10590,10592,10594],{"className":10591},[10520],[10522,10593],{"disabled":828,"type":10524}," Session tokens are not logged",[10517,10596,10598,10600,10601,1221],{"className":10597},[10520],[10522,10599],{"disabled":828,"type":10524}," Request bodies are selectively logged (not ",[625,10602,10603],{},"log.set({ body })",[1702,10605,10607],{"id":10606},"error-handling","Error Handling",[10512,10609,10611,10621,10627],{"className":10610},[10515],[10517,10612,10614,10616,10617,10620],{"className":10613},[10520],[10522,10615],{"disabled":828,"type":10524}," Errors use ",[625,10618,10619],{},"createError()"," with structured fields",[10517,10622,10624,10626],{"className":10623},[10520],[10522,10625],{"disabled":828,"type":10524}," Sensitive data is not included in error messages",[10517,10628,10630,10632],{"className":10629},[10520],[10522,10631],{"disabled":828,"type":10524}," Stack traces don't expose internal paths in production",[617,10634,10636],{"id":10635},"group-fields-so-they-stay-queryable","Group fields so they stay queryable",[613,10638,10639],{},"Use consistent, grouped field names across your codebase:",[726,10641,10644],{"className":728,"code":10642,"filename":10643,"language":730,"meta":732,"style":732},"\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",[625,10645,10646,10651,10663,10688,10712,10736,10742,10746,10751,10763,10779,10791,10803,10818],{"__ignoreMap":732},[736,10647,10648],{"class":738,"line":739},[736,10649,10650],{"class":1819},"\u002F\u002F ✅ Good - grouped and descriptive\n",[736,10652,10653,10655,10657,10659,10661],{"class":738,"line":753},[736,10654,2425],{"class":789},[736,10656,1189],{"class":746},[736,10658,1848],{"class":841},[736,10660,844],{"class":789},[736,10662,847],{"class":746},[736,10664,10665,10668,10670,10672,10675,10677,10680,10682,10685],{"class":738,"line":768},[736,10666,10667],{"class":853},"  user",[736,10669,747],{"class":746},[736,10671,786],{"class":746},[736,10673,10674],{"class":789}," id",[736,10676,935],{"class":746},[736,10678,10679],{"class":789}," plan",[736,10681,935],{"class":746},[736,10683,10684],{"class":789}," accountAge ",[736,10686,10687],{"class":746},"},\n",[736,10689,10690,10693,10695,10697,10700,10702,10705,10707,10710],{"class":738,"line":832},[736,10691,10692],{"class":853},"  cart",[736,10694,747],{"class":746},[736,10696,786],{"class":746},[736,10698,10699],{"class":789}," items",[736,10701,935],{"class":746},[736,10703,10704],{"class":789}," total",[736,10706,935],{"class":746},[736,10708,10709],{"class":789}," currency ",[736,10711,10687],{"class":746},[736,10713,10714,10717,10719,10721,10724,10726,10729,10731,10734],{"class":738,"line":850},[736,10715,10716],{"class":853},"  payment",[736,10718,747],{"class":746},[736,10720,786],{"class":746},[736,10722,10723],{"class":789}," method",[736,10725,935],{"class":746},[736,10727,10728],{"class":789}," provider",[736,10730,935],{"class":746},[736,10732,10733],{"class":789}," last4 ",[736,10735,10687],{"class":746},[736,10737,10738,10740],{"class":738,"line":883},[736,10739,886],{"class":746},[736,10741,889],{"class":789},[736,10743,10744],{"class":738,"line":1811},[736,10745,829],{"emptyLinePlaceholder":828},[736,10747,10748],{"class":738,"line":1816},[736,10749,10750],{"class":1819},"\u002F\u002F ❌ Bad - flat and abbreviated\n",[736,10752,10753,10755,10757,10759,10761],{"class":738,"line":1823},[736,10754,2425],{"class":789},[736,10756,1189],{"class":746},[736,10758,1848],{"class":841},[736,10760,844],{"class":789},[736,10762,847],{"class":746},[736,10764,10765,10768,10770,10772,10775,10777],{"class":738,"line":1829},[736,10766,10767],{"class":853},"  uid",[736,10769,747],{"class":746},[736,10771,799],{"class":746},[736,10773,10774],{"class":802},"123",[736,10776,974],{"class":746},[736,10778,765],{"class":746},[736,10780,10781,10784,10786,10789],{"class":738,"line":1834},[736,10782,10783],{"class":853},"  n",[736,10785,747],{"class":746},[736,10787,10788],{"class":2940}," 3",[736,10790,765],{"class":746},[736,10792,10793,10796,10798,10801],{"class":738,"line":1840},[736,10794,10795],{"class":853},"  t",[736,10797,747],{"class":746},[736,10799,10800],{"class":2940}," 9999",[736,10802,765],{"class":746},[736,10804,10805,10808,10810,10812,10814,10816],{"class":738,"line":1855},[736,10806,10807],{"class":853},"  pm",[736,10809,747],{"class":746},[736,10811,799],{"class":746},[736,10813,2998],{"class":802},[736,10815,974],{"class":746},[736,10817,765],{"class":746},[736,10819,10820,10822],{"class":738,"line":1865},[736,10821,886],{"class":746},[736,10823,889],{"class":789},[1702,10825,10827],{"id":10826},"recommended-field-structure","Recommended Field Structure",[634,10829,10830,10839],{},[637,10831,10832],{},[640,10833,10834,10836],{},[643,10835,645],{},[643,10837,10838],{},"Fields",[653,10840,10841,10861,10881,10906,10926],{},[640,10842,10843,10847],{},[658,10844,10845],{},[625,10846,3535],{},[658,10848,10849,10851,10852,10851,10855,10851,10858],{},[625,10850,1877],{},", ",[625,10853,10854],{},"plan",[625,10856,10857],{},"role",[625,10859,10860],{},"accountAge",[640,10862,10863,10867],{},[658,10864,10865],{},[625,10866,2189],{},[658,10868,10869,10851,10872,10851,10875,10851,10878],{},[625,10870,10871],{},"method",[625,10873,10874],{},"path",[625,10876,10877],{},"requestId",[625,10879,10880],{},"traceId",[640,10882,10883,10892],{},[658,10884,10885,10888,10889],{},[625,10886,10887],{},"cart"," \u002F ",[625,10890,10891],{},"order",[658,10893,10894,10851,10897,10851,10900,10851,10903],{},[625,10895,10896],{},"items",[625,10898,10899],{},"total",[625,10901,10902],{},"currency",[625,10904,10905],{},"coupon",[640,10907,10908,10913],{},[658,10909,10910],{},[625,10911,10912],{},"payment",[658,10914,10915,10851,10917,10851,10920,10851,10923],{},[625,10916,10871],{},[625,10918,10919],{},"provider",[625,10921,10922],{},"last4",[625,10924,10925],{},"status",[640,10927,10928,10933],{},[658,10929,10930],{},[625,10931,10932],{},"outcome",[658,10934,10935,10851,10937,10851,10940],{},[625,10936,10925],{},[625,10938,10939],{},"duration",[625,10941,714],{},[617,10943,10945],{"id":10944},"decide-what-survives-sampling","Decide what survives sampling",[613,10947,10948],{},"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:",[726,10950,10952],{"className":728,"code":10951,"filename":731,"language":730,"meta":732,"style":732},"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",[625,10953,10954,10967,10975,10984,10989,10998,11013,11028,11043,11058,11063,11068,11077,11096,11113,11134,11141,11145,11150],{"__ignoreMap":732},[736,10955,10956,10958,10960,10963,10965],{"class":738,"line":739},[736,10957,835],{"class":782},[736,10959,838],{"class":782},[736,10961,10962],{"class":841}," defineNuxtConfig",[736,10964,844],{"class":789},[736,10966,847],{"class":746},[736,10968,10969,10971,10973],{"class":738,"line":753},[736,10970,1206],{"class":853},[736,10972,747],{"class":746},[736,10974,750],{"class":746},[736,10976,10977,10980,10982],{"class":738,"line":768},[736,10978,10979],{"class":853},"    sampling",[736,10981,747],{"class":746},[736,10983,750],{"class":746},[736,10985,10986],{"class":738,"line":832},[736,10987,10988],{"class":1819},"      \u002F\u002F Head sampling: random percentage per level\n",[736,10990,10991,10994,10996],{"class":738,"line":850},[736,10992,10993],{"class":853},"      rates",[736,10995,747],{"class":746},[736,10997,750],{"class":746},[736,10999,11000,11003,11005,11008,11010],{"class":738,"line":883},[736,11001,11002],{"class":853},"        info",[736,11004,747],{"class":746},[736,11006,11007],{"class":2940}," 10",[736,11009,935],{"class":746},[736,11011,11012],{"class":1819},"    \u002F\u002F 10% of success logs\n",[736,11014,11015,11018,11020,11023,11025],{"class":738,"line":1811},[736,11016,11017],{"class":853},"        warn",[736,11019,747],{"class":746},[736,11021,11022],{"class":2940}," 50",[736,11024,935],{"class":746},[736,11026,11027],{"class":1819},"    \u002F\u002F 50% of warnings\n",[736,11029,11030,11033,11035,11038,11040],{"class":738,"line":1816},[736,11031,11032],{"class":853},"        debug",[736,11034,747],{"class":746},[736,11036,11037],{"class":2940}," 0",[736,11039,935],{"class":746},[736,11041,11042],{"class":1819},"    \u002F\u002F No debug logs in prod\n",[736,11044,11045,11048,11050,11053,11055],{"class":738,"line":1823},[736,11046,11047],{"class":853},"        error",[736,11049,747],{"class":746},[736,11051,11052],{"class":2940}," 100",[736,11054,935],{"class":746},[736,11056,11057],{"class":1819},"  \u002F\u002F Always keep errors\n",[736,11059,11060],{"class":738,"line":1829},[736,11061,11062],{"class":746},"      },\n",[736,11064,11065],{"class":738,"line":1834},[736,11066,11067],{"class":1819},"      \u002F\u002F Tail sampling: force-keep based on outcome\n",[736,11069,11070,11073,11075],{"class":738,"line":1840},[736,11071,11072],{"class":853},"      keep",[736,11074,747],{"class":746},[736,11076,1201],{"class":789},[736,11078,11079,11082,11085,11087,11090,11093],{"class":738,"line":1855},[736,11080,11081],{"class":746},"        {",[736,11083,11084],{"class":853}," duration",[736,11086,747],{"class":746},[736,11088,11089],{"class":2940}," 1000",[736,11091,11092],{"class":746}," },",[736,11094,11095],{"class":1819},"           \u002F\u002F Slow requests (≥1s)\n",[736,11097,11098,11100,11103,11105,11108,11110],{"class":738,"line":1865},[736,11099,11081],{"class":746},[736,11101,11102],{"class":853}," status",[736,11104,747],{"class":746},[736,11106,11107],{"class":2940}," 400",[736,11109,11092],{"class":746},[736,11111,11112],{"class":1819},"              \u002F\u002F Client\u002Fserver errors\n",[736,11114,11115,11117,11120,11122,11124,11127,11129,11131],{"class":738,"line":1882},[736,11116,11081],{"class":746},[736,11118,11119],{"class":853}," path",[736,11121,747],{"class":746},[736,11123,799],{"class":746},[736,11125,11126],{"class":802},"\u002Fapi\u002Fpayments\u002F**",[736,11128,974],{"class":746},[736,11130,11092],{"class":746},[736,11132,11133],{"class":1819}," \u002F\u002F Critical paths\n",[736,11135,11136,11139],{"class":738,"line":1907},[736,11137,11138],{"class":789},"      ]",[736,11140,765],{"class":746},[736,11142,11143],{"class":738,"line":1913},[736,11144,1916],{"class":746},[736,11146,11147],{"class":738,"line":1919},[736,11148,11149],{"class":746},"  },\n",[736,11151,11152,11154],{"class":738,"line":1927},[736,11153,886],{"class":746},[736,11155,889],{"class":789},[712,11157,11159,11160,11163,11164,1189],{"color":11158,"icon":13},"info","Use ",[625,11161,11162],{},"$production"," override to keep full logging in development while sampling in production. See ",[1686,11165,11167],{"href":11166},"\u002Fintegrate\u002Fframeworks\u002Fnuxt#sampling","Nuxt framework guide",[617,11169,11171],{"id":11170},"next-steps","Next Steps",[10512,11173,11174,11179,11184],{},[10517,11175,11176,11178],{},[1686,11177,71],{"href":72}," - Built-in PII protection with smart masking",[10517,11180,11181,11183],{},[1686,11182,51],{"href":52}," - Design effective wide events",[10517,11185,11186,11188],{},[1686,11187,56],{"href":57}," - Error handling patterns",[11190,11191,11192],"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":732,"searchDepth":753,"depth":753,"links":11194},[11195,11196,11197,11202,11207,11210,11211],{"id":619,"depth":753,"text":620},{"id":718,"depth":753,"text":71},{"id":1699,"depth":753,"text":1700,"children":11198},[11199,11200,11201],{"id":1704,"depth":768,"text":1705},{"id":2777,"depth":768,"text":2778},{"id":4515,"depth":768,"text":4516},{"id":10502,"depth":753,"text":10503,"children":11203},[11204,11205,11206],{"id":10509,"depth":768,"text":10510},{"id":10552,"depth":768,"text":10553},{"id":10606,"depth":768,"text":10607},{"id":10635,"depth":753,"text":10636,"children":11208},[11209],{"id":10826,"depth":768,"text":10827},{"id":10944,"depth":753,"text":10945},{"id":11170,"depth":753,"text":11171},"Security guidelines, data sanitization, and production tips for evlog. Learn what not to log and how to protect sensitive data.","md",[11215],{"label":153,"icon":151,"to":158,"color":11216,"variant":11217},"neutral","subtle",{},{"icon":393},{"title":565,"description":11212},"ax7y7oLbWTdGpSQV6F4EPZ4HlMbj7GlTmjPk_-sVwBM",[11223,11225],{"title":560,"path":561,"stem":562,"description":11224,"icon":563,"children":-1},"Build-time optimizations for any Vite-based framework. Auto-init, debug stripping, source location injection, and optional auto-imports.",{"title":569,"path":570,"stem":571,"description":11226,"icon":572,"children":-1},"Choose a logger by context model, extensibility, output, and migration cost, then follow the detailed comparison for your current stack.",1791444206064]