@akala/core
Version:
71 lines • 2.56 kB
JavaScript
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