UNPKG

@akala/core

Version:
33 lines 1.49 kB
export class MulticastLogMiddlewareAsync { loggers; constructor(loggers = []) { this.loggers = loggers; } use(...middlewares) { this.loggers.push(...middlewares); } shouldHandle(logLevel, namespaces) { return this.loggers.reduce((previous, current) => previous && current.shouldHandle(logLevel, namespaces), true); } handle(logLevel, namespaces, ...args) { return Promise.allSettled(this.loggers.filter(l => l.shouldHandle(logLevel, namespaces)).map(l => l.handle(logLevel, namespaces, ...args))).then((res) => { const results = res.filter(x => x); const fullfilled = results.filter(r => r.status === 'fulfilled').map(r => r.value).filter(r => r); const rejected = results.filter(r => r.status === 'rejected').map(r => r.reason); if (results.length === 0 || rejected.length == 0) return Promise.reject(); if (fullfilled.length === 1) return (fullfilled[0]); if (rejected.length === 1) return Promise.reject(rejected[0]); if (fullfilled.length > 1) return new AggregateError(fullfilled, 'Multiple loggers handled the message'); if (rejected.length > 1) return Promise.reject(rejected); }); } } export function multicastLoggerAsync(...loggers) { return new MulticastLogMiddlewareAsync(loggers); } //# sourceMappingURL=multicast.js.map