import { WithInterceptor } from "../util/type-utils.mjs"; import { CommandTypesBase } from "../types/command.mjs"; //#region src/extension/logger.d.ts /** Log level values ordered by severity. */ type PadroneLogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent'; /** Logger instance injected into the command context. */ type PadroneLogger = { trace: (...args: unknown[]) => void; debug: (...args: unknown[]) => void; info: (...args: unknown[]) => void; warn: (...args: unknown[]) => void; error: (...args: unknown[]) => void; /** The current effective log level. */ level: PadroneLogLevel; /** Create a child logger with a prefix label. */ child: (label: string) => PadroneLogger; }; /** Configuration for the logger extension. */ type PadroneLoggerConfig = { /** Minimum log level to output. Defaults to `'info'`. */level?: PadroneLogLevel; /** Prefix prepended to every log message. */ prefix?: string; /** Include timestamps in log output. Defaults to `false`. */ timestamps?: boolean; }; /** Builder/program type after applying `padroneLogger()`. Adds `{ logger: PadroneLogger }` to the command context. */ type WithLogger = WithInterceptor; /** * Extension that injects a structured logger into the command context. * * The logger respects a configurable log level threshold, supports prefixed * child loggers, and routes output through the runtime's `output`/`error` * functions so it works in any environment (terminal, test, web). * * Supports CLI flags for runtime level overrides: * - `--trace` → sets level to `trace` * - `--verbose` or `--debug` → sets level to `debug` * - `--silent` or `--quiet` → sets level to `silent` * - `--log-level=` → sets an explicit level (`trace`, `debug`, `info`, `warn`, `error`, `silent`) * * CLI flags take precedence over the programmatic config. * * Provides `{ logger: PadroneLogger }` on the command context. * Access it in action handlers as `ctx.context.logger`. * * Usage: * ```ts * createPadrone('my-cli') * .extend(padroneLogger({ level: 'info' })) * .command('sync', (c) => * c.action((_args, ctx) => { * ctx.context.logger.info('starting sync'); * const db = ctx.context.logger.child('db'); * db.debug('connecting...'); * }) * ) * ``` * * Then run: * ```sh * my-cli sync --verbose # debug level * my-cli sync --quiet # silent * my-cli sync --log-level=warn * ``` */ declare function padroneLogger(config?: PadroneLoggerConfig): (builder: T) => WithLogger; //#endregion export { PadroneLogLevel, PadroneLogger, PadroneLoggerConfig, WithLogger, padroneLogger }; //# sourceMappingURL=logger.d.mts.map