| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports["default"] = void 0; |
| |
| var _fs = require("fs"); |
| |
| var _path = require("path"); |
| |
| var _istanbulLibInstrument = require("istanbul-lib-instrument"); |
| |
| var testExclude = require('test-exclude'); |
| |
| var findUp = require('find-up'); |
| |
| function getRealpath(n) { |
| try { |
| return (0, _fs.realpathSync)(n) || n; |
| } catch (e) { |
| return n; |
| } |
| } |
| |
| function makeShouldSkip() { |
| var exclude; |
| return function shouldSkip(file, opts) { |
| if (!exclude || exclude.cwd !== opts.cwd) { |
| var cwd = getRealpath(process.env.NYC_CWD || process.cwd()); |
| var nycConfig = process.env.NYC_CONFIG ? JSON.parse(process.env.NYC_CONFIG) : {}; |
| var config = {}; |
| |
| if (Object.keys(opts).length > 0) { |
| // explicitly configuring options in babel |
| // takes precedence. |
| config = opts; |
| } else if (nycConfig.include || nycConfig.exclude) { |
| // nyc was configured in a parent process (keep these settings). |
| config = { |
| include: nycConfig.include, |
| exclude: nycConfig.exclude |
| }; |
| } else { |
| // fallback to loading config from key in package.json. |
| config = { |
| configKey: 'nyc', |
| configPath: (0, _path.dirname)(findUp.sync('package.json', { |
| cwd: cwd |
| })) |
| }; |
| } |
| |
| exclude = testExclude(Object.assign({ |
| cwd: cwd |
| }, config)); |
| } |
| |
| return !exclude.shouldInstrument(file); |
| }; |
| } |
| |
| function makeVisitor(_ref) { |
| var t = _ref.types; |
| var shouldSkip = makeShouldSkip(); |
| return { |
| visitor: { |
| Program: { |
| enter: function enter(path) { |
| this.__dv__ = null; |
| var realPath = getRealpath(this.file.opts.filename); |
| |
| if (shouldSkip(realPath, this.opts)) { |
| return; |
| } |
| |
| var inputSourceMap = this.opts.inputSourceMap; |
| |
| if (this.opts.useInlineSourceMaps !== false) { |
| if (!inputSourceMap && this.file.inputMap) { |
| inputSourceMap = this.file.inputMap.sourcemap; |
| } |
| } |
| |
| this.__dv__ = (0, _istanbulLibInstrument.programVisitor)(t, realPath, { |
| coverageVariable: '__coverage__', |
| inputSourceMap: inputSourceMap |
| }); |
| |
| this.__dv__.enter(path); |
| }, |
| exit: function exit(path) { |
| if (!this.__dv__) { |
| return; |
| } |
| |
| var result = this.__dv__.exit(path); |
| |
| if (this.opts.onCover) { |
| this.opts.onCover(getRealpath(this.file.opts.filename), result.fileCoverage); |
| } |
| } |
| } |
| } |
| }; |
| } |
| |
| var _default = makeVisitor; |
| exports["default"] = _default; |