# Module: `debug` **Path:** `verae-zapier-middleware/src/debug/` **Phase:** 1 **Purpose:** Runtime-toggleable failure tracing with secret redaction and correlation IDs. ## Files | File | Role | |------|------| | `config.js` | Parse env into enable/namespaces/level | | `redact.js` | Strip secrets from log metadata | | `logger.js` | Namespaced `createDebugger` | | `trace-context.js` | ALS store (no logger import) | | `trace.js` | `withTrace`, Express middleware | | `index.js` | Public barrel export | --- ## `parseDebugVeraeEnv(raw)` | | | |--|--| | **For** | Interpret `DEBUG_VERAE` env string | | **Input** | `raw: string \| undefined` | | **Output** | `{ enabled: boolean, namespaces: Set\|null }` | | **Notes** | `1`/`*` → all namespaces; `"auth,nats"` → allow-list | ## `loadDebugConfig(env?)` | | | |--|--| | **For** | Build full debug config from environment | | **Input** | `env?: NodeJS.ProcessEnv` (default `process.env`) | | **Output** | `DebugConfig` `{ enabled, namespaces, level, filePath }` | ## `shouldLog(config, namespace, messageLevel)` | | | |--|--| | **For** | Decide if a line should emit | | **Input** | config, namespace string, level | | **Output** | `boolean` | ## `redact(input)` | | | |--|--| | **For** | Deep-redact secrets for safe logging | | **Input** | any JSON-like value | | **Output** | redacted clone | ## `createDebugger(namespace)` | | | |--|--| | **For** | Get `{ debug, info, warn, error }` logger for a namespace | | **Input** | `namespace: string` | | **Output** | `Debugger` | | **Side effects** | Writes to stderr (or test sink) when enabled | ### `Debugger.debug|info|warn|error(message, meta?)` | | | |--|--| | **Input** | `message: string`, `meta?: Record` | | **Output** | `void` | ## `withTrace(options, fn)` | | | |--|--| | **For** | Run work under a correlation id | | **Input** | `{ traceId?, span? }`, `fn: () => T\|Promise` | | **Output** | `T\|Promise` | ## `getTraceId()` | | | |--|--| | **For** | Read active correlation id | | **Output** | `string\|null` | ## `traceMiddleware(req, res, next)` | | | |--|--| | **For** | Per-request Express trace context | | **Input** | Express `(req, res, next)` | | **Output** | `void` | | **Sets** | `req.traceId`, response header `X-Trace-Id` | ## `setDebugTestSink(sink)` | | | |--|--| | **For** | Capture log lines in unit tests | | **Input** | `((line: string) => void) \| null` | | **Output** | `void` | ## Env reference See [../debugging.md](../debugging.md).