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