[{"data":1,"prerenderedAt":4785},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-audit-recording":602,"-use-cases-audit-recording-surround":4780},[4,35,85,138,318,479,538,577],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Start","\u002Fstart","1.start",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",{"title":30,"path":31,"stem":32,"icon":33},"Choose your logger","\u002Fstart\u002Ftypescript-logging-library","1.start\u002F5.typescript-logging-library","i-lucide-file-code",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Learn","\u002Flearn","2.learn",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":66,"path":67,"stem":68,"icon":69},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":71,"path":72,"stem":73,"icon":74},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":76,"path":77,"stem":78,"icon":79},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":81,"path":82,"stem":83,"icon":84},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":86,"path":87,"stem":88,"children":89,"page":34},"CLI","\u002Fcli","3.cli",[90,93,98,103,108,113,118,123,128,133],{"title":41,"path":91,"stem":92,"icon":49},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":94,"path":95,"stem":96,"icon":97},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":99,"path":100,"stem":101,"icon":102},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":104,"path":105,"stem":106,"icon":107},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":109,"path":110,"stem":111,"icon":112},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":114,"path":115,"stem":116,"icon":117},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":119,"path":120,"stem":121,"icon":122},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":124,"path":125,"stem":126,"icon":127},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":129,"path":130,"stem":131,"icon":132},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":134,"path":135,"stem":136,"icon":137},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":139,"path":140,"stem":141,"children":142,"page":34},"Integrate","\u002Fintegrate","4.integrate",[143,147,230],{"title":41,"path":144,"stem":145,"icon":146},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":148,"path":149,"stem":150,"children":151,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[152,155,185,210],{"title":41,"path":153,"stem":154,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":156,"path":157,"stem":158,"children":159,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[160,165,170,175,180],{"title":161,"path":162,"stem":163,"icon":164},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":166,"path":167,"stem":168,"icon":169},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":171,"path":172,"stem":173,"icon":174},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":176,"path":177,"stem":178,"icon":179},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":181,"path":182,"stem":183,"icon":184},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":186,"path":187,"stem":188,"children":189,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[190,195,200,205],{"title":191,"path":192,"stem":193,"icon":194},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":196,"path":197,"stem":198,"icon":199},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":201,"path":202,"stem":203,"icon":204},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":206,"path":207,"stem":208,"icon":209},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":211,"path":212,"stem":213,"children":214,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[215,220,225],{"title":216,"path":217,"stem":218,"icon":219},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":221,"path":222,"stem":223,"icon":224},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":226,"path":227,"stem":228,"icon":229},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":231,"path":232,"stem":233,"children":234,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[235,239,244,249,254,259,264,269,274,279,284,289,294,299,303,308,313],{"title":41,"path":236,"stem":237,"icon":238},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":240,"path":241,"stem":242,"icon":243},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":245,"path":246,"stem":247,"icon":248},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":250,"path":251,"stem":252,"icon":253},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":255,"path":256,"stem":257,"icon":258},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":260,"path":261,"stem":262,"icon":263},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":265,"path":266,"stem":267,"icon":268},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":270,"path":271,"stem":272,"icon":273},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":275,"path":276,"stem":277,"icon":278},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":280,"path":281,"stem":282,"icon":283},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":285,"path":286,"stem":287,"icon":288},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":290,"path":291,"stem":292,"icon":293},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":295,"path":296,"stem":297,"icon":298},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":300,"path":301,"stem":302,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":304,"path":305,"stem":306,"icon":307},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":309,"path":310,"stem":311,"icon":312},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":314,"path":315,"stem":316,"icon":317},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":319,"path":320,"stem":321,"children":322,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[323,326,331,359,386,418,439,444,449,453],{"title":41,"path":324,"stem":325,"icon":107},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":327,"path":328,"stem":329,"icon":330},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":332,"icon":333,"path":334,"stem":335,"children":336,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[337,340,345,350,355],{"title":41,"path":338,"stem":339,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":341,"path":342,"stem":343,"icon":344},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":346,"path":347,"stem":348,"icon":349},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":351,"path":352,"stem":353,"icon":354},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":356,"path":357,"stem":358,"icon":137},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":360,"icon":361,"path":362,"stem":363,"children":364,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[365,368,373,378,382],{"title":41,"path":366,"stem":367,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":369,"path":370,"stem":371,"icon":372},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":374,"path":375,"stem":376,"icon":377},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":379,"path":380,"stem":381,"icon":330},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":383,"path":384,"stem":385,"icon":112},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":387,"icon":388,"path":389,"stem":390,"children":391,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[392,395,400,405,410,414],{"title":41,"path":393,"stem":394,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":396,"path":397,"stem":398,"icon":399},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":401,"path":402,"stem":403,"icon":404},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":406,"path":407,"stem":408,"icon":409},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":411,"path":412,"stem":413,"icon":388},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":415,"path":416,"stem":417,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":356,"icon":112,"path":419,"stem":420,"children":421,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[422,425,430,435],{"title":41,"path":423,"stem":424,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":426,"path":427,"stem":428,"icon":429},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":431,"path":432,"stem":433,"icon":434},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":436,"path":437,"stem":438,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":440,"path":441,"stem":442,"icon":443},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":445,"path":446,"stem":447,"icon":448},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":450,"path":451,"stem":452,"icon":434},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":454,"icon":455,"path":456,"stem":457,"children":458,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[459,462,467,472,475],{"title":41,"path":460,"stem":461,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":463,"path":464,"stem":465,"icon":466},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":468,"path":469,"stem":470,"icon":471},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":436,"path":473,"stem":474,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":415,"path":476,"stem":477,"icon":478},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":480,"path":481,"stem":482,"children":483,"page":34},"Extend","\u002Fextend","6.extend",[484,488,493,498,502,507,511,515,519,523,528,533],{"title":41,"path":485,"stem":486,"icon":487},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":489,"path":490,"stem":491,"icon":492},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":494,"path":495,"stem":496,"icon":497},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":499,"path":500,"stem":501,"icon":492},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":503,"path":504,"stem":505,"icon":506},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":415,"path":508,"stem":509,"icon":510},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":512,"path":513,"stem":514,"icon":487},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":516,"path":517,"stem":518,"icon":443},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":520,"path":521,"stem":522,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":524,"path":525,"stem":526,"icon":527},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":529,"path":530,"stem":531,"icon":532},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":534,"path":535,"stem":536,"icon":537},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":436,"path":539,"stem":540,"children":541,"page":34},"\u002Freference","7.reference",[542,546,551,554,559,563,568,572],{"title":41,"path":543,"stem":544,"icon":545},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":547,"path":548,"stem":549,"icon":550},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":383,"path":552,"stem":553,"icon":112},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":555,"path":556,"stem":557,"icon":558},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":560,"path":561,"stem":562,"icon":388},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":564,"path":565,"stem":566,"icon":567},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":569,"path":570,"stem":571,"icon":443},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":573,"path":574,"stem":575,"icon":576},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":578,"path":579,"stem":580,"children":581,"page":34},"Compare","\u002Fcompare","8.compare",[582,586,590,594,598],{"title":583,"path":584,"stem":585,"icon":567},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":587,"path":588,"stem":589,"icon":204},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":591,"path":592,"stem":593,"icon":567},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":595,"path":596,"stem":597,"icon":567},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":599,"path":600,"stem":601,"icon":567},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":603,"title":604,"body":605,"description":4768,"extension":4769,"links":4770,"meta":4776,"navigation":4777,"path":402,"seo":4778,"stem":403,"__hash__":4779},"docs\u002F5.use-cases\u002F4.audit\u002F03.recording.md","Recording Events",{"type":606,"value":607,"toc":4753},"minimark",[608,612,620,629,859,862,868,874,1513,1520,1525,1892,1912,1918,1923,2089,2097,2103,2129,2513,2526,2624,2724,2735,2738,2789,2803,2807,2813,2890,2896,2909,2915,2921,2956,3624,3631,3637,3655,4709,4712,4749],[609,610,611],"p",{},"Five APIs cover every shape of audit recording: in-request, denied, standalone, auto-instrumented, and typed.",[613,614,616],"h2",{"id":615},"logaudit",[617,618,619],"code",{},"log.audit()",[609,621,622,624,625,628],{},[617,623,619],{}," is sugar over ",[617,626,627],{},"log.set({ audit: ... })"," plus tail-sample force-keep:",[630,631,636],"pre",{"className":632,"code":633,"language":634,"meta":635,"style":635},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","log.audit({\n  action: 'invoice.refund',\n  actor: { type: 'user', id: user.id },\n  target: { type: 'invoice', id: 'inv_889' },\n  outcome: 'success',\n})\n\n\u002F\u002F Strictly equivalent to:\nlog.set({ audit: { action: 'invoice.refund', \u002F* ... *\u002F, version: 1 } })\n","typescript","",[617,637,638,661,684,726,763,780,789,796,803],{"__ignoreMap":635},[639,640,643,647,651,655,658],"span",{"class":641,"line":642},"line",1,[639,644,646],{"class":645},"sTEyZ","log",[639,648,650],{"class":649},"sMK4o",".",[639,652,654],{"class":653},"s2Zo4","audit",[639,656,657],{"class":645},"(",[639,659,660],{"class":649},"{\n",[639,662,664,668,671,674,678,681],{"class":641,"line":663},2,[639,665,667],{"class":666},"swJcz","  action",[639,669,670],{"class":649},":",[639,672,673],{"class":649}," '",[639,675,677],{"class":676},"sfazB","invoice.refund",[639,679,680],{"class":649},"'",[639,682,683],{"class":649},",\n",[639,685,687,690,692,695,698,700,702,705,707,710,713,715,718,720,723],{"class":641,"line":686},3,[639,688,689],{"class":666},"  actor",[639,691,670],{"class":649},[639,693,694],{"class":649}," {",[639,696,697],{"class":666}," type",[639,699,670],{"class":649},[639,701,673],{"class":649},[639,703,704],{"class":676},"user",[639,706,680],{"class":649},[639,708,709],{"class":649},",",[639,711,712],{"class":666}," id",[639,714,670],{"class":649},[639,716,717],{"class":645}," user",[639,719,650],{"class":649},[639,721,722],{"class":645},"id ",[639,724,725],{"class":649},"},\n",[639,727,729,732,734,736,738,740,742,745,747,749,751,753,755,758,760],{"class":641,"line":728},4,[639,730,731],{"class":666},"  target",[639,733,670],{"class":649},[639,735,694],{"class":649},[639,737,697],{"class":666},[639,739,670],{"class":649},[639,741,673],{"class":649},[639,743,744],{"class":676},"invoice",[639,746,680],{"class":649},[639,748,709],{"class":649},[639,750,712],{"class":666},[639,752,670],{"class":649},[639,754,673],{"class":649},[639,756,757],{"class":676},"inv_889",[639,759,680],{"class":649},[639,761,762],{"class":649}," },\n",[639,764,766,769,771,773,776,778],{"class":641,"line":765},5,[639,767,768],{"class":666},"  outcome",[639,770,670],{"class":649},[639,772,673],{"class":649},[639,774,775],{"class":676},"success",[639,777,680],{"class":649},[639,779,683],{"class":649},[639,781,783,786],{"class":641,"line":782},6,[639,784,785],{"class":649},"}",[639,787,788],{"class":645},")\n",[639,790,792],{"class":641,"line":791},7,[639,793,795],{"emptyLinePlaceholder":794},true,"\n",[639,797,799],{"class":641,"line":798},8,[639,800,802],{"class":801},"sHwdD","\u002F\u002F Strictly equivalent to:\n",[639,804,806,808,810,813,815,818,821,823,825,828,830,832,834,836,838,841,843,846,848,852,855,857],{"class":641,"line":805},9,[639,807,646],{"class":645},[639,809,650],{"class":649},[639,811,812],{"class":653},"set",[639,814,657],{"class":645},[639,816,817],{"class":649},"{",[639,819,820],{"class":666}," audit",[639,822,670],{"class":649},[639,824,694],{"class":649},[639,826,827],{"class":666}," action",[639,829,670],{"class":649},[639,831,673],{"class":649},[639,833,677],{"class":676},[639,835,680],{"class":649},[639,837,709],{"class":649},[639,839,840],{"class":801}," \u002F* ... *\u002F",[639,842,709],{"class":649},[639,844,845],{"class":666}," version",[639,847,670],{"class":649},[639,849,851],{"class":850},"sbssI"," 1",[639,853,854],{"class":649}," }",[639,856,854],{"class":649},[639,858,788],{"class":645},[609,860,861],{},"This is the form you'll use most. The audit event lands on the same wide event as the rest of the request.",[613,863,865],{"id":864},"logauditdeny",[617,866,867],{},"log.audit.deny()",[609,869,870,873],{},[617,871,872],{},"log.audit.deny(reason, fields)"," records AuthZ-denied actions. Most teams forget to log denials, but they're exactly what auditors and security teams ask for:",[875,876,877,1068],"code-group",{},[630,878,881],{"className":632,"code":879,"filename":880,"language":634,"meta":635,"style":635},"if (!user.canRefund(invoice)) {\n  log.audit.deny('Insufficient permissions', {\n    action: 'invoice.refund',\n    actor: { type: 'user', id: user.id },\n    target: { type: 'invoice', id: invoice.id },\n  })\n  throw createError({ status: 403, message: 'Forbidden' })\n}\n","Input",[617,882,883,907,935,950,984,1018,1025,1063],{"__ignoreMap":635},[639,884,885,889,892,895,897,899,902,905],{"class":641,"line":642},[639,886,888],{"class":887},"s7zQu","if",[639,890,891],{"class":645}," (",[639,893,894],{"class":649},"!",[639,896,704],{"class":645},[639,898,650],{"class":649},[639,900,901],{"class":653},"canRefund",[639,903,904],{"class":645},"(invoice)) ",[639,906,660],{"class":649},[639,908,909,912,914,916,918,921,923,925,928,930,932],{"class":641,"line":663},[639,910,911],{"class":645},"  log",[639,913,650],{"class":649},[639,915,654],{"class":645},[639,917,650],{"class":649},[639,919,920],{"class":653},"deny",[639,922,657],{"class":666},[639,924,680],{"class":649},[639,926,927],{"class":676},"Insufficient permissions",[639,929,680],{"class":649},[639,931,709],{"class":649},[639,933,934],{"class":649}," {\n",[639,936,937,940,942,944,946,948],{"class":641,"line":686},[639,938,939],{"class":666},"    action",[639,941,670],{"class":649},[639,943,673],{"class":649},[639,945,677],{"class":676},[639,947,680],{"class":649},[639,949,683],{"class":649},[639,951,952,955,957,959,961,963,965,967,969,971,973,975,977,979,982],{"class":641,"line":728},[639,953,954],{"class":666},"    actor",[639,956,670],{"class":649},[639,958,694],{"class":649},[639,960,697],{"class":666},[639,962,670],{"class":649},[639,964,673],{"class":649},[639,966,704],{"class":676},[639,968,680],{"class":649},[639,970,709],{"class":649},[639,972,712],{"class":666},[639,974,670],{"class":649},[639,976,717],{"class":645},[639,978,650],{"class":649},[639,980,981],{"class":645},"id",[639,983,762],{"class":649},[639,985,986,989,991,993,995,997,999,1001,1003,1005,1007,1009,1012,1014,1016],{"class":641,"line":765},[639,987,988],{"class":666},"    target",[639,990,670],{"class":649},[639,992,694],{"class":649},[639,994,697],{"class":666},[639,996,670],{"class":649},[639,998,673],{"class":649},[639,1000,744],{"class":676},[639,1002,680],{"class":649},[639,1004,709],{"class":649},[639,1006,712],{"class":666},[639,1008,670],{"class":649},[639,1010,1011],{"class":645}," invoice",[639,1013,650],{"class":649},[639,1015,981],{"class":645},[639,1017,762],{"class":649},[639,1019,1020,1023],{"class":641,"line":782},[639,1021,1022],{"class":649},"  }",[639,1024,788],{"class":666},[639,1026,1027,1030,1033,1035,1037,1040,1042,1045,1047,1050,1052,1054,1057,1059,1061],{"class":641,"line":791},[639,1028,1029],{"class":887},"  throw",[639,1031,1032],{"class":653}," createError",[639,1034,657],{"class":666},[639,1036,817],{"class":649},[639,1038,1039],{"class":666}," status",[639,1041,670],{"class":649},[639,1043,1044],{"class":850}," 403",[639,1046,709],{"class":649},[639,1048,1049],{"class":666}," message",[639,1051,670],{"class":649},[639,1053,673],{"class":649},[639,1055,1056],{"class":676},"Forbidden",[639,1058,680],{"class":649},[639,1060,854],{"class":649},[639,1062,788],{"class":666},[639,1064,1065],{"class":641,"line":798},[639,1066,1067],{"class":649},"}\n",[630,1069,1074],{"className":1070,"code":1071,"filename":1072,"language":1073,"meta":635,"style":635},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"level\": \"warn\",\n  \"service\": \"billing-api\",\n  \"method\": \"POST\",\n  \"path\": \"\u002Fapi\u002Finvoices\u002Finv_889\u002Frefund\",\n  \"status\": 403,\n  \"duration\": \"12ms\",\n  \"durationMs\": 12,\n  \"requestId\": \"9c3f7d12-8a45-4e60-b8a9-1f0d4c5e6e7d\",\n  \"audit\": {\n    \"action\": \"invoice.refund\",\n    \"actor\": { \"type\": \"user\", \"id\": \"usr_intruder\" },\n    \"target\": { \"type\": \"invoice\", \"id\": \"inv_889\" },\n    \"outcome\": \"denied\",\n    \"reason\": \"Insufficient permissions\",\n    \"version\": 1,\n    \"idempotencyKey\": \"ak_d12c3a4f5b6e7d8c\",\n    \"context\": {\n      \"requestId\": \"9c3f7d12-8a45-4e60-b8a9-1f0d4c5e6e7d\",\n      \"ip\": \"203.0.113.7\"\n    }\n  }\n}\n","Output — denied","json",[617,1075,1076,1080,1104,1124,1144,1164,1179,1199,1215,1235,1248,1270,1318,1364,1385,1405,1421,1442,1456,1476,1496,1502,1508],{"__ignoreMap":635},[639,1077,1078],{"class":641,"line":642},[639,1079,660],{"class":649},[639,1081,1082,1085,1089,1092,1094,1097,1100,1102],{"class":641,"line":663},[639,1083,1084],{"class":649},"  \"",[639,1086,1088],{"class":1087},"spNyl","level",[639,1090,1091],{"class":649},"\"",[639,1093,670],{"class":649},[639,1095,1096],{"class":649}," \"",[639,1098,1099],{"class":676},"warn",[639,1101,1091],{"class":649},[639,1103,683],{"class":649},[639,1105,1106,1108,1111,1113,1115,1117,1120,1122],{"class":641,"line":686},[639,1107,1084],{"class":649},[639,1109,1110],{"class":1087},"service",[639,1112,1091],{"class":649},[639,1114,670],{"class":649},[639,1116,1096],{"class":649},[639,1118,1119],{"class":676},"billing-api",[639,1121,1091],{"class":649},[639,1123,683],{"class":649},[639,1125,1126,1128,1131,1133,1135,1137,1140,1142],{"class":641,"line":728},[639,1127,1084],{"class":649},[639,1129,1130],{"class":1087},"method",[639,1132,1091],{"class":649},[639,1134,670],{"class":649},[639,1136,1096],{"class":649},[639,1138,1139],{"class":676},"POST",[639,1141,1091],{"class":649},[639,1143,683],{"class":649},[639,1145,1146,1148,1151,1153,1155,1157,1160,1162],{"class":641,"line":765},[639,1147,1084],{"class":649},[639,1149,1150],{"class":1087},"path",[639,1152,1091],{"class":649},[639,1154,670],{"class":649},[639,1156,1096],{"class":649},[639,1158,1159],{"class":676},"\u002Fapi\u002Finvoices\u002Finv_889\u002Frefund",[639,1161,1091],{"class":649},[639,1163,683],{"class":649},[639,1165,1166,1168,1171,1173,1175,1177],{"class":641,"line":782},[639,1167,1084],{"class":649},[639,1169,1170],{"class":1087},"status",[639,1172,1091],{"class":649},[639,1174,670],{"class":649},[639,1176,1044],{"class":850},[639,1178,683],{"class":649},[639,1180,1181,1183,1186,1188,1190,1192,1195,1197],{"class":641,"line":791},[639,1182,1084],{"class":649},[639,1184,1185],{"class":1087},"duration",[639,1187,1091],{"class":649},[639,1189,670],{"class":649},[639,1191,1096],{"class":649},[639,1193,1194],{"class":676},"12ms",[639,1196,1091],{"class":649},[639,1198,683],{"class":649},[639,1200,1201,1203,1206,1208,1210,1213],{"class":641,"line":798},[639,1202,1084],{"class":649},[639,1204,1205],{"class":1087},"durationMs",[639,1207,1091],{"class":649},[639,1209,670],{"class":649},[639,1211,1212],{"class":850}," 12",[639,1214,683],{"class":649},[639,1216,1217,1219,1222,1224,1226,1228,1231,1233],{"class":641,"line":805},[639,1218,1084],{"class":649},[639,1220,1221],{"class":1087},"requestId",[639,1223,1091],{"class":649},[639,1225,670],{"class":649},[639,1227,1096],{"class":649},[639,1229,1230],{"class":676},"9c3f7d12-8a45-4e60-b8a9-1f0d4c5e6e7d",[639,1232,1091],{"class":649},[639,1234,683],{"class":649},[639,1236,1238,1240,1242,1244,1246],{"class":641,"line":1237},10,[639,1239,1084],{"class":649},[639,1241,654],{"class":1087},[639,1243,1091],{"class":649},[639,1245,670],{"class":649},[639,1247,934],{"class":649},[639,1249,1251,1254,1258,1260,1262,1264,1266,1268],{"class":641,"line":1250},11,[639,1252,1253],{"class":649},"    \"",[639,1255,1257],{"class":1256},"sBMFI","action",[639,1259,1091],{"class":649},[639,1261,670],{"class":649},[639,1263,1096],{"class":649},[639,1265,677],{"class":676},[639,1267,1091],{"class":649},[639,1269,683],{"class":649},[639,1271,1273,1275,1278,1280,1282,1284,1286,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1314,1316],{"class":641,"line":1272},12,[639,1274,1253],{"class":649},[639,1276,1277],{"class":1256},"actor",[639,1279,1091],{"class":649},[639,1281,670],{"class":649},[639,1283,694],{"class":649},[639,1285,1096],{"class":649},[639,1287,1288],{"class":850},"type",[639,1290,1091],{"class":649},[639,1292,670],{"class":649},[639,1294,1096],{"class":649},[639,1296,704],{"class":676},[639,1298,1091],{"class":649},[639,1300,709],{"class":649},[639,1302,1096],{"class":649},[639,1304,981],{"class":850},[639,1306,1091],{"class":649},[639,1308,670],{"class":649},[639,1310,1096],{"class":649},[639,1312,1313],{"class":676},"usr_intruder",[639,1315,1091],{"class":649},[639,1317,762],{"class":649},[639,1319,1321,1323,1326,1328,1330,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362],{"class":641,"line":1320},13,[639,1322,1253],{"class":649},[639,1324,1325],{"class":1256},"target",[639,1327,1091],{"class":649},[639,1329,670],{"class":649},[639,1331,694],{"class":649},[639,1333,1096],{"class":649},[639,1335,1288],{"class":850},[639,1337,1091],{"class":649},[639,1339,670],{"class":649},[639,1341,1096],{"class":649},[639,1343,744],{"class":676},[639,1345,1091],{"class":649},[639,1347,709],{"class":649},[639,1349,1096],{"class":649},[639,1351,981],{"class":850},[639,1353,1091],{"class":649},[639,1355,670],{"class":649},[639,1357,1096],{"class":649},[639,1359,757],{"class":676},[639,1361,1091],{"class":649},[639,1363,762],{"class":649},[639,1365,1367,1369,1372,1374,1376,1378,1381,1383],{"class":641,"line":1366},14,[639,1368,1253],{"class":649},[639,1370,1371],{"class":1256},"outcome",[639,1373,1091],{"class":649},[639,1375,670],{"class":649},[639,1377,1096],{"class":649},[639,1379,1380],{"class":676},"denied",[639,1382,1091],{"class":649},[639,1384,683],{"class":649},[639,1386,1388,1390,1393,1395,1397,1399,1401,1403],{"class":641,"line":1387},15,[639,1389,1253],{"class":649},[639,1391,1392],{"class":1256},"reason",[639,1394,1091],{"class":649},[639,1396,670],{"class":649},[639,1398,1096],{"class":649},[639,1400,927],{"class":676},[639,1402,1091],{"class":649},[639,1404,683],{"class":649},[639,1406,1408,1410,1413,1415,1417,1419],{"class":641,"line":1407},16,[639,1409,1253],{"class":649},[639,1411,1412],{"class":1256},"version",[639,1414,1091],{"class":649},[639,1416,670],{"class":649},[639,1418,851],{"class":850},[639,1420,683],{"class":649},[639,1422,1424,1426,1429,1431,1433,1435,1438,1440],{"class":641,"line":1423},17,[639,1425,1253],{"class":649},[639,1427,1428],{"class":1256},"idempotencyKey",[639,1430,1091],{"class":649},[639,1432,670],{"class":649},[639,1434,1096],{"class":649},[639,1436,1437],{"class":676},"ak_d12c3a4f5b6e7d8c",[639,1439,1091],{"class":649},[639,1441,683],{"class":649},[639,1443,1445,1447,1450,1452,1454],{"class":641,"line":1444},18,[639,1446,1253],{"class":649},[639,1448,1449],{"class":1256},"context",[639,1451,1091],{"class":649},[639,1453,670],{"class":649},[639,1455,934],{"class":649},[639,1457,1459,1462,1464,1466,1468,1470,1472,1474],{"class":641,"line":1458},19,[639,1460,1461],{"class":649},"      \"",[639,1463,1221],{"class":850},[639,1465,1091],{"class":649},[639,1467,670],{"class":649},[639,1469,1096],{"class":649},[639,1471,1230],{"class":676},[639,1473,1091],{"class":649},[639,1475,683],{"class":649},[639,1477,1479,1481,1484,1486,1488,1490,1493],{"class":641,"line":1478},20,[639,1480,1461],{"class":649},[639,1482,1483],{"class":850},"ip",[639,1485,1091],{"class":649},[639,1487,670],{"class":649},[639,1489,1096],{"class":649},[639,1491,1492],{"class":676},"203.0.113.7",[639,1494,1495],{"class":649},"\"\n",[639,1497,1499],{"class":641,"line":1498},21,[639,1500,1501],{"class":649},"    }\n",[639,1503,1505],{"class":641,"line":1504},22,[639,1506,1507],{"class":649},"  }\n",[639,1509,1511],{"class":641,"line":1510},23,[639,1512,1067],{"class":649},[613,1514,1516,1517],{"id":1515},"standalone-audit","Standalone ",[617,1518,1519],{},"audit()",[609,1521,1522,1523,670],{},"For non-request contexts (jobs, scripts, CLIs), use the standalone ",[617,1524,1519],{},[875,1526,1527,1670],{},[630,1528,1531],{"className":632,"code":1529,"filename":1530,"language":634,"meta":635,"style":635},"import { audit } from 'evlog'\n\naudit({\n  action: 'cron.cleanup',\n  actor: { type: 'system', id: 'cron' },\n  target: { type: 'job', id: 'cleanup-stale-sessions' },\n  outcome: 'success',\n})\n","scripts\u002Fcleanup.ts",[617,1532,1533,1555,1559,1567,1582,1616,1650,1664],{"__ignoreMap":635},[639,1534,1535,1538,1540,1542,1544,1547,1549,1552],{"class":641,"line":642},[639,1536,1537],{"class":887},"import",[639,1539,694],{"class":649},[639,1541,820],{"class":645},[639,1543,854],{"class":649},[639,1545,1546],{"class":887}," from",[639,1548,673],{"class":649},[639,1550,1551],{"class":676},"evlog",[639,1553,1554],{"class":649},"'\n",[639,1556,1557],{"class":641,"line":663},[639,1558,795],{"emptyLinePlaceholder":794},[639,1560,1561,1563,1565],{"class":641,"line":686},[639,1562,654],{"class":653},[639,1564,657],{"class":645},[639,1566,660],{"class":649},[639,1568,1569,1571,1573,1575,1578,1580],{"class":641,"line":728},[639,1570,667],{"class":666},[639,1572,670],{"class":649},[639,1574,673],{"class":649},[639,1576,1577],{"class":676},"cron.cleanup",[639,1579,680],{"class":649},[639,1581,683],{"class":649},[639,1583,1584,1586,1588,1590,1592,1594,1596,1599,1601,1603,1605,1607,1609,1612,1614],{"class":641,"line":765},[639,1585,689],{"class":666},[639,1587,670],{"class":649},[639,1589,694],{"class":649},[639,1591,697],{"class":666},[639,1593,670],{"class":649},[639,1595,673],{"class":649},[639,1597,1598],{"class":676},"system",[639,1600,680],{"class":649},[639,1602,709],{"class":649},[639,1604,712],{"class":666},[639,1606,670],{"class":649},[639,1608,673],{"class":649},[639,1610,1611],{"class":676},"cron",[639,1613,680],{"class":649},[639,1615,762],{"class":649},[639,1617,1618,1620,1622,1624,1626,1628,1630,1633,1635,1637,1639,1641,1643,1646,1648],{"class":641,"line":782},[639,1619,731],{"class":666},[639,1621,670],{"class":649},[639,1623,694],{"class":649},[639,1625,697],{"class":666},[639,1627,670],{"class":649},[639,1629,673],{"class":649},[639,1631,1632],{"class":676},"job",[639,1634,680],{"class":649},[639,1636,709],{"class":649},[639,1638,712],{"class":666},[639,1640,670],{"class":649},[639,1642,673],{"class":649},[639,1644,1645],{"class":676},"cleanup-stale-sessions",[639,1647,680],{"class":649},[639,1649,762],{"class":649},[639,1651,1652,1654,1656,1658,1660,1662],{"class":641,"line":791},[639,1653,768],{"class":666},[639,1655,670],{"class":649},[639,1657,673],{"class":649},[639,1659,775],{"class":676},[639,1661,680],{"class":649},[639,1663,683],{"class":649},[639,1665,1666,1668],{"class":641,"line":798},[639,1667,785],{"class":649},[639,1669,788],{"class":645},[630,1671,1674],{"className":1070,"code":1672,"filename":1673,"language":1073,"meta":635,"style":635},"{\n  \"level\": \"info\",\n  \"service\": \"billing-api\",\n  \"audit\": {\n    \"action\": \"cron.cleanup\",\n    \"actor\": { \"type\": \"system\", \"id\": \"cron\" },\n    \"target\": { \"type\": \"job\", \"id\": \"cleanup-stale-sessions\" },\n    \"outcome\": \"success\",\n    \"version\": 1,\n    \"idempotencyKey\": \"ak_2b8e1f9d4c6a7b3e\"\n  }\n}\n","Output — wide event",[617,1675,1676,1680,1699,1717,1729,1747,1791,1835,1853,1867,1884,1888],{"__ignoreMap":635},[639,1677,1678],{"class":641,"line":642},[639,1679,660],{"class":649},[639,1681,1682,1684,1686,1688,1690,1692,1695,1697],{"class":641,"line":663},[639,1683,1084],{"class":649},[639,1685,1088],{"class":1087},[639,1687,1091],{"class":649},[639,1689,670],{"class":649},[639,1691,1096],{"class":649},[639,1693,1694],{"class":676},"info",[639,1696,1091],{"class":649},[639,1698,683],{"class":649},[639,1700,1701,1703,1705,1707,1709,1711,1713,1715],{"class":641,"line":686},[639,1702,1084],{"class":649},[639,1704,1110],{"class":1087},[639,1706,1091],{"class":649},[639,1708,670],{"class":649},[639,1710,1096],{"class":649},[639,1712,1119],{"class":676},[639,1714,1091],{"class":649},[639,1716,683],{"class":649},[639,1718,1719,1721,1723,1725,1727],{"class":641,"line":728},[639,1720,1084],{"class":649},[639,1722,654],{"class":1087},[639,1724,1091],{"class":649},[639,1726,670],{"class":649},[639,1728,934],{"class":649},[639,1730,1731,1733,1735,1737,1739,1741,1743,1745],{"class":641,"line":765},[639,1732,1253],{"class":649},[639,1734,1257],{"class":1256},[639,1736,1091],{"class":649},[639,1738,670],{"class":649},[639,1740,1096],{"class":649},[639,1742,1577],{"class":676},[639,1744,1091],{"class":649},[639,1746,683],{"class":649},[639,1748,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1781,1783,1785,1787,1789],{"class":641,"line":782},[639,1750,1253],{"class":649},[639,1752,1277],{"class":1256},[639,1754,1091],{"class":649},[639,1756,670],{"class":649},[639,1758,694],{"class":649},[639,1760,1096],{"class":649},[639,1762,1288],{"class":850},[639,1764,1091],{"class":649},[639,1766,670],{"class":649},[639,1768,1096],{"class":649},[639,1770,1598],{"class":676},[639,1772,1091],{"class":649},[639,1774,709],{"class":649},[639,1776,1096],{"class":649},[639,1778,981],{"class":850},[639,1780,1091],{"class":649},[639,1782,670],{"class":649},[639,1784,1096],{"class":649},[639,1786,1611],{"class":676},[639,1788,1091],{"class":649},[639,1790,762],{"class":649},[639,1792,1793,1795,1797,1799,1801,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821,1823,1825,1827,1829,1831,1833],{"class":641,"line":791},[639,1794,1253],{"class":649},[639,1796,1325],{"class":1256},[639,1798,1091],{"class":649},[639,1800,670],{"class":649},[639,1802,694],{"class":649},[639,1804,1096],{"class":649},[639,1806,1288],{"class":850},[639,1808,1091],{"class":649},[639,1810,670],{"class":649},[639,1812,1096],{"class":649},[639,1814,1632],{"class":676},[639,1816,1091],{"class":649},[639,1818,709],{"class":649},[639,1820,1096],{"class":649},[639,1822,981],{"class":850},[639,1824,1091],{"class":649},[639,1826,670],{"class":649},[639,1828,1096],{"class":649},[639,1830,1645],{"class":676},[639,1832,1091],{"class":649},[639,1834,762],{"class":649},[639,1836,1837,1839,1841,1843,1845,1847,1849,1851],{"class":641,"line":798},[639,1838,1253],{"class":649},[639,1840,1371],{"class":1256},[639,1842,1091],{"class":649},[639,1844,670],{"class":649},[639,1846,1096],{"class":649},[639,1848,775],{"class":676},[639,1850,1091],{"class":649},[639,1852,683],{"class":649},[639,1854,1855,1857,1859,1861,1863,1865],{"class":641,"line":805},[639,1856,1253],{"class":649},[639,1858,1412],{"class":1256},[639,1860,1091],{"class":649},[639,1862,670],{"class":649},[639,1864,851],{"class":850},[639,1866,683],{"class":649},[639,1868,1869,1871,1873,1875,1877,1879,1882],{"class":641,"line":1237},[639,1870,1253],{"class":649},[639,1872,1428],{"class":1256},[639,1874,1091],{"class":649},[639,1876,670],{"class":649},[639,1878,1096],{"class":649},[639,1880,1881],{"class":676},"ak_2b8e1f9d4c6a7b3e",[639,1883,1495],{"class":649},[639,1885,1886],{"class":641,"line":1250},[639,1887,1507],{"class":649},[639,1889,1890],{"class":641,"line":1272},[639,1891,1067],{"class":649},[1893,1894,1516,1895,1897,1898,1900,1901,1900,1904,1907,1908,1911],"note",{},[617,1896,1519],{}," events have no ",[617,1899,1221],{},", no ",[617,1902,1903],{},"context.ip",[617,1905,1906],{},"userAgent",", because there is no request to enrich from. Add your own context manually (",[617,1909,1910],{},"context: { jobId, queue, runId }",") when it matters for forensics.",[613,1913,1915],{"id":1914},"defineauditaction",[617,1916,1917],{},"defineAuditAction()",[609,1919,1920,1921,670],{},"Define audit actions in one place to avoid magic strings and get full type-safety on ",[617,1922,1325],{},[630,1924,1926],{"className":632,"code":1925,"language":634,"meta":635,"style":635},"import { defineAuditAction } from 'evlog'\n\nconst refund = defineAuditAction('invoice.refund', { target: 'invoice' })\n\nlog.audit(refund({\n  actor: { type: 'user', id: user.id },\n  target: { id: 'inv_889' }, \u002F\u002F type inferred as 'invoice'\n  outcome: 'success',\n}))\n",[617,1927,1928,1947,1951,1991,1995,2012,2044,2068,2082],{"__ignoreMap":635},[639,1929,1930,1932,1934,1937,1939,1941,1943,1945],{"class":641,"line":642},[639,1931,1537],{"class":887},[639,1933,694],{"class":649},[639,1935,1936],{"class":645}," defineAuditAction",[639,1938,854],{"class":649},[639,1940,1546],{"class":887},[639,1942,673],{"class":649},[639,1944,1551],{"class":676},[639,1946,1554],{"class":649},[639,1948,1949],{"class":641,"line":663},[639,1950,795],{"emptyLinePlaceholder":794},[639,1952,1953,1956,1959,1962,1964,1966,1968,1970,1972,1974,1976,1979,1981,1983,1985,1987,1989],{"class":641,"line":686},[639,1954,1955],{"class":1087},"const",[639,1957,1958],{"class":645}," refund ",[639,1960,1961],{"class":649},"=",[639,1963,1936],{"class":653},[639,1965,657],{"class":645},[639,1967,680],{"class":649},[639,1969,677],{"class":676},[639,1971,680],{"class":649},[639,1973,709],{"class":649},[639,1975,694],{"class":649},[639,1977,1978],{"class":666}," target",[639,1980,670],{"class":649},[639,1982,673],{"class":649},[639,1984,744],{"class":676},[639,1986,680],{"class":649},[639,1988,854],{"class":649},[639,1990,788],{"class":645},[639,1992,1993],{"class":641,"line":728},[639,1994,795],{"emptyLinePlaceholder":794},[639,1996,1997,1999,2001,2003,2005,2008,2010],{"class":641,"line":765},[639,1998,646],{"class":645},[639,2000,650],{"class":649},[639,2002,654],{"class":653},[639,2004,657],{"class":645},[639,2006,2007],{"class":653},"refund",[639,2009,657],{"class":645},[639,2011,660],{"class":649},[639,2013,2014,2016,2018,2020,2022,2024,2026,2028,2030,2032,2034,2036,2038,2040,2042],{"class":641,"line":782},[639,2015,689],{"class":666},[639,2017,670],{"class":649},[639,2019,694],{"class":649},[639,2021,697],{"class":666},[639,2023,670],{"class":649},[639,2025,673],{"class":649},[639,2027,704],{"class":676},[639,2029,680],{"class":649},[639,2031,709],{"class":649},[639,2033,712],{"class":666},[639,2035,670],{"class":649},[639,2037,717],{"class":645},[639,2039,650],{"class":649},[639,2041,722],{"class":645},[639,2043,725],{"class":649},[639,2045,2046,2048,2050,2052,2054,2056,2058,2060,2062,2065],{"class":641,"line":791},[639,2047,731],{"class":666},[639,2049,670],{"class":649},[639,2051,694],{"class":649},[639,2053,712],{"class":666},[639,2055,670],{"class":649},[639,2057,673],{"class":649},[639,2059,757],{"class":676},[639,2061,680],{"class":649},[639,2063,2064],{"class":649}," },",[639,2066,2067],{"class":801}," \u002F\u002F type inferred as 'invoice'\n",[639,2069,2070,2072,2074,2076,2078,2080],{"class":641,"line":798},[639,2071,768],{"class":666},[639,2073,670],{"class":649},[639,2075,673],{"class":649},[639,2077,775],{"class":676},[639,2079,680],{"class":649},[639,2081,683],{"class":649},[639,2083,2084,2086],{"class":641,"line":805},[639,2085,785],{"class":649},[639,2087,2088],{"class":645},"))\n",[609,2090,2091,2092,650],{},"Pair this with the action dictionary from ",[2093,2094,2096],"a",{"href":2095},"\u002Fuse-cases\u002Faudit\u002Fschema#action-naming","Schema → Action naming",[613,2098,2100],{"id":2099},"defineauditcatalog",[617,2101,2102],{},"defineAuditCatalog()",[609,2104,2105,2106,2110,2111,2114,2115,2118,2119,2122,2123,2125,2126,650],{},"For more than a handful of actions, group them in a typed ",[2107,2108,2109],"strong",{},"catalog"," instead of declaring ",[617,2112,2113],{},"defineAuditAction"," one-by-one. Same convention as error catalogs: ",[617,2116,2117],{},"UPPER_SNAKE_CASE"," keys, ",[617,2120,2121],{},"lower.dot.case"," prefix, wire ",[617,2124,1257],{}," is ",[617,2127,2128],{},"${prefix}.${KEY}",[875,2130,2131,2389],{},[630,2132,2135],{"className":632,"code":2133,"filename":2134,"language":634,"meta":635,"style":635},"import { defineAuditCatalog } from 'evlog'\n\nexport const billingAudit = defineAuditCatalog('billing', {\n  INVOICE_REFUND: {\n    target: 'invoice',\n    severity: 'high',\n    requiresChanges: true,\n    description: 'Refund an invoice to the customer',\n    redactPaths: ['cardNumber'],\n  },\n  INVOICE_CREATE:      { target: 'invoice' },\n  INVOICE_VOID:        { target: 'invoice', severity: 'high', requiresReason: true },\n  SUBSCRIPTION_CANCEL: { target: 'subscription', severity: 'high' },\n})\n","audit\u002Fbilling.ts",[617,2136,2137,2156,2160,2188,2197,2211,2227,2240,2256,2278,2283,2305,2349,2383],{"__ignoreMap":635},[639,2138,2139,2141,2143,2146,2148,2150,2152,2154],{"class":641,"line":642},[639,2140,1537],{"class":887},[639,2142,694],{"class":649},[639,2144,2145],{"class":645}," defineAuditCatalog",[639,2147,854],{"class":649},[639,2149,1546],{"class":887},[639,2151,673],{"class":649},[639,2153,1551],{"class":676},[639,2155,1554],{"class":649},[639,2157,2158],{"class":641,"line":663},[639,2159,795],{"emptyLinePlaceholder":794},[639,2161,2162,2165,2168,2171,2173,2175,2177,2179,2182,2184,2186],{"class":641,"line":686},[639,2163,2164],{"class":887},"export",[639,2166,2167],{"class":1087}," const",[639,2169,2170],{"class":645}," billingAudit ",[639,2172,1961],{"class":649},[639,2174,2145],{"class":653},[639,2176,657],{"class":645},[639,2178,680],{"class":649},[639,2180,2181],{"class":676},"billing",[639,2183,680],{"class":649},[639,2185,709],{"class":649},[639,2187,934],{"class":649},[639,2189,2190,2193,2195],{"class":641,"line":728},[639,2191,2192],{"class":666},"  INVOICE_REFUND",[639,2194,670],{"class":649},[639,2196,934],{"class":649},[639,2198,2199,2201,2203,2205,2207,2209],{"class":641,"line":765},[639,2200,988],{"class":666},[639,2202,670],{"class":649},[639,2204,673],{"class":649},[639,2206,744],{"class":676},[639,2208,680],{"class":649},[639,2210,683],{"class":649},[639,2212,2213,2216,2218,2220,2223,2225],{"class":641,"line":782},[639,2214,2215],{"class":666},"    severity",[639,2217,670],{"class":649},[639,2219,673],{"class":649},[639,2221,2222],{"class":676},"high",[639,2224,680],{"class":649},[639,2226,683],{"class":649},[639,2228,2229,2232,2234,2238],{"class":641,"line":791},[639,2230,2231],{"class":666},"    requiresChanges",[639,2233,670],{"class":649},[639,2235,2237],{"class":2236},"sfNiH"," true",[639,2239,683],{"class":649},[639,2241,2242,2245,2247,2249,2252,2254],{"class":641,"line":798},[639,2243,2244],{"class":666},"    description",[639,2246,670],{"class":649},[639,2248,673],{"class":649},[639,2250,2251],{"class":676},"Refund an invoice to the customer",[639,2253,680],{"class":649},[639,2255,683],{"class":649},[639,2257,2258,2261,2263,2266,2268,2271,2273,2276],{"class":641,"line":805},[639,2259,2260],{"class":666},"    redactPaths",[639,2262,670],{"class":649},[639,2264,2265],{"class":645}," [",[639,2267,680],{"class":649},[639,2269,2270],{"class":676},"cardNumber",[639,2272,680],{"class":649},[639,2274,2275],{"class":645},"]",[639,2277,683],{"class":649},[639,2279,2280],{"class":641,"line":1237},[639,2281,2282],{"class":649},"  },\n",[639,2284,2285,2288,2290,2293,2295,2297,2299,2301,2303],{"class":641,"line":1250},[639,2286,2287],{"class":666},"  INVOICE_CREATE",[639,2289,670],{"class":649},[639,2291,2292],{"class":649},"      {",[639,2294,1978],{"class":666},[639,2296,670],{"class":649},[639,2298,673],{"class":649},[639,2300,744],{"class":676},[639,2302,680],{"class":649},[639,2304,762],{"class":649},[639,2306,2307,2310,2312,2315,2317,2319,2321,2323,2325,2327,2330,2332,2334,2336,2338,2340,2343,2345,2347],{"class":641,"line":1272},[639,2308,2309],{"class":666},"  INVOICE_VOID",[639,2311,670],{"class":649},[639,2313,2314],{"class":649},"        {",[639,2316,1978],{"class":666},[639,2318,670],{"class":649},[639,2320,673],{"class":649},[639,2322,744],{"class":676},[639,2324,680],{"class":649},[639,2326,709],{"class":649},[639,2328,2329],{"class":666}," severity",[639,2331,670],{"class":649},[639,2333,673],{"class":649},[639,2335,2222],{"class":676},[639,2337,680],{"class":649},[639,2339,709],{"class":649},[639,2341,2342],{"class":666}," requiresReason",[639,2344,670],{"class":649},[639,2346,2237],{"class":2236},[639,2348,762],{"class":649},[639,2350,2351,2354,2356,2358,2360,2362,2364,2367,2369,2371,2373,2375,2377,2379,2381],{"class":641,"line":1320},[639,2352,2353],{"class":666},"  SUBSCRIPTION_CANCEL",[639,2355,670],{"class":649},[639,2357,694],{"class":649},[639,2359,1978],{"class":666},[639,2361,670],{"class":649},[639,2363,673],{"class":649},[639,2365,2366],{"class":676},"subscription",[639,2368,680],{"class":649},[639,2370,709],{"class":649},[639,2372,2329],{"class":666},[639,2374,670],{"class":649},[639,2376,673],{"class":649},[639,2378,2222],{"class":676},[639,2380,680],{"class":649},[639,2382,762],{"class":649},[639,2384,2385,2387],{"class":641,"line":1366},[639,2386,785],{"class":649},[639,2388,788],{"class":645},[630,2390,2393],{"className":632,"code":2391,"filename":2392,"language":634,"meta":635,"style":635},"import { billingAudit } from '~\u002Faudit\u002Fbilling'\n\nlog.audit(billingAudit.INVOICE_REFUND({\n  actor: { type: 'user', id: user.id },\n  target: { id: 'inv_889' }, \u002F\u002F type inferred as 'invoice'\n  outcome: 'success',\n}))\n","server\u002Fapi\u002Frefund.post.ts",[617,2394,2395,2415,2419,2439,2471,2493,2507],{"__ignoreMap":635},[639,2396,2397,2399,2401,2404,2406,2408,2410,2413],{"class":641,"line":642},[639,2398,1537],{"class":887},[639,2400,694],{"class":649},[639,2402,2403],{"class":645}," billingAudit",[639,2405,854],{"class":649},[639,2407,1546],{"class":887},[639,2409,673],{"class":649},[639,2411,2412],{"class":676},"~\u002Faudit\u002Fbilling",[639,2414,1554],{"class":649},[639,2416,2417],{"class":641,"line":663},[639,2418,795],{"emptyLinePlaceholder":794},[639,2420,2421,2423,2425,2427,2430,2432,2435,2437],{"class":641,"line":686},[639,2422,646],{"class":645},[639,2424,650],{"class":649},[639,2426,654],{"class":653},[639,2428,2429],{"class":645},"(billingAudit",[639,2431,650],{"class":649},[639,2433,2434],{"class":653},"INVOICE_REFUND",[639,2436,657],{"class":645},[639,2438,660],{"class":649},[639,2440,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469],{"class":641,"line":728},[639,2442,689],{"class":666},[639,2444,670],{"class":649},[639,2446,694],{"class":649},[639,2448,697],{"class":666},[639,2450,670],{"class":649},[639,2452,673],{"class":649},[639,2454,704],{"class":676},[639,2456,680],{"class":649},[639,2458,709],{"class":649},[639,2460,712],{"class":666},[639,2462,670],{"class":649},[639,2464,717],{"class":645},[639,2466,650],{"class":649},[639,2468,722],{"class":645},[639,2470,725],{"class":649},[639,2472,2473,2475,2477,2479,2481,2483,2485,2487,2489,2491],{"class":641,"line":765},[639,2474,731],{"class":666},[639,2476,670],{"class":649},[639,2478,694],{"class":649},[639,2480,712],{"class":666},[639,2482,670],{"class":649},[639,2484,673],{"class":649},[639,2486,757],{"class":676},[639,2488,680],{"class":649},[639,2490,2064],{"class":649},[639,2492,2067],{"class":801},[639,2494,2495,2497,2499,2501,2503,2505],{"class":641,"line":782},[639,2496,768],{"class":666},[639,2498,670],{"class":649},[639,2500,673],{"class":649},[639,2502,775],{"class":676},[639,2504,680],{"class":649},[639,2506,683],{"class":649},[639,2508,2509,2511],{"class":641,"line":791},[639,2510,785],{"class":649},[639,2512,2088],{"class":645},[609,2514,2515,2516,2518,2519,2522,2523,670],{},"Each entry produces a thin wrapper around ",[617,2517,2113],{}," (target type is fixed at definition time, action name is auto-prefixed). Catalog metadata is exposed on each factory and on ",[617,2520,2521],{},"_actions"," \u002F ",[617,2524,2525],{},"_prefix",[630,2527,2529],{"className":632,"code":2528,"language":634,"meta":635,"style":635},"billingAudit.INVOICE_REFUND.action           \u002F\u002F 'billing.INVOICE_REFUND' (literal type)\nbillingAudit.INVOICE_REFUND.target           \u002F\u002F 'invoice'\nbillingAudit.INVOICE_REFUND.severity         \u002F\u002F 'high'\nbillingAudit.INVOICE_REFUND.requiresChanges \u002F\u002F true\nbillingAudit.INVOICE_REFUND.redactPaths      \u002F\u002F ['cardNumber']\nbillingAudit._actions                        \u002F\u002F readonly ['billing.INVOICE_REFUND', ...]\n",[617,2530,2531,2548,2564,2580,2596,2612],{"__ignoreMap":635},[639,2532,2533,2536,2538,2540,2542,2545],{"class":641,"line":642},[639,2534,2535],{"class":645},"billingAudit",[639,2537,650],{"class":649},[639,2539,2434],{"class":645},[639,2541,650],{"class":649},[639,2543,2544],{"class":645},"action           ",[639,2546,2547],{"class":801},"\u002F\u002F 'billing.INVOICE_REFUND' (literal type)\n",[639,2549,2550,2552,2554,2556,2558,2561],{"class":641,"line":663},[639,2551,2535],{"class":645},[639,2553,650],{"class":649},[639,2555,2434],{"class":645},[639,2557,650],{"class":649},[639,2559,2560],{"class":645},"target           ",[639,2562,2563],{"class":801},"\u002F\u002F 'invoice'\n",[639,2565,2566,2568,2570,2572,2574,2577],{"class":641,"line":686},[639,2567,2535],{"class":645},[639,2569,650],{"class":649},[639,2571,2434],{"class":645},[639,2573,650],{"class":649},[639,2575,2576],{"class":645},"severity         ",[639,2578,2579],{"class":801},"\u002F\u002F 'high'\n",[639,2581,2582,2584,2586,2588,2590,2593],{"class":641,"line":728},[639,2583,2535],{"class":645},[639,2585,650],{"class":649},[639,2587,2434],{"class":645},[639,2589,650],{"class":649},[639,2591,2592],{"class":645},"requiresChanges ",[639,2594,2595],{"class":801},"\u002F\u002F true\n",[639,2597,2598,2600,2602,2604,2606,2609],{"class":641,"line":765},[639,2599,2535],{"class":645},[639,2601,650],{"class":649},[639,2603,2434],{"class":645},[639,2605,650],{"class":649},[639,2607,2608],{"class":645},"redactPaths      ",[639,2610,2611],{"class":801},"\u002F\u002F ['cardNumber']\n",[639,2613,2614,2616,2618,2621],{"class":641,"line":782},[639,2615,2535],{"class":645},[639,2617,650],{"class":649},[639,2619,2620],{"class":645},"_actions                        ",[639,2622,2623],{"class":801},"\u002F\u002F readonly ['billing.INVOICE_REFUND', ...]\n",[2625,2626,2627,2640],"table",{},[2628,2629,2630],"thead",{},[2631,2632,2633,2637],"tr",{},[2634,2635,2636],"th",{},"Entry field",[2634,2638,2639],{},"Purpose",[2641,2642,2643,2657,2667,2680,2698,2710],"tbody",{},[2631,2644,2645,2650],{},[2646,2647,2648],"td",{},[617,2649,1325],{},[2646,2651,2652,2653,2656],{},"Default ",[617,2654,2655],{},"target.type"," injected at call sites",[2631,2658,2659,2664],{},[2646,2660,2661],{},[617,2662,2663],{},"description",[2646,2665,2666],{},"Human-readable label for docs, SIEM rules, review tooling",[2631,2668,2669,2674],{},[2646,2670,2671],{},[617,2672,2673],{},"severity",[2646,2675,2676,2679],{},[617,2677,2678],{},"'low' | 'medium' | 'high' | 'critical'"," — alerting and review priority",[2631,2681,2682,2687],{},[2646,2683,2684],{},[617,2685,2686],{},"requiresChanges",[2646,2688,2689,2690,2693,2694,2697],{},"Document that callers should attach ",[617,2691,2692],{},"changes"," (e.g. via ",[617,2695,2696],{},"auditDiff",")",[2631,2699,2700,2705],{},[2646,2701,2702],{},[617,2703,2704],{},"requiresReason",[2646,2706,2689,2707,2709],{},[617,2708,1392],{}," (especially denials)",[2631,2711,2712,2717],{},[2646,2713,2714],{},[617,2715,2716],{},"redactPaths",[2646,2718,2719,2720,2723],{},"Default paths for ",[617,2721,2722],{},"auditDiff({ redactPaths: [...] })"," on this action",[2725,2726,2728,2730,2731,2734],"h3",{"id":2727},"defineauditaction-vs-defineauditcatalog-when-to-choose",[617,2729,2113],{}," vs ",[617,2732,2733],{},"defineAuditCatalog",": when to choose",[609,2736,2737],{},"Both produce the same call-site factory shape. Pick by scale:",[2739,2740,2741,2757],"ul",{},[2742,2743,2744,2749,2750,2753,2754,2756],"li",{},[2107,2745,2746],{},[617,2747,2748],{},"defineAuditAction(action, opts?)",": one-off actions, or per-file organisation in very large repos. Mirrors ",[617,2751,2752],{},"defineError",". Equivalent to a catalog with a single entry but with no prefix derivation: you write the full wire ",[617,2755,1257],{}," directly.",[2742,2758,2759,2764,2765,2768,2769,2771,2772,2774,2775,2777,2778,2780,2781,2784,2785,2788],{},[2107,2760,2761],{},[617,2762,2763],{},"defineAuditCatalog(prefix, map)",": group anything beyond a handful of related actions under one prefix. Mirrors ",[617,2766,2767],{},"defineErrorCatalog",". The wire ",[617,2770,1257],{}," is auto-derived as ",[617,2773,2128],{},", catalog metadata (",[617,2776,2521],{},", ",[617,2779,2525],{},") is exposed for introspection, and a single ",[617,2782,2783],{},"declare module 'evlog'"," line surfaces the whole bundle in the typed ",[617,2786,2787],{},"AuditAction"," union.",[609,2790,2791,2792,2794,2795,2777,2797,2777,2800,2802],{},"You can mix the two in the same codebase. Keep cross-cutting one-off actions as ",[617,2793,2113],{},", group bounded contexts (",[617,2796,2181],{},[617,2798,2799],{},"auth",[617,2801,2366],{},") as catalogs.",[2725,2804,2806],{"id":2805},"type-safe-actions-everywhere-opt-in","Type-safe actions everywhere (opt-in)",[609,2808,2809,2810,670],{},"Mirror the error catalog augmentation by augmenting ",[617,2811,2812],{},"RegisteredAuditCatalogs",[630,2814,2816],{"className":632,"code":2815,"language":634,"meta":635,"style":635},"import type { billingAudit } from '.\u002Faudit\u002Fbilling'\n\ndeclare module 'evlog' {\n  interface RegisteredAuditCatalogs {\n    billing: typeof billingAudit\n  }\n}\n",[617,2817,2818,2839,2843,2859,2869,2882,2886],{"__ignoreMap":635},[639,2819,2820,2822,2824,2826,2828,2830,2832,2834,2837],{"class":641,"line":642},[639,2821,1537],{"class":887},[639,2823,697],{"class":887},[639,2825,694],{"class":649},[639,2827,2403],{"class":645},[639,2829,854],{"class":649},[639,2831,1546],{"class":887},[639,2833,673],{"class":649},[639,2835,2836],{"class":676},".\u002Faudit\u002Fbilling",[639,2838,1554],{"class":649},[639,2840,2841],{"class":641,"line":663},[639,2842,795],{"emptyLinePlaceholder":794},[639,2844,2845,2848,2851,2853,2855,2857],{"class":641,"line":686},[639,2846,2847],{"class":1087},"declare",[639,2849,2850],{"class":1087}," module",[639,2852,673],{"class":649},[639,2854,1551],{"class":676},[639,2856,680],{"class":649},[639,2858,934],{"class":649},[639,2860,2861,2864,2867],{"class":641,"line":728},[639,2862,2863],{"class":1087},"  interface",[639,2865,2866],{"class":1256}," RegisteredAuditCatalogs",[639,2868,934],{"class":649},[639,2870,2871,2874,2876,2879],{"class":641,"line":765},[639,2872,2873],{"class":666},"    billing",[639,2875,670],{"class":649},[639,2877,2878],{"class":649}," typeof",[639,2880,2881],{"class":645}," billingAudit\n",[639,2883,2884],{"class":641,"line":782},[639,2885,1507],{"class":649},[639,2887,2888],{"class":641,"line":791},[639,2889,1067],{"class":649},[609,2891,2892,2893,2895],{},"This surfaces the union of all registered actions on the typed ",[617,2894,2787],{}," export, useful for shared helpers, dashboards, and refactor-safe comparisons.",[2897,2898,2901,2904,2905,2908],"callout",{"color":2899,"icon":2900,"to":82},"primary","i-lucide-arrow-right",[2107,2902,2903],{},"Going further."," The dedicated ",[2093,2906,2907],{"href":82},"Catalogs page"," covers the scaling story (single file → folder → feature → npm package) for both error and audit catalogs, plus npm packaging, composition patterns, and the type-augmentation deep dive.",[613,2910,2912],{"id":2911},"auditdiff",[617,2913,2914],{},"auditDiff()",[609,2916,2917,2918,2920],{},"For mutating actions, use ",[617,2919,2914],{}," to produce a compact, redact-aware JSON Patch:",[2922,2923,2924,2929,2930,2125,2932,2936,2937,2940,2941,2944,2945,2948,2949,2952,2953,2955],"warning",{},[2107,2925,2926,2927,650],{},"Don't feed entire DB rows into ",[617,2928,2914],{}," Strip computed columns, hashed passwords, internal flags, and large JSON blobs before diffing. The point of ",[617,2931,2692],{},[2933,2934,2935],"em",{},"what changed semantically"," (status went from ",[617,2938,2939],{},"paid"," → ",[617,2942,2943],{},"refunded","), not ",[2933,2946,2947],{},"what bytes changed"," (a ",[617,2950,2951],{},"lastModified"," timestamp ticked). A noisy ",[617,2954,2692],{}," field is the fastest way to make audit logs unreadable.",[875,2957,2958,3202],{},[630,2959,2961],{"className":632,"code":2960,"filename":880,"language":634,"meta":635,"style":635},"import { auditDiff } from 'evlog'\n\nconst before = await db.users.byId(id)\nconst after = await db.users.update(id, patch)\n\nlog.audit({\n  action: 'user.update',\n  actor: { type: 'user', id: actorId },\n  target: { type: 'user', id },\n  outcome: 'success',\n  changes: auditDiff(before, after, { redactPaths: ['password', 'token'] }),\n})\n",[617,2962,2963,2982,2986,3014,3044,3048,3060,3075,3104,3129,3143,3196],{"__ignoreMap":635},[639,2964,2965,2967,2969,2972,2974,2976,2978,2980],{"class":641,"line":642},[639,2966,1537],{"class":887},[639,2968,694],{"class":649},[639,2970,2971],{"class":645}," auditDiff",[639,2973,854],{"class":649},[639,2975,1546],{"class":887},[639,2977,673],{"class":649},[639,2979,1551],{"class":676},[639,2981,1554],{"class":649},[639,2983,2984],{"class":641,"line":663},[639,2985,795],{"emptyLinePlaceholder":794},[639,2987,2988,2990,2993,2995,2998,3001,3003,3006,3008,3011],{"class":641,"line":686},[639,2989,1955],{"class":1087},[639,2991,2992],{"class":645}," before ",[639,2994,1961],{"class":649},[639,2996,2997],{"class":887}," await",[639,2999,3000],{"class":645}," db",[639,3002,650],{"class":649},[639,3004,3005],{"class":645},"users",[639,3007,650],{"class":649},[639,3009,3010],{"class":653},"byId",[639,3012,3013],{"class":645},"(id)\n",[639,3015,3016,3018,3021,3023,3025,3027,3029,3031,3033,3036,3039,3041],{"class":641,"line":728},[639,3017,1955],{"class":1087},[639,3019,3020],{"class":645}," after ",[639,3022,1961],{"class":649},[639,3024,2997],{"class":887},[639,3026,3000],{"class":645},[639,3028,650],{"class":649},[639,3030,3005],{"class":645},[639,3032,650],{"class":649},[639,3034,3035],{"class":653},"update",[639,3037,3038],{"class":645},"(id",[639,3040,709],{"class":649},[639,3042,3043],{"class":645}," patch)\n",[639,3045,3046],{"class":641,"line":765},[639,3047,795],{"emptyLinePlaceholder":794},[639,3049,3050,3052,3054,3056,3058],{"class":641,"line":782},[639,3051,646],{"class":645},[639,3053,650],{"class":649},[639,3055,654],{"class":653},[639,3057,657],{"class":645},[639,3059,660],{"class":649},[639,3061,3062,3064,3066,3068,3071,3073],{"class":641,"line":791},[639,3063,667],{"class":666},[639,3065,670],{"class":649},[639,3067,673],{"class":649},[639,3069,3070],{"class":676},"user.update",[639,3072,680],{"class":649},[639,3074,683],{"class":649},[639,3076,3077,3079,3081,3083,3085,3087,3089,3091,3093,3095,3097,3099,3102],{"class":641,"line":798},[639,3078,689],{"class":666},[639,3080,670],{"class":649},[639,3082,694],{"class":649},[639,3084,697],{"class":666},[639,3086,670],{"class":649},[639,3088,673],{"class":649},[639,3090,704],{"class":676},[639,3092,680],{"class":649},[639,3094,709],{"class":649},[639,3096,712],{"class":666},[639,3098,670],{"class":649},[639,3100,3101],{"class":645}," actorId ",[639,3103,725],{"class":649},[639,3105,3106,3108,3110,3112,3114,3116,3118,3120,3122,3124,3127],{"class":641,"line":805},[639,3107,731],{"class":666},[639,3109,670],{"class":649},[639,3111,694],{"class":649},[639,3113,697],{"class":666},[639,3115,670],{"class":649},[639,3117,673],{"class":649},[639,3119,704],{"class":676},[639,3121,680],{"class":649},[639,3123,709],{"class":649},[639,3125,3126],{"class":645}," id ",[639,3128,725],{"class":649},[639,3130,3131,3133,3135,3137,3139,3141],{"class":641,"line":1237},[639,3132,768],{"class":666},[639,3134,670],{"class":649},[639,3136,673],{"class":649},[639,3138,775],{"class":676},[639,3140,680],{"class":649},[639,3142,683],{"class":649},[639,3144,3145,3148,3150,3152,3155,3157,3160,3162,3164,3167,3169,3171,3173,3176,3178,3180,3182,3185,3187,3190,3192,3194],{"class":641,"line":1250},[639,3146,3147],{"class":666},"  changes",[639,3149,670],{"class":649},[639,3151,2971],{"class":653},[639,3153,3154],{"class":645},"(before",[639,3156,709],{"class":649},[639,3158,3159],{"class":645}," after",[639,3161,709],{"class":649},[639,3163,694],{"class":649},[639,3165,3166],{"class":666}," redactPaths",[639,3168,670],{"class":649},[639,3170,2265],{"class":645},[639,3172,680],{"class":649},[639,3174,3175],{"class":676},"password",[639,3177,680],{"class":649},[639,3179,709],{"class":649},[639,3181,673],{"class":649},[639,3183,3184],{"class":676},"token",[639,3186,680],{"class":649},[639,3188,3189],{"class":645},"] ",[639,3191,785],{"class":649},[639,3193,2697],{"class":645},[639,3195,683],{"class":649},[639,3197,3198,3200],{"class":641,"line":1272},[639,3199,785],{"class":649},[639,3201,788],{"class":645},[630,3203,3206],{"className":1070,"code":3204,"filename":3205,"language":1073,"meta":635,"style":635},"{\n  \"audit\": {\n    \"action\": \"user.update\",\n    \"actor\": { \"type\": \"user\", \"id\": \"usr_42\" },\n    \"target\": { \"type\": \"user\", \"id\": \"usr_99\" },\n    \"outcome\": \"success\",\n    \"changes\": [\n      { \"op\": \"replace\", \"path\": \"\u002Femail\", \"from\": \"old@example.com\", \"to\": \"new@example.com\" },\n      { \"op\": \"replace\", \"path\": \"\u002Frole\", \"from\": \"member\", \"to\": \"admin\" },\n      { \"op\": \"replace\", \"path\": \"\u002Fpassword\", \"from\": \"[REDACTED]\", \"to\": \"[REDACTED]\" }\n    ],\n    \"version\": 1,\n    \"idempotencyKey\": \"ak_5e7d8f9a0b1c2d3e\"\n  }\n}\n","Output — changes patch",[617,3207,3208,3212,3224,3242,3287,3332,3350,3363,3438,3509,3580,3585,3599,3616,3620],{"__ignoreMap":635},[639,3209,3210],{"class":641,"line":642},[639,3211,660],{"class":649},[639,3213,3214,3216,3218,3220,3222],{"class":641,"line":663},[639,3215,1084],{"class":649},[639,3217,654],{"class":1087},[639,3219,1091],{"class":649},[639,3221,670],{"class":649},[639,3223,934],{"class":649},[639,3225,3226,3228,3230,3232,3234,3236,3238,3240],{"class":641,"line":686},[639,3227,1253],{"class":649},[639,3229,1257],{"class":1256},[639,3231,1091],{"class":649},[639,3233,670],{"class":649},[639,3235,1096],{"class":649},[639,3237,3070],{"class":676},[639,3239,1091],{"class":649},[639,3241,683],{"class":649},[639,3243,3244,3246,3248,3250,3252,3254,3256,3258,3260,3262,3264,3266,3268,3270,3272,3274,3276,3278,3280,3283,3285],{"class":641,"line":728},[639,3245,1253],{"class":649},[639,3247,1277],{"class":1256},[639,3249,1091],{"class":649},[639,3251,670],{"class":649},[639,3253,694],{"class":649},[639,3255,1096],{"class":649},[639,3257,1288],{"class":850},[639,3259,1091],{"class":649},[639,3261,670],{"class":649},[639,3263,1096],{"class":649},[639,3265,704],{"class":676},[639,3267,1091],{"class":649},[639,3269,709],{"class":649},[639,3271,1096],{"class":649},[639,3273,981],{"class":850},[639,3275,1091],{"class":649},[639,3277,670],{"class":649},[639,3279,1096],{"class":649},[639,3281,3282],{"class":676},"usr_42",[639,3284,1091],{"class":649},[639,3286,762],{"class":649},[639,3288,3289,3291,3293,3295,3297,3299,3301,3303,3305,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325,3328,3330],{"class":641,"line":765},[639,3290,1253],{"class":649},[639,3292,1325],{"class":1256},[639,3294,1091],{"class":649},[639,3296,670],{"class":649},[639,3298,694],{"class":649},[639,3300,1096],{"class":649},[639,3302,1288],{"class":850},[639,3304,1091],{"class":649},[639,3306,670],{"class":649},[639,3308,1096],{"class":649},[639,3310,704],{"class":676},[639,3312,1091],{"class":649},[639,3314,709],{"class":649},[639,3316,1096],{"class":649},[639,3318,981],{"class":850},[639,3320,1091],{"class":649},[639,3322,670],{"class":649},[639,3324,1096],{"class":649},[639,3326,3327],{"class":676},"usr_99",[639,3329,1091],{"class":649},[639,3331,762],{"class":649},[639,3333,3334,3336,3338,3340,3342,3344,3346,3348],{"class":641,"line":782},[639,3335,1253],{"class":649},[639,3337,1371],{"class":1256},[639,3339,1091],{"class":649},[639,3341,670],{"class":649},[639,3343,1096],{"class":649},[639,3345,775],{"class":676},[639,3347,1091],{"class":649},[639,3349,683],{"class":649},[639,3351,3352,3354,3356,3358,3360],{"class":641,"line":791},[639,3353,1253],{"class":649},[639,3355,2692],{"class":1256},[639,3357,1091],{"class":649},[639,3359,670],{"class":649},[639,3361,3362],{"class":649}," [\n",[639,3364,3365,3367,3369,3372,3374,3376,3378,3381,3383,3385,3387,3389,3391,3393,3395,3398,3400,3402,3404,3407,3409,3411,3413,3416,3418,3420,3422,3425,3427,3429,3431,3434,3436],{"class":641,"line":798},[639,3366,2292],{"class":649},[639,3368,1096],{"class":649},[639,3370,3371],{"class":850},"op",[639,3373,1091],{"class":649},[639,3375,670],{"class":649},[639,3377,1096],{"class":649},[639,3379,3380],{"class":676},"replace",[639,3382,1091],{"class":649},[639,3384,709],{"class":649},[639,3386,1096],{"class":649},[639,3388,1150],{"class":850},[639,3390,1091],{"class":649},[639,3392,670],{"class":649},[639,3394,1096],{"class":649},[639,3396,3397],{"class":676},"\u002Femail",[639,3399,1091],{"class":649},[639,3401,709],{"class":649},[639,3403,1096],{"class":649},[639,3405,3406],{"class":850},"from",[639,3408,1091],{"class":649},[639,3410,670],{"class":649},[639,3412,1096],{"class":649},[639,3414,3415],{"class":676},"old@example.com",[639,3417,1091],{"class":649},[639,3419,709],{"class":649},[639,3421,1096],{"class":649},[639,3423,3424],{"class":850},"to",[639,3426,1091],{"class":649},[639,3428,670],{"class":649},[639,3430,1096],{"class":649},[639,3432,3433],{"class":676},"new@example.com",[639,3435,1091],{"class":649},[639,3437,762],{"class":649},[639,3439,3440,3442,3444,3446,3448,3450,3452,3454,3456,3458,3460,3462,3464,3466,3468,3471,3473,3475,3477,3479,3481,3483,3485,3488,3490,3492,3494,3496,3498,3500,3502,3505,3507],{"class":641,"line":805},[639,3441,2292],{"class":649},[639,3443,1096],{"class":649},[639,3445,3371],{"class":850},[639,3447,1091],{"class":649},[639,3449,670],{"class":649},[639,3451,1096],{"class":649},[639,3453,3380],{"class":676},[639,3455,1091],{"class":649},[639,3457,709],{"class":649},[639,3459,1096],{"class":649},[639,3461,1150],{"class":850},[639,3463,1091],{"class":649},[639,3465,670],{"class":649},[639,3467,1096],{"class":649},[639,3469,3470],{"class":676},"\u002Frole",[639,3472,1091],{"class":649},[639,3474,709],{"class":649},[639,3476,1096],{"class":649},[639,3478,3406],{"class":850},[639,3480,1091],{"class":649},[639,3482,670],{"class":649},[639,3484,1096],{"class":649},[639,3486,3487],{"class":676},"member",[639,3489,1091],{"class":649},[639,3491,709],{"class":649},[639,3493,1096],{"class":649},[639,3495,3424],{"class":850},[639,3497,1091],{"class":649},[639,3499,670],{"class":649},[639,3501,1096],{"class":649},[639,3503,3504],{"class":676},"admin",[639,3506,1091],{"class":649},[639,3508,762],{"class":649},[639,3510,3511,3513,3515,3517,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539,3542,3544,3546,3548,3550,3552,3554,3556,3559,3561,3563,3565,3567,3569,3571,3573,3575,3577],{"class":641,"line":1237},[639,3512,2292],{"class":649},[639,3514,1096],{"class":649},[639,3516,3371],{"class":850},[639,3518,1091],{"class":649},[639,3520,670],{"class":649},[639,3522,1096],{"class":649},[639,3524,3380],{"class":676},[639,3526,1091],{"class":649},[639,3528,709],{"class":649},[639,3530,1096],{"class":649},[639,3532,1150],{"class":850},[639,3534,1091],{"class":649},[639,3536,670],{"class":649},[639,3538,1096],{"class":649},[639,3540,3541],{"class":676},"\u002Fpassword",[639,3543,1091],{"class":649},[639,3545,709],{"class":649},[639,3547,1096],{"class":649},[639,3549,3406],{"class":850},[639,3551,1091],{"class":649},[639,3553,670],{"class":649},[639,3555,1096],{"class":649},[639,3557,3558],{"class":676},"[REDACTED]",[639,3560,1091],{"class":649},[639,3562,709],{"class":649},[639,3564,1096],{"class":649},[639,3566,3424],{"class":850},[639,3568,1091],{"class":649},[639,3570,670],{"class":649},[639,3572,1096],{"class":649},[639,3574,3558],{"class":676},[639,3576,1091],{"class":649},[639,3578,3579],{"class":649}," }\n",[639,3581,3582],{"class":641,"line":1250},[639,3583,3584],{"class":649},"    ],\n",[639,3586,3587,3589,3591,3593,3595,3597],{"class":641,"line":1272},[639,3588,1253],{"class":649},[639,3590,1412],{"class":1256},[639,3592,1091],{"class":649},[639,3594,670],{"class":649},[639,3596,851],{"class":850},[639,3598,683],{"class":649},[639,3600,3601,3603,3605,3607,3609,3611,3614],{"class":641,"line":1320},[639,3602,1253],{"class":649},[639,3604,1428],{"class":1256},[639,3606,1091],{"class":649},[639,3608,670],{"class":649},[639,3610,1096],{"class":649},[639,3612,3613],{"class":676},"ak_5e7d8f9a0b1c2d3e",[639,3615,1495],{"class":649},[639,3617,3618],{"class":641,"line":1366},[639,3619,1507],{"class":649},[639,3621,3622],{"class":641,"line":1387},[639,3623,1067],{"class":649},[613,3625,3627,3630],{"id":3626},"withaudit-auto-instrumentation",[617,3628,3629],{},"withAudit()",": auto-instrumentation",[609,3632,3633,3634,3636],{},"Devs forget to call ",[617,3635,619],{},". Wrap the function and never miss a record:",[3638,3639,3640,3643,3644,3647,3648,3650,3651,3654],"tip",{},[2107,3641,3642],{},"When to wrap vs. call manually."," Wrap functions that are ",[2933,3645,3646],{},"pure audit-worthy actions"," (refund, delete, role change, password reset): outcome resolution is automatic and you can't accidentally skip the call. Stick to manual ",[617,3649,619],{}," when the audit is one of several decisions inside a larger handler, or when you need to emit the audit ",[2933,3652,3653],{},"before"," the action completes (e.g. \"user requested deletion\").",[875,3656,3657,3950,4155,4471],{},[630,3658,3660],{"className":632,"code":3659,"filename":880,"language":634,"meta":635,"style":635},"import { withAudit, AuditDeniedError } from 'evlog'\n\nconst refundInvoice = withAudit(\n  { action: 'invoice.refund', target: input => ({ type: 'invoice', id: input.id }) },\n  async (input: { id: string }, ctx) => {\n    if (!ctx.actor) throw new AuditDeniedError('Anonymous refund denied')\n    return await db.invoices.refund(input.id)\n  },\n)\n\nawait refundInvoice({ id: 'inv_889' }, {\n  actor: { type: 'user', id: user.id },\n  correlationId: requestId,\n})\n",[617,3661,3662,3686,3690,3704,3765,3797,3834,3862,3866,3870,3874,3900,3932,3944],{"__ignoreMap":635},[639,3663,3664,3666,3668,3671,3673,3676,3678,3680,3682,3684],{"class":641,"line":642},[639,3665,1537],{"class":887},[639,3667,694],{"class":649},[639,3669,3670],{"class":645}," withAudit",[639,3672,709],{"class":649},[639,3674,3675],{"class":645}," AuditDeniedError",[639,3677,854],{"class":649},[639,3679,1546],{"class":887},[639,3681,673],{"class":649},[639,3683,1551],{"class":676},[639,3685,1554],{"class":649},[639,3687,3688],{"class":641,"line":663},[639,3689,795],{"emptyLinePlaceholder":794},[639,3691,3692,3694,3697,3699,3701],{"class":641,"line":686},[639,3693,1955],{"class":1087},[639,3695,3696],{"class":645}," refundInvoice ",[639,3698,1961],{"class":649},[639,3700,3670],{"class":653},[639,3702,3703],{"class":645},"(\n",[639,3705,3706,3709,3711,3713,3715,3717,3719,3721,3723,3725,3729,3732,3734,3736,3738,3740,3742,3744,3746,3748,3750,3752,3754,3756,3758,3760,3763],{"class":641,"line":728},[639,3707,3708],{"class":649},"  {",[639,3710,827],{"class":666},[639,3712,670],{"class":649},[639,3714,673],{"class":649},[639,3716,677],{"class":676},[639,3718,680],{"class":649},[639,3720,709],{"class":649},[639,3722,1978],{"class":653},[639,3724,670],{"class":649},[639,3726,3728],{"class":3727},"sHdIc"," input",[639,3730,3731],{"class":1087}," =>",[639,3733,891],{"class":645},[639,3735,817],{"class":649},[639,3737,697],{"class":666},[639,3739,670],{"class":649},[639,3741,673],{"class":649},[639,3743,744],{"class":676},[639,3745,680],{"class":649},[639,3747,709],{"class":649},[639,3749,712],{"class":666},[639,3751,670],{"class":649},[639,3753,3728],{"class":645},[639,3755,650],{"class":649},[639,3757,722],{"class":645},[639,3759,785],{"class":649},[639,3761,3762],{"class":645},") ",[639,3764,725],{"class":649},[639,3766,3767,3770,3772,3775,3777,3779,3781,3783,3786,3788,3791,3793,3795],{"class":641,"line":765},[639,3768,3769],{"class":1087},"  async",[639,3771,891],{"class":649},[639,3773,3774],{"class":3727},"input",[639,3776,670],{"class":649},[639,3778,694],{"class":649},[639,3780,712],{"class":666},[639,3782,670],{"class":649},[639,3784,3785],{"class":1256}," string",[639,3787,2064],{"class":649},[639,3789,3790],{"class":3727}," ctx",[639,3792,2697],{"class":649},[639,3794,3731],{"class":1087},[639,3796,934],{"class":649},[639,3798,3799,3802,3804,3806,3809,3811,3813,3815,3818,3821,3823,3825,3827,3830,3832],{"class":641,"line":782},[639,3800,3801],{"class":887},"    if",[639,3803,891],{"class":666},[639,3805,894],{"class":649},[639,3807,3808],{"class":645},"ctx",[639,3810,650],{"class":649},[639,3812,1277],{"class":645},[639,3814,3762],{"class":666},[639,3816,3817],{"class":887},"throw",[639,3819,3820],{"class":649}," new",[639,3822,3675],{"class":653},[639,3824,657],{"class":666},[639,3826,680],{"class":649},[639,3828,3829],{"class":676},"Anonymous refund denied",[639,3831,680],{"class":649},[639,3833,788],{"class":666},[639,3835,3836,3839,3841,3843,3845,3848,3850,3852,3854,3856,3858,3860],{"class":641,"line":791},[639,3837,3838],{"class":887},"    return",[639,3840,2997],{"class":887},[639,3842,3000],{"class":645},[639,3844,650],{"class":649},[639,3846,3847],{"class":645},"invoices",[639,3849,650],{"class":649},[639,3851,2007],{"class":653},[639,3853,657],{"class":666},[639,3855,3774],{"class":645},[639,3857,650],{"class":649},[639,3859,981],{"class":645},[639,3861,788],{"class":666},[639,3863,3864],{"class":641,"line":798},[639,3865,2282],{"class":649},[639,3867,3868],{"class":641,"line":805},[639,3869,788],{"class":645},[639,3871,3872],{"class":641,"line":1237},[639,3873,795],{"emptyLinePlaceholder":794},[639,3875,3876,3879,3882,3884,3886,3888,3890,3892,3894,3896,3898],{"class":641,"line":1250},[639,3877,3878],{"class":887},"await",[639,3880,3881],{"class":653}," refundInvoice",[639,3883,657],{"class":645},[639,3885,817],{"class":649},[639,3887,712],{"class":666},[639,3889,670],{"class":649},[639,3891,673],{"class":649},[639,3893,757],{"class":676},[639,3895,680],{"class":649},[639,3897,2064],{"class":649},[639,3899,934],{"class":649},[639,3901,3902,3904,3906,3908,3910,3912,3914,3916,3918,3920,3922,3924,3926,3928,3930],{"class":641,"line":1272},[639,3903,689],{"class":666},[639,3905,670],{"class":649},[639,3907,694],{"class":649},[639,3909,697],{"class":666},[639,3911,670],{"class":649},[639,3913,673],{"class":649},[639,3915,704],{"class":676},[639,3917,680],{"class":649},[639,3919,709],{"class":649},[639,3921,712],{"class":666},[639,3923,670],{"class":649},[639,3925,717],{"class":645},[639,3927,650],{"class":649},[639,3929,722],{"class":645},[639,3931,725],{"class":649},[639,3933,3934,3937,3939,3942],{"class":641,"line":1320},[639,3935,3936],{"class":666},"  correlationId",[639,3938,670],{"class":649},[639,3940,3941],{"class":645}," requestId",[639,3943,683],{"class":649},[639,3945,3946,3948],{"class":641,"line":1366},[639,3947,785],{"class":649},[639,3949,788],{"class":645},[630,3951,3954],{"className":1070,"code":3952,"filename":3953,"language":1073,"meta":635,"style":635},"{\n  \"audit\": {\n    \"action\": \"invoice.refund\",\n    \"actor\": { \"type\": \"user\", \"id\": \"usr_42\" },\n    \"target\": { \"type\": \"invoice\", \"id\": \"inv_889\" },\n    \"outcome\": \"success\",\n    \"version\": 1,\n    \"idempotencyKey\": \"ak_8f3c4b2a1e5d6f7c\",\n    \"correlationId\": \"a566ef91-7765-4f59-b6f0-b9f40ce71599\"\n  }\n}\n","Output — success",[617,3955,3956,3960,3972,3990,4034,4078,4096,4110,4129,4147,4151],{"__ignoreMap":635},[639,3957,3958],{"class":641,"line":642},[639,3959,660],{"class":649},[639,3961,3962,3964,3966,3968,3970],{"class":641,"line":663},[639,3963,1084],{"class":649},[639,3965,654],{"class":1087},[639,3967,1091],{"class":649},[639,3969,670],{"class":649},[639,3971,934],{"class":649},[639,3973,3974,3976,3978,3980,3982,3984,3986,3988],{"class":641,"line":686},[639,3975,1253],{"class":649},[639,3977,1257],{"class":1256},[639,3979,1091],{"class":649},[639,3981,670],{"class":649},[639,3983,1096],{"class":649},[639,3985,677],{"class":676},[639,3987,1091],{"class":649},[639,3989,683],{"class":649},[639,3991,3992,3994,3996,3998,4000,4002,4004,4006,4008,4010,4012,4014,4016,4018,4020,4022,4024,4026,4028,4030,4032],{"class":641,"line":728},[639,3993,1253],{"class":649},[639,3995,1277],{"class":1256},[639,3997,1091],{"class":649},[639,3999,670],{"class":649},[639,4001,694],{"class":649},[639,4003,1096],{"class":649},[639,4005,1288],{"class":850},[639,4007,1091],{"class":649},[639,4009,670],{"class":649},[639,4011,1096],{"class":649},[639,4013,704],{"class":676},[639,4015,1091],{"class":649},[639,4017,709],{"class":649},[639,4019,1096],{"class":649},[639,4021,981],{"class":850},[639,4023,1091],{"class":649},[639,4025,670],{"class":649},[639,4027,1096],{"class":649},[639,4029,3282],{"class":676},[639,4031,1091],{"class":649},[639,4033,762],{"class":649},[639,4035,4036,4038,4040,4042,4044,4046,4048,4050,4052,4054,4056,4058,4060,4062,4064,4066,4068,4070,4072,4074,4076],{"class":641,"line":765},[639,4037,1253],{"class":649},[639,4039,1325],{"class":1256},[639,4041,1091],{"class":649},[639,4043,670],{"class":649},[639,4045,694],{"class":649},[639,4047,1096],{"class":649},[639,4049,1288],{"class":850},[639,4051,1091],{"class":649},[639,4053,670],{"class":649},[639,4055,1096],{"class":649},[639,4057,744],{"class":676},[639,4059,1091],{"class":649},[639,4061,709],{"class":649},[639,4063,1096],{"class":649},[639,4065,981],{"class":850},[639,4067,1091],{"class":649},[639,4069,670],{"class":649},[639,4071,1096],{"class":649},[639,4073,757],{"class":676},[639,4075,1091],{"class":649},[639,4077,762],{"class":649},[639,4079,4080,4082,4084,4086,4088,4090,4092,4094],{"class":641,"line":782},[639,4081,1253],{"class":649},[639,4083,1371],{"class":1256},[639,4085,1091],{"class":649},[639,4087,670],{"class":649},[639,4089,1096],{"class":649},[639,4091,775],{"class":676},[639,4093,1091],{"class":649},[639,4095,683],{"class":649},[639,4097,4098,4100,4102,4104,4106,4108],{"class":641,"line":791},[639,4099,1253],{"class":649},[639,4101,1412],{"class":1256},[639,4103,1091],{"class":649},[639,4105,670],{"class":649},[639,4107,851],{"class":850},[639,4109,683],{"class":649},[639,4111,4112,4114,4116,4118,4120,4122,4125,4127],{"class":641,"line":798},[639,4113,1253],{"class":649},[639,4115,1428],{"class":1256},[639,4117,1091],{"class":649},[639,4119,670],{"class":649},[639,4121,1096],{"class":649},[639,4123,4124],{"class":676},"ak_8f3c4b2a1e5d6f7c",[639,4126,1091],{"class":649},[639,4128,683],{"class":649},[639,4130,4131,4133,4136,4138,4140,4142,4145],{"class":641,"line":805},[639,4132,1253],{"class":649},[639,4134,4135],{"class":1256},"correlationId",[639,4137,1091],{"class":649},[639,4139,670],{"class":649},[639,4141,1096],{"class":649},[639,4143,4144],{"class":676},"a566ef91-7765-4f59-b6f0-b9f40ce71599",[639,4146,1495],{"class":649},[639,4148,4149],{"class":641,"line":1237},[639,4150,1507],{"class":649},[639,4152,4153],{"class":641,"line":1250},[639,4154,1067],{"class":649},[630,4156,4159],{"className":1070,"code":4157,"filename":4158,"language":1073,"meta":635,"style":635},"{\n  \"level\": \"error\",\n  \"audit\": {\n    \"action\": \"invoice.refund\",\n    \"actor\": { \"type\": \"user\", \"id\": \"usr_42\" },\n    \"target\": { \"type\": \"invoice\", \"id\": \"inv_889\" },\n    \"outcome\": \"failure\",\n    \"reason\": \"Stripe error: charge already refunded\",\n    \"version\": 1,\n    \"idempotencyKey\": \"ak_4c5d6e7f8a9b0c1d\",\n    \"correlationId\": \"a566ef91-7765-4f59-b6f0-b9f40ce71599\"\n  },\n  \"error\": {\n    \"name\": \"StripeError\",\n    \"message\": \"charge already refunded\",\n    \"stack\": \"...\"\n  }\n}\n","Output — failure",[617,4160,4161,4165,4184,4196,4214,4258,4302,4321,4340,4354,4373,4389,4393,4405,4425,4445,4463,4467],{"__ignoreMap":635},[639,4162,4163],{"class":641,"line":642},[639,4164,660],{"class":649},[639,4166,4167,4169,4171,4173,4175,4177,4180,4182],{"class":641,"line":663},[639,4168,1084],{"class":649},[639,4170,1088],{"class":1087},[639,4172,1091],{"class":649},[639,4174,670],{"class":649},[639,4176,1096],{"class":649},[639,4178,4179],{"class":676},"error",[639,4181,1091],{"class":649},[639,4183,683],{"class":649},[639,4185,4186,4188,4190,4192,4194],{"class":641,"line":686},[639,4187,1084],{"class":649},[639,4189,654],{"class":1087},[639,4191,1091],{"class":649},[639,4193,670],{"class":649},[639,4195,934],{"class":649},[639,4197,4198,4200,4202,4204,4206,4208,4210,4212],{"class":641,"line":728},[639,4199,1253],{"class":649},[639,4201,1257],{"class":1256},[639,4203,1091],{"class":649},[639,4205,670],{"class":649},[639,4207,1096],{"class":649},[639,4209,677],{"class":676},[639,4211,1091],{"class":649},[639,4213,683],{"class":649},[639,4215,4216,4218,4220,4222,4224,4226,4228,4230,4232,4234,4236,4238,4240,4242,4244,4246,4248,4250,4252,4254,4256],{"class":641,"line":765},[639,4217,1253],{"class":649},[639,4219,1277],{"class":1256},[639,4221,1091],{"class":649},[639,4223,670],{"class":649},[639,4225,694],{"class":649},[639,4227,1096],{"class":649},[639,4229,1288],{"class":850},[639,4231,1091],{"class":649},[639,4233,670],{"class":649},[639,4235,1096],{"class":649},[639,4237,704],{"class":676},[639,4239,1091],{"class":649},[639,4241,709],{"class":649},[639,4243,1096],{"class":649},[639,4245,981],{"class":850},[639,4247,1091],{"class":649},[639,4249,670],{"class":649},[639,4251,1096],{"class":649},[639,4253,3282],{"class":676},[639,4255,1091],{"class":649},[639,4257,762],{"class":649},[639,4259,4260,4262,4264,4266,4268,4270,4272,4274,4276,4278,4280,4282,4284,4286,4288,4290,4292,4294,4296,4298,4300],{"class":641,"line":782},[639,4261,1253],{"class":649},[639,4263,1325],{"class":1256},[639,4265,1091],{"class":649},[639,4267,670],{"class":649},[639,4269,694],{"class":649},[639,4271,1096],{"class":649},[639,4273,1288],{"class":850},[639,4275,1091],{"class":649},[639,4277,670],{"class":649},[639,4279,1096],{"class":649},[639,4281,744],{"class":676},[639,4283,1091],{"class":649},[639,4285,709],{"class":649},[639,4287,1096],{"class":649},[639,4289,981],{"class":850},[639,4291,1091],{"class":649},[639,4293,670],{"class":649},[639,4295,1096],{"class":649},[639,4297,757],{"class":676},[639,4299,1091],{"class":649},[639,4301,762],{"class":649},[639,4303,4304,4306,4308,4310,4312,4314,4317,4319],{"class":641,"line":791},[639,4305,1253],{"class":649},[639,4307,1371],{"class":1256},[639,4309,1091],{"class":649},[639,4311,670],{"class":649},[639,4313,1096],{"class":649},[639,4315,4316],{"class":676},"failure",[639,4318,1091],{"class":649},[639,4320,683],{"class":649},[639,4322,4323,4325,4327,4329,4331,4333,4336,4338],{"class":641,"line":798},[639,4324,1253],{"class":649},[639,4326,1392],{"class":1256},[639,4328,1091],{"class":649},[639,4330,670],{"class":649},[639,4332,1096],{"class":649},[639,4334,4335],{"class":676},"Stripe error: charge already refunded",[639,4337,1091],{"class":649},[639,4339,683],{"class":649},[639,4341,4342,4344,4346,4348,4350,4352],{"class":641,"line":805},[639,4343,1253],{"class":649},[639,4345,1412],{"class":1256},[639,4347,1091],{"class":649},[639,4349,670],{"class":649},[639,4351,851],{"class":850},[639,4353,683],{"class":649},[639,4355,4356,4358,4360,4362,4364,4366,4369,4371],{"class":641,"line":1237},[639,4357,1253],{"class":649},[639,4359,1428],{"class":1256},[639,4361,1091],{"class":649},[639,4363,670],{"class":649},[639,4365,1096],{"class":649},[639,4367,4368],{"class":676},"ak_4c5d6e7f8a9b0c1d",[639,4370,1091],{"class":649},[639,4372,683],{"class":649},[639,4374,4375,4377,4379,4381,4383,4385,4387],{"class":641,"line":1250},[639,4376,1253],{"class":649},[639,4378,4135],{"class":1256},[639,4380,1091],{"class":649},[639,4382,670],{"class":649},[639,4384,1096],{"class":649},[639,4386,4144],{"class":676},[639,4388,1495],{"class":649},[639,4390,4391],{"class":641,"line":1272},[639,4392,2282],{"class":649},[639,4394,4395,4397,4399,4401,4403],{"class":641,"line":1320},[639,4396,1084],{"class":649},[639,4398,4179],{"class":1087},[639,4400,1091],{"class":649},[639,4402,670],{"class":649},[639,4404,934],{"class":649},[639,4406,4407,4409,4412,4414,4416,4418,4421,4423],{"class":641,"line":1366},[639,4408,1253],{"class":649},[639,4410,4411],{"class":1256},"name",[639,4413,1091],{"class":649},[639,4415,670],{"class":649},[639,4417,1096],{"class":649},[639,4419,4420],{"class":676},"StripeError",[639,4422,1091],{"class":649},[639,4424,683],{"class":649},[639,4426,4427,4429,4432,4434,4436,4438,4441,4443],{"class":641,"line":1387},[639,4428,1253],{"class":649},[639,4430,4431],{"class":1256},"message",[639,4433,1091],{"class":649},[639,4435,670],{"class":649},[639,4437,1096],{"class":649},[639,4439,4440],{"class":676},"charge already refunded",[639,4442,1091],{"class":649},[639,4444,683],{"class":649},[639,4446,4447,4449,4452,4454,4456,4458,4461],{"class":641,"line":1407},[639,4448,1253],{"class":649},[639,4450,4451],{"class":1256},"stack",[639,4453,1091],{"class":649},[639,4455,670],{"class":649},[639,4457,1096],{"class":649},[639,4459,4460],{"class":676},"...",[639,4462,1495],{"class":649},[639,4464,4465],{"class":641,"line":1423},[639,4466,1507],{"class":649},[639,4468,4469],{"class":641,"line":1444},[639,4470,1067],{"class":649},[630,4472,4474],{"className":1070,"code":4473,"filename":1072,"language":1073,"meta":635,"style":635},"{\n  \"level\": \"warn\",\n  \"audit\": {\n    \"action\": \"invoice.refund\",\n    \"actor\": { \"type\": \"system\", \"id\": \"anonymous\" },\n    \"target\": { \"type\": \"invoice\", \"id\": \"inv_889\" },\n    \"outcome\": \"denied\",\n    \"reason\": \"Anonymous refund denied\",\n    \"version\": 1,\n    \"idempotencyKey\": \"ak_d12c3a4f5b6e7d8c\",\n    \"correlationId\": \"a566ef91-7765-4f59-b6f0-b9f40ce71599\"\n  }\n}\n",[617,4475,4476,4480,4498,4510,4528,4573,4617,4635,4653,4667,4685,4701,4705],{"__ignoreMap":635},[639,4477,4478],{"class":641,"line":642},[639,4479,660],{"class":649},[639,4481,4482,4484,4486,4488,4490,4492,4494,4496],{"class":641,"line":663},[639,4483,1084],{"class":649},[639,4485,1088],{"class":1087},[639,4487,1091],{"class":649},[639,4489,670],{"class":649},[639,4491,1096],{"class":649},[639,4493,1099],{"class":676},[639,4495,1091],{"class":649},[639,4497,683],{"class":649},[639,4499,4500,4502,4504,4506,4508],{"class":641,"line":686},[639,4501,1084],{"class":649},[639,4503,654],{"class":1087},[639,4505,1091],{"class":649},[639,4507,670],{"class":649},[639,4509,934],{"class":649},[639,4511,4512,4514,4516,4518,4520,4522,4524,4526],{"class":641,"line":728},[639,4513,1253],{"class":649},[639,4515,1257],{"class":1256},[639,4517,1091],{"class":649},[639,4519,670],{"class":649},[639,4521,1096],{"class":649},[639,4523,677],{"class":676},[639,4525,1091],{"class":649},[639,4527,683],{"class":649},[639,4529,4530,4532,4534,4536,4538,4540,4542,4544,4546,4548,4550,4552,4554,4556,4558,4560,4562,4564,4566,4569,4571],{"class":641,"line":765},[639,4531,1253],{"class":649},[639,4533,1277],{"class":1256},[639,4535,1091],{"class":649},[639,4537,670],{"class":649},[639,4539,694],{"class":649},[639,4541,1096],{"class":649},[639,4543,1288],{"class":850},[639,4545,1091],{"class":649},[639,4547,670],{"class":649},[639,4549,1096],{"class":649},[639,4551,1598],{"class":676},[639,4553,1091],{"class":649},[639,4555,709],{"class":649},[639,4557,1096],{"class":649},[639,4559,981],{"class":850},[639,4561,1091],{"class":649},[639,4563,670],{"class":649},[639,4565,1096],{"class":649},[639,4567,4568],{"class":676},"anonymous",[639,4570,1091],{"class":649},[639,4572,762],{"class":649},[639,4574,4575,4577,4579,4581,4583,4585,4587,4589,4591,4593,4595,4597,4599,4601,4603,4605,4607,4609,4611,4613,4615],{"class":641,"line":782},[639,4576,1253],{"class":649},[639,4578,1325],{"class":1256},[639,4580,1091],{"class":649},[639,4582,670],{"class":649},[639,4584,694],{"class":649},[639,4586,1096],{"class":649},[639,4588,1288],{"class":850},[639,4590,1091],{"class":649},[639,4592,670],{"class":649},[639,4594,1096],{"class":649},[639,4596,744],{"class":676},[639,4598,1091],{"class":649},[639,4600,709],{"class":649},[639,4602,1096],{"class":649},[639,4604,981],{"class":850},[639,4606,1091],{"class":649},[639,4608,670],{"class":649},[639,4610,1096],{"class":649},[639,4612,757],{"class":676},[639,4614,1091],{"class":649},[639,4616,762],{"class":649},[639,4618,4619,4621,4623,4625,4627,4629,4631,4633],{"class":641,"line":791},[639,4620,1253],{"class":649},[639,4622,1371],{"class":1256},[639,4624,1091],{"class":649},[639,4626,670],{"class":649},[639,4628,1096],{"class":649},[639,4630,1380],{"class":676},[639,4632,1091],{"class":649},[639,4634,683],{"class":649},[639,4636,4637,4639,4641,4643,4645,4647,4649,4651],{"class":641,"line":798},[639,4638,1253],{"class":649},[639,4640,1392],{"class":1256},[639,4642,1091],{"class":649},[639,4644,670],{"class":649},[639,4646,1096],{"class":649},[639,4648,3829],{"class":676},[639,4650,1091],{"class":649},[639,4652,683],{"class":649},[639,4654,4655,4657,4659,4661,4663,4665],{"class":641,"line":805},[639,4656,1253],{"class":649},[639,4658,1412],{"class":1256},[639,4660,1091],{"class":649},[639,4662,670],{"class":649},[639,4664,851],{"class":850},[639,4666,683],{"class":649},[639,4668,4669,4671,4673,4675,4677,4679,4681,4683],{"class":641,"line":1237},[639,4670,1253],{"class":649},[639,4672,1428],{"class":1256},[639,4674,1091],{"class":649},[639,4676,670],{"class":649},[639,4678,1096],{"class":649},[639,4680,1437],{"class":676},[639,4682,1091],{"class":649},[639,4684,683],{"class":649},[639,4686,4687,4689,4691,4693,4695,4697,4699],{"class":641,"line":1250},[639,4688,1253],{"class":649},[639,4690,4135],{"class":1256},[639,4692,1091],{"class":649},[639,4694,670],{"class":649},[639,4696,1096],{"class":649},[639,4698,4144],{"class":676},[639,4700,1495],{"class":649},[639,4702,4703],{"class":641,"line":1272},[639,4704,1507],{"class":649},[639,4706,4707],{"class":641,"line":1320},[639,4708,1067],{"class":649},[609,4710,4711],{},"Outcome resolution:",[2739,4713,4714,4723,4742],{},[2742,4715,4716,4719,4720,650],{},[617,4717,4718],{},"fn"," resolves → ",[617,4721,4722],{},"outcome: 'success'",[2742,4724,4725,4727,4728,4731,4732,4735,4736,4739,4740,650],{},[617,4726,4718],{}," throws an ",[617,4729,4730],{},"AuditDeniedError"," (or any error with ",[617,4733,4734],{},"status === 403",") → ",[617,4737,4738],{},"outcome: 'denied'",", error message becomes ",[617,4741,1392],{},[2742,4743,4744,4745,4748],{},"Other thrown errors → ",[617,4746,4747],{},"outcome: 'failure'",", then re-thrown.",[4750,4751,4752],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":635,"searchDepth":663,"depth":663,"links":4754},[4755,4756,4757,4759,4760,4765,4766],{"id":615,"depth":663,"text":619},{"id":864,"depth":663,"text":867},{"id":1515,"depth":663,"text":4758},"Standalone audit()",{"id":1914,"depth":663,"text":1917},{"id":2099,"depth":663,"text":2102,"children":4761},[4762,4764],{"id":2727,"depth":686,"text":4763},"defineAuditAction vs defineAuditCatalog: when to choose",{"id":2805,"depth":686,"text":2806},{"id":2911,"depth":663,"text":2914},{"id":3626,"depth":663,"text":4767},"withAudit(): auto-instrumentation","log.audit and log.audit.deny, standalone audit(), withAudit, the defineAuditAction and defineAuditCatalog registries, and auditDiff.","md",[4771,4774],{"label":396,"icon":399,"to":397,"color":4772,"variant":4773},"neutral","subtle",{"label":4775,"icon":409,"to":407,"color":4772,"variant":4773},"Drains & Integrity",{},{"title":401,"icon":404},{"title":604,"description":4768},"YK_TuxM0Kw3KwobrESvfeXNNFfJZ7GYyBbaWKVUsCdI",[4781,4783],{"title":396,"path":397,"stem":398,"description":4782,"icon":399,"children":-1},"The AuditFields type, action naming conventions, actor types, idempotency, and how the schema sits inside a regular wide event.",{"title":406,"path":407,"stem":408,"description":4784,"icon":409,"children":-1},"auditEnricher to auto-fill request context, auditOnly to route audits to a dedicated sink, and signed for tamper-evident HMAC or hash-chain integrity.",1791059993732]