logpipes
Version:
Console.log transformation pipes
52 lines • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createLogMessageFilterPipe = exports.getLogMessageFilterPipeOptions = void 0;
/** Returns default LogMessageFilterPipeOptions. */
function getLogMessageFilterPipeOptions() {
return {
isCaseSensitive: false,
excludedMessageTokens: [],
};
}
exports.getLogMessageFilterPipeOptions = getLogMessageFilterPipeOptions;
/** Creates a new instance of LogMessageFilterPipe. */
function createLogMessageFilterPipe(inputOptions) {
const { excludedMessageTokens, isCaseSensitive } = Object.assign(Object.assign({}, getLogMessageFilterPipeOptions()), inputOptions);
const stringTokens = excludedMessageTokens.filter(t => typeof t === 'string').map(t => isCaseSensitive ? t : t.toLowerCase());
const regexTokens = excludedMessageTokens.filter(t => typeof t === 'object');
// Move strings first in the list.
excludedMessageTokens.sort((t1, t2) => typeof t1 === typeof t2 ? 0 : typeof t1 === 'string' ? -1 : 1);
return (_, ...args) => {
if (excludedMessageTokens.length === 0) {
return args;
}
if (isCaseSensitive) {
for (const arg of args) {
if (typeof arg === 'string') {
if (stringTokens.some(token => arg.includes(token))) {
return [];
}
if (regexTokens.some(t => t.test(arg))) {
return [];
}
}
}
}
else { // Case-insensitive.
for (const arg of args) {
if (typeof arg === 'string') {
const lcArg = arg.toLowerCase();
if (stringTokens.some(lcToken => lcArg.includes(lcToken))) {
return [];
}
if (regexTokens.some(t => t.test(arg))) {
return [];
}
}
}
}
return args;
};
}
exports.createLogMessageFilterPipe = createLogMessageFilterPipe;
//# sourceMappingURL=LogMessageFilterPipe.js.map