From 7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sun, 28 May 2017 00:38:50 +0200 Subject: add linting (and some initial fixes) --- node_modules/nyc/lib/source-maps.js | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 node_modules/nyc/lib/source-maps.js (limited to 'node_modules/nyc/lib/source-maps.js') diff --git a/node_modules/nyc/lib/source-maps.js b/node_modules/nyc/lib/source-maps.js new file mode 100644 index 000000000..c3238544c --- /dev/null +++ b/node_modules/nyc/lib/source-maps.js @@ -0,0 +1,57 @@ +const convertSourceMap = require('convert-source-map') +const libCoverage = require('istanbul-lib-coverage') +const libSourceMaps = require('istanbul-lib-source-maps') +const fs = require('fs') +const path = require('path') + +// TODO: write some unit tests for this class. +function SourceMaps (opts) { + this.cache = opts.cache + this.cacheDirectory = opts.cacheDirectory + this.sourceMapCache = libSourceMaps.createSourceMapStore() + this.loadedMaps = {} +} + +SourceMaps.prototype.extractAndRegister = function (code, filename, hash) { + var sourceMap = convertSourceMap.fromSource(code) || convertSourceMap.fromMapFileSource(code, path.dirname(filename)) + if (sourceMap) { + if (this.cache && hash) { + var mapPath = path.join(this.cacheDirectory, hash + '.map') + fs.writeFileSync(mapPath, sourceMap.toJSON()) + } else { + this.sourceMapCache.registerMap(filename, sourceMap.sourcemap) + } + } + return sourceMap +} + +SourceMaps.prototype.remapCoverage = function (obj) { + var transformed = this.sourceMapCache.transformCoverage( + libCoverage.createCoverageMap(obj) + ) + return transformed.map.data +} + +SourceMaps.prototype.reloadCachedSourceMaps = function (report) { + var _this = this + Object.keys(report).forEach(function (absFile) { + var fileReport = report[absFile] + if (fileReport && fileReport.contentHash) { + var hash = fileReport.contentHash + if (!(hash in _this.loadedMaps)) { + try { + var mapPath = path.join(_this.cacheDirectory, hash + '.map') + _this.loadedMaps[hash] = JSON.parse(fs.readFileSync(mapPath, 'utf8')) + } catch (e) { + // set to false to avoid repeatedly trying to load the map + _this.loadedMaps[hash] = false + } + } + if (_this.loadedMaps[hash]) { + _this.sourceMapCache.registerMap(absFile, _this.loadedMaps[hash]) + } + } + }) +} + +module.exports = SourceMaps -- cgit v1.2.3