UNPKG

@renegade-fi/core

Version:
61 lines 1.81 kB
/** * A logger that performs no operations. Used when no consumer logger is provided. */ export class NoopLogger { debug() { } info() { } warn() { } error() { } } /** * A thin console-backed logger primarily for development/testing. * Not used by default; consumers should inject their own logger. */ export class ConsoleLogger { constructor(options) { Object.defineProperty(this, "baseMeta", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.baseMeta = options?.baseMeta ?? {}; } /** Merge static base metadata into per-call metadata. */ mix(meta) { return this.baseMeta && Object.keys(this.baseMeta).length > 0 ? { ...this.baseMeta, ...(meta ?? {}) } : meta; } debug(message, meta) { console.debug(message, this.mix(meta)); } info(message, meta) { console.info(message, this.mix(meta)); } warn(message, meta) { console.warn(message, this.mix(meta)); } error(message, meta) { console.error(message, this.mix(meta)); } child(context) { const merged = { ...this.baseMeta, ...context }; return new ConsoleLogger({ baseMeta: merged }); } } export function createLogger(options) { // Prefer consumer-provided logger if available if (options?.logger) { const base = options.namespace && options.logger.child ? options.logger.child({ ns: options.namespace }) : options.logger; return base; } // Default to silent if no logger provided return new NoopLogger(); } export function childLogger(base, context) { return base.child ? base.child(context) : base; } //# sourceMappingURL=logger.js.map