blob: 0ebb1604fb2faf551b9f100a924e7718cc65c4b6 [file] [log] [blame]
const path = require("path");
const convertSourceMap = require("convert-source-map");
const istanbul = require("istanbul-lib-instrument");
const createPreprocessor = (logger, config) => {
const log = logger.create("preprocessor.karma-coverage-istanbul-instrumenter");
const instrumenter = istanbul.createInstrumenter(config.coverageIstanbulInstrumenter);
return (content, file, done) => {
log.debug("Processing \"%s\".", file.originalPath);
let sourceMap = convertSourceMap.fromSource(content);
if(!sourceMap) {
sourceMap = convertSourceMap.fromMapFileSource(content, path.dirname(file.originalPath));
}
instrumenter.instrument(content, file.originalPath, (error, instrumentedSource) => {
if(error) {
log.error("%s\nin %s", error.message, file.originalPath);
done(error.message);
}
else {
done(instrumentedSource);
}
}, sourceMap ? sourceMap.sourcemap : undefined);
};
};
createPreprocessor.$inject = [
"logger",
"config"
];
module.exports = createPreprocessor;