UNPKG

@akala/core

Version:
71 lines 2.56 kB
import { LogLevels } from '../shared.js'; import { MulticastLogMiddleware } from './multicast.js'; export class LogRouteMiddleware { pattern; logger; logLevel; constructor(pattern, logger, logLevel) { this.pattern = pattern; this.logger = logger; this.logLevel = logLevel; } shouldHandle(logLevel, namespaces) { return (this.pattern === '*' || namespaces.length === 0 || this.pattern == namespaces[0]) && this.logLevel <= logLevel; } handle(level, namespaces, ...context) { if (this.shouldHandle(level, namespaces)) return this.logger.handle(level, namespaces.slice(1), ...context); throw undefined; } } export class MulticastLogRouteMiddleware extends LogRouteMiddleware { constructor(pattern, logLevel) { super(pattern, new MulticastLogMiddleware(), logLevel); this.use = this.logger.use.bind(this.logger); } use; } export class LoggerRoute { pattern; constructor(pattern) { this.pattern = pattern; this.error = new MulticastLogRouteMiddleware(this.pattern, LogLevels.error); this.warn = new MulticastLogRouteMiddleware(this.pattern, LogLevels.warn); this.help = new MulticastLogRouteMiddleware(this.pattern, LogLevels.help); this.data = new MulticastLogRouteMiddleware(this.pattern, LogLevels.data); this.info = new MulticastLogRouteMiddleware(this.pattern, LogLevels.info); this.debug = new MulticastLogRouteMiddleware(this.pattern, LogLevels.debug); this.prompt = new MulticastLogRouteMiddleware(this.pattern, LogLevels.prompt); this.verbose = new MulticastLogRouteMiddleware(this.pattern, LogLevels.verbose); this.input = new MulticastLogRouteMiddleware(this.pattern, LogLevels.input); this.silly = new MulticastLogRouteMiddleware(this.pattern, LogLevels.silly); } use(namespace) { const sub = new LoggerRoute(namespace); this.pipe(sub); return sub; } pipe(logger) { this.error.use(logger.error); this.warn.use(logger.warn); this.help.use(logger.help); this.data.use(logger.data); this.info.use(logger.info); this.debug.use(logger.debug); this.prompt.use(logger.prompt); this.verbose.use(logger.verbose); this.input.use(logger.input); this.silly.use(logger.silly); } error; warn; help; data; info; debug; prompt; verbose; input; silly; } //# sourceMappingURL=route.js.map