@stryker-mutator/core
Version:
The extendable JavaScript mutation testing framework
57 lines • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.configure = exports.StripAnsiAppender = void 0;
/**
* Pattern that can find ANSI escape codes
* @see https://github.com/chalk/ansi-regex/blob/02fa893d619d3da85411acc8fd4e2eea0e95a9d9/index.js#L1
*/
const pattern = [
'[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
'(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))',
].join('|');
const ansiRegex = new RegExp(pattern, 'g');
/**
* A appender that can strip ANSI escape codes, so coloring codes don't end up in the log file.
*/
class StripAnsiAppender {
constructor(appender) {
this.appender = appender;
}
append(loggingEvent) {
let ansiStripped = false;
const strippedData = loggingEvent.data.map((dataElement) => {
if (typeof dataElement === 'string') {
return dataElement.replace(ansiRegex, () => {
ansiStripped = true;
return '';
});
}
return dataElement;
});
if (ansiStripped) {
const newEvent = {
...loggingEvent,
data: strippedData,
};
this.appender(newEvent);
}
else {
this.appender(loggingEvent);
}
}
}
exports.StripAnsiAppender = StripAnsiAppender;
/**
* This method is expected by log4js to have this _exact_ name
* and signature.
* @see https://log4js-node.github.io/log4js-node/writing-appenders.html
* @param config The appender configuration delivered by log4js
* @param _ The layouts provided by log4js
* @param findAppender A method to locate other appenders
*/
function configure(config, _, findAppender) {
const stripAnsi = new StripAnsiAppender(findAppender(config.appender));
return stripAnsi.append.bind(stripAnsi);
}
exports.configure = configure;
//# sourceMappingURL=strip-ansi-appender.cjs.map