{"version":3,"sources":["jsdelivr-header.js","/npm/local-nyc@15.1.3/index.js"],"names":[],"mappings":"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","file":"/npm/local-nyc@15.1.3/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/local-nyc@15.1.3/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict'\r\n\r\n/* global __coverage__ */\r\n\r\nconst cachingTransform = require('caching-transform')\r\nconst findCacheDir = require('find-cache-dir')\r\nconst fs = require('./lib/fs-promises')\r\nconst os = require('os')\r\nconst { debuglog, promisify } = require('util')\r\nconst glob = promisify(require('glob'))\r\nconst Hash = require('./lib/hash')\r\nconst libCoverage = require('istanbul-lib-coverage')\r\nconst libHook = require('istanbul-lib-hook')\r\nconst { ProcessInfo, ProcessDB } = require('istanbul-lib-processinfo')\r\nconst mkdirp = require('make-dir')\r\nconst Module = require('module')\r\nconst onExit = require('signal-exit')\r\nconst path = require('path')\r\nconst rimraf = promisify(require('rimraf'))\r\nconst SourceMaps = require('./lib/source-maps')\r\nconst TestExclude = require('test-exclude')\r\nconst pMap = require('p-map')\r\nconst getPackageType = require('get-package-type')\r\n\r\nconst debugLog = debuglog('nyc')\r\n\r\nconst nycSelfCoverageHelper = Symbol.for('nyc self-test coverage helper')\r\n/* istanbul ignore next */\r\nconst selfCoverageHelper = global[nycSelfCoverageHelper] || {\r\n  // Avoid additional conditional code\r\n  onExit () {}\r\n}\r\n\r\nfunction coverageFinder () {\r\n  var coverage = global.__coverage__\r\n  if (typeof __coverage__ === 'object') coverage = __coverage__\r\n  if (!coverage) coverage = global.__coverage__ = {}\r\n  return coverage\r\n}\r\n\r\nclass NYC {\r\n  constructor (config) {\r\n    this.config = { ...config }\r\n\r\n    this.subprocessBin = config.subprocessBin || path.resolve(__dirname, './bin/nyc.js')\r\n    this._tempDirectory = config.tempDirectory || config.tempDir || './.nyc_output'\r\n    this._instrumenterLib = require(config.instrumenter || './lib/instrumenters/istanbul')\r\n    this._reportDir = config.reportDir || 'coverage'\r\n    this._sourceMap = typeof config.sourceMap === 'boolean' ? config.sourceMap : true\r\n    this._showProcessTree = config.showProcessTree || false\r\n    this._eagerInstantiation = config.eager || false\r\n    this.cwd = config.cwd || process.cwd()\r\n    this.reporter = [].concat(config.reporter || 'text')\r\n\r\n    this.cacheDirectory = (config.cacheDir && path.resolve(config.cacheDir)) || findCacheDir({ name: 'nyc', cwd: this.cwd })\r\n    this.cache = Boolean(this.cacheDirectory && config.cache)\r\n\r\n    this.extensions = [].concat(config.extension || [])\r\n      .concat('.js')\r\n      .map(ext => ext.toLowerCase())\r\n      .filter((item, pos, arr) => arr.indexOf(item) === pos)\r\n\r\n    this.exclude = new TestExclude({\r\n      cwd: this.cwd,\r\n      include: config.include,\r\n      exclude: config.exclude,\r\n      excludeNodeModules: config.excludeNodeModules !== false,\r\n      extension: this.extensions\r\n    })\r\n\r\n    this.sourceMaps = new SourceMaps({\r\n      cache: this.cache,\r\n      cacheDirectory: this.cacheDirectory\r\n    })\r\n\r\n    // require extensions can be provided as config in package.json.\r\n    this.require = [].concat(config.require || [])\r\n\r\n    this.transforms = this.extensions.reduce((transforms, ext) => {\r\n      transforms[ext] = this._createTransform(ext)\r\n      return transforms\r\n    }, {})\r\n\r\n    this.hookRequire = config.hookRequire\r\n    this.hookRunInContext = config.hookRunInContext\r\n    this.hookRunInThisContext = config.hookRunInThisContext\r\n    this.fakeRequire = null\r\n\r\n    this.processInfo = new ProcessInfo(Object.assign({}, config._processInfo, {\r\n      directory: path.resolve(this.tempDirectory(), 'processinfo')\r\n    }))\r\n\r\n    this.hashCache = {}\r\n  }\r\n\r\n  _createTransform (ext) {\r\n    const opts = {\r\n      salt: Hash.salt(this.config),\r\n      hashData: (input, metadata) => [metadata.filename],\r\n      filenamePrefix: metadata => path.parse(metadata.filename).name + '-',\r\n      onHash: (input, metadata, hash) => {\r\n        this.hashCache[metadata.filename] = hash\r\n      },\r\n      cacheDir: this.cacheDirectory,\r\n      // when running --all we should not load source-file from\r\n      // cache, we want to instead return the fake source.\r\n      disableCache: this._disableCachingTransform(),\r\n      ext: ext\r\n    }\r\n    if (this._eagerInstantiation) {\r\n      opts.transform = this._transformFactory(this.cacheDirectory)\r\n    } else {\r\n      opts.factory = this._transformFactory.bind(this)\r\n    }\r\n    return cachingTransform(opts)\r\n  }\r\n\r\n  _disableCachingTransform () {\r\n    return !(this.cache && this.config.isChildProcess)\r\n  }\r\n\r\n  _loadAdditionalModules () {\r\n    if (!this.config.useSpawnWrap || this.require.length === 0) {\r\n      return\r\n    }\r\n\r\n    const resolveFrom = require('resolve-from')\r\n    this.require.forEach(requireModule => {\r\n      // Attempt to require the module relative to the directory being instrumented.\r\n      // Then try other locations, e.g. the nyc node_modules folder.\r\n      require(resolveFrom.silent(this.cwd, requireModule) || requireModule)\r\n    })\r\n  }\r\n\r\n  instrumenter () {\r\n    return this._instrumenter || (this._instrumenter = this._createInstrumenter())\r\n  }\r\n\r\n  _createInstrumenter () {\r\n    return this._instrumenterLib({\r\n      ignoreClassMethods: [].concat(this.config.ignoreClassMethod).filter(a => a),\r\n      produceSourceMap: this.config.produceSourceMap,\r\n      compact: this.config.compact,\r\n      preserveComments: this.config.preserveComments,\r\n      esModules: this.config.esModules,\r\n      parserPlugins: this.config.parserPlugins\r\n    })\r\n  }\r\n\r\n  addFile (filename) {\r\n    const source = this._readTranspiledSource(filename)\r\n    this._maybeInstrumentSource(source, filename)\r\n  }\r\n\r\n  _readTranspiledSource (filePath) {\r\n    var source = null\r\n    var ext = path.extname(filePath)\r\n    if (typeof Module._extensions[ext] === 'undefined') {\r\n      ext = '.js'\r\n    }\r\n    Module._extensions[ext]({\r\n      _compile: function (content, filename) {\r\n        source = content\r\n      }\r\n    }, filePath)\r\n    return source\r\n  }\r\n\r\n  _getSourceMap (code, filename, hash) {\r\n    const sourceMap = {}\r\n    if (this._sourceMap) {\r\n      sourceMap.sourceMap = this.sourceMaps.extract(code, filename)\r\n      sourceMap.registerMap = () => this.sourceMaps.registerMap(filename, hash, sourceMap.sourceMap)\r\n    } else {\r\n      sourceMap.registerMap = () => {}\r\n    }\r\n\r\n    return sourceMap\r\n  }\r\n\r\n  async addAllFiles () {\r\n    this._loadAdditionalModules()\r\n\r\n    this.fakeRequire = true\r\n    const files = await this.exclude.glob(this.cwd)\r\n    for (const relFile of files) {\r\n      const filename = path.resolve(this.cwd, relFile)\r\n      const ext = path.extname(filename)\r\n      if (ext === '.mjs' || (ext === '.js' && await getPackageType(filename) === 'module')) {\r\n        const source = await fs.readFile(filename, 'utf8')\r\n        this.instrumenter().instrumentSync(\r\n          source,\r\n          filename,\r\n          this._getSourceMap(source, filename)\r\n        )\r\n      } else {\r\n        this.addFile(filename)\r\n      }\r\n      const coverage = coverageFinder()\r\n      const lastCoverage = this.instrumenter().lastFileCoverage()\r\n      if (lastCoverage) {\r\n        coverage[lastCoverage.path] = {\r\n          ...lastCoverage,\r\n          // Only use this data if we don't have it without `all: true`\r\n          all: true\r\n        }\r\n      }\r\n    }\r\n    this.fakeRequire = false\r\n\r\n    this.writeCoverageFile()\r\n  }\r\n\r\n  async instrumentAllFiles (input, output) {\r\n    let inputDir = '.' + path.sep\r\n    const visitor = async relFile => {\r\n      const inFile = path.resolve(inputDir, relFile)\r\n      const inCode = await fs.readFile(inFile, 'utf-8')\r\n      const outCode = this._transform(inCode, inFile) || inCode\r\n\r\n      if (output) {\r\n        const { mode } = await fs.stat(inFile)\r\n        const outFile = path.resolve(output, relFile)\r\n\r\n        await mkdirp(path.dirname(outFile))\r\n        await fs.writeFile(outFile, outCode)\r\n        await fs.chmod(outFile, mode)\r\n      } else {\r\n        console.log(outCode)\r\n      }\r\n    }\r\n\r\n    this._loadAdditionalModules()\r\n\r\n    const stats = await fs.lstat(input)\r\n    if (stats.isDirectory()) {\r\n      inputDir = input\r\n\r\n      const filesToInstrument = await this.exclude.glob(input)\r\n\r\n      const concurrency = output ? os.cpus().length : 1\r\n      if (this.config.completeCopy && output) {\r\n        const files = await glob(path.resolve(input, '**'), {\r\n          dot: true,\r\n          nodir: true,\r\n          ignore: ['**/.git', '**/.git/**', path.join(output, '**')]\r\n        })\r\n        const destDirs = new Set(\r\n          files.map(src => path.dirname(path.join(output, path.relative(input, src))))\r\n        )\r\n\r\n        await pMap(\r\n          destDirs,\r\n          dir => mkdirp(dir),\r\n          { concurrency }\r\n        )\r\n        await pMap(\r\n          files,\r\n          src => fs.copyFile(src, path.join(output, path.relative(input, src))),\r\n          { concurrency }\r\n        )\r\n      }\r\n\r\n      await pMap(filesToInstrument, visitor, { concurrency })\r\n    } else {\r\n      await visitor(input)\r\n    }\r\n  }\r\n\r\n  _transform (code, filename) {\r\n    const extname = path.extname(filename).toLowerCase()\r\n    const transform = this.transforms[extname] || (() => null)\r\n\r\n    return transform(code, { filename })\r\n  }\r\n\r\n  _maybeInstrumentSource (code, filename) {\r\n    if (!this.exclude.shouldInstrument(filename)) {\r\n      return null\r\n    }\r\n\r\n    return this._transform(code, filename)\r\n  }\r\n\r\n  maybePurgeSourceMapCache () {\r\n    if (!this.cache) {\r\n      this.sourceMaps.purgeCache()\r\n    }\r\n  }\r\n\r\n  _transformFactory (cacheDir) {\r\n    const instrumenter = this.instrumenter()\r\n    let instrumented\r\n\r\n    return (code, metadata, hash) => {\r\n      const filename = metadata.filename\r\n      const sourceMap = this._getSourceMap(code, filename, hash)\r\n\r\n      try {\r\n        instrumented = instrumenter.instrumentSync(code, filename, sourceMap)\r\n      } catch (e) {\r\n        debugLog('failed to instrument ' + filename + ' with error: ' + e.stack)\r\n        if (this.config.exitOnError) {\r\n          console.error('Failed to instrument ' + filename)\r\n          process.exit(1)\r\n        } else {\r\n          instrumented = code\r\n        }\r\n      }\r\n\r\n      if (this.fakeRequire) {\r\n        return 'function x () {}'\r\n      } else {\r\n        return instrumented\r\n      }\r\n    }\r\n  }\r\n\r\n  _handleJs (code, options) {\r\n    // ensure the path has correct casing (see istanbuljs/nyc#269 and nodejs/node#6624)\r\n    const filename = path.resolve(this.cwd, options.filename)\r\n    return this._maybeInstrumentSource(code, filename) || code\r\n  }\r\n\r\n  _addHook (type) {\r\n    const handleJs = this._handleJs.bind(this)\r\n    const dummyMatcher = () => true // we do all processing in transformer\r\n    libHook['hook' + type](dummyMatcher, handleJs, { extensions: this.extensions })\r\n  }\r\n\r\n  _addRequireHooks () {\r\n    if (this.hookRequire) {\r\n      this._addHook('Require')\r\n    }\r\n    if (this.hookRunInContext) {\r\n      this._addHook('RunInContext')\r\n    }\r\n    if (this.hookRunInThisContext) {\r\n      this._addHook('RunInThisContext')\r\n    }\r\n  }\r\n\r\n  async createTempDirectory () {\r\n    await mkdirp(this.tempDirectory())\r\n    if (this.cache) {\r\n      await mkdirp(this.cacheDirectory)\r\n    }\r\n\r\n    await mkdirp(this.processInfo.directory)\r\n  }\r\n\r\n  async reset () {\r\n    if (!process.env.NYC_CWD) {\r\n      await rimraf(this.tempDirectory())\r\n    }\r\n\r\n    await this.createTempDirectory()\r\n  }\r\n\r\n  _wrapExit () {\r\n    selfCoverageHelper.registered = true\r\n\r\n    // we always want to write coverage\r\n    // regardless of how the process exits.\r\n    onExit(\r\n      () => {\r\n        this.writeCoverageFile()\r\n        selfCoverageHelper.onExit()\r\n      },\r\n      { alwaysLast: true }\r\n    )\r\n  }\r\n\r\n  wrap (bin) {\r\n    process.env.NYC_PROCESS_ID = this.processInfo.uuid\r\n    // This is a bug with the spawn-wrap method where\r\n    // we cannot force propagation of NYC_PROCESS_ID.\r\n    if (!this.config.useSpawnWrap) {\r\n      const updateVariable = require('./lib/register-env.js')\r\n      updateVariable('NYC_PROCESS_ID')\r\n    }\r\n    this._addRequireHooks()\r\n    this._wrapExit()\r\n    this._loadAdditionalModules()\r\n    return this\r\n  }\r\n\r\n  writeCoverageFile () {\r\n    var coverage = coverageFinder()\r\n\r\n    // Remove any files that should be excluded but snuck into the coverage\r\n    Object.keys(coverage).forEach(function (absFile) {\r\n      if (!this.exclude.shouldInstrument(absFile)) {\r\n        delete coverage[absFile]\r\n      }\r\n    }, this)\r\n\r\n    if (this.cache) {\r\n      Object.keys(coverage).forEach(function (absFile) {\r\n        if (this.hashCache[absFile] && coverage[absFile]) {\r\n          coverage[absFile].contentHash = this.hashCache[absFile]\r\n        }\r\n      }, this)\r\n    }\r\n\r\n    var id = this.processInfo.uuid\r\n    var coverageFilename = path.resolve(this.tempDirectory(), id + '.json')\r\n\r\n    fs.writeFileSync(\r\n      coverageFilename,\r\n      JSON.stringify(coverage),\r\n      'utf-8'\r\n    )\r\n\r\n    this.processInfo.coverageFilename = coverageFilename\r\n    this.processInfo.files = Object.keys(coverage)\r\n    this.processInfo.saveSync()\r\n  }\r\n\r\n  async getCoverageMapFromAllCoverageFiles (baseDirectory) {\r\n    const map = libCoverage.createCoverageMap({})\r\n    const files = await this.coverageFiles(baseDirectory)\r\n\r\n    await pMap(\r\n      files,\r\n      async f => {\r\n        const report = await this.coverageFileLoad(f, baseDirectory)\r\n        map.merge(report)\r\n      },\r\n      { concurrency: os.cpus().length }\r\n    )\r\n\r\n    map.data = await this.sourceMaps.remapCoverage(map.data)\r\n\r\n    // depending on whether source-code is pre-instrumented\r\n    // or instrumented using a JIT plugin like @babel/require\r\n    // you may opt to exclude files after applying\r\n    // source-map remapping logic.\r\n    if (this.config.excludeAfterRemap) {\r\n      map.filter(filename => this.exclude.shouldInstrument(filename))\r\n    }\r\n\r\n    return map\r\n  }\r\n\r\n  async report () {\r\n    const libReport = require('istanbul-lib-report')\r\n    const reports = require('istanbul-reports')\r\n\r\n    const context = libReport.createContext({\r\n      dir: this.reportDirectory(),\r\n      watermarks: this.config.watermarks,\r\n      coverageMap: await this.getCoverageMapFromAllCoverageFiles()\r\n    })\r\n\r\n    this.reporter.forEach((_reporter) => {\r\n      reports.create(_reporter, {\r\n        skipEmpty: this.config.skipEmpty,\r\n        skipFull: this.config.skipFull,\r\n        projectRoot: this.cwd,\r\n        maxCols: process.stdout.columns || 100\r\n      }).execute(context)\r\n    })\r\n\r\n    if (this._showProcessTree) {\r\n      await this.showProcessTree()\r\n    }\r\n  }\r\n\r\n  async writeProcessIndex () {\r\n    const db = new ProcessDB(this.processInfo.directory)\r\n    await db.writeIndex()\r\n  }\r\n\r\n  async showProcessTree () {\r\n    const db = new ProcessDB(this.processInfo.directory)\r\n    console.log(await db.renderTree(this))\r\n  }\r\n\r\n  async checkCoverage (thresholds, perFile) {\r\n    const map = await this.getCoverageMapFromAllCoverageFiles()\r\n\r\n    if (perFile) {\r\n      map.files().forEach(file => {\r\n        // ERROR: Coverage for lines (90.12%) does not meet threshold (120%) for index.js\r\n        this._checkCoverage(map.fileCoverageFor(file).toSummary(), thresholds, file)\r\n      })\r\n    } else {\r\n      // ERROR: Coverage for lines (90.12%) does not meet global threshold (120%)\r\n      this._checkCoverage(map.getCoverageSummary(), thresholds)\r\n    }\r\n  }\r\n\r\n  _checkCoverage (summary, thresholds, file) {\r\n    Object.keys(thresholds).forEach(function (key) {\r\n      var coverage = summary[key].pct\r\n      if (coverage < thresholds[key]) {\r\n        process.exitCode = 1\r\n        if (file) {\r\n          console.error('ERROR: Coverage for ' + key + ' (' + coverage + '%) does not meet threshold (' + thresholds[key] + '%) for ' + file)\r\n        } else {\r\n          console.error('ERROR: Coverage for ' + key + ' (' + coverage + '%) does not meet global threshold (' + thresholds[key] + '%)')\r\n        }\r\n      }\r\n    })\r\n  }\r\n\r\n  coverageFiles (baseDirectory = this.tempDirectory()) {\r\n    return fs.readdir(baseDirectory)\r\n  }\r\n\r\n  async coverageFileLoad (filename, baseDirectory = this.tempDirectory()) {\r\n    try {\r\n      const report = JSON.parse(await fs.readFile(path.resolve(baseDirectory, filename)), 'utf8')\r\n      await this.sourceMaps.reloadCachedSourceMaps(report)\r\n      return report\r\n    } catch (error) {\r\n      return {}\r\n    }\r\n  }\r\n\r\n  // TODO: Remove from nyc v16\r\n  async coverageData (baseDirectory) {\r\n    const files = await this.coverageFiles(baseDirectory)\r\n    return pMap(\r\n      files,\r\n      f => this.coverageFileLoad(f, baseDirectory),\r\n      { concurrency: os.cpus().length }\r\n    )\r\n  }\r\n\r\n  tempDirectory () {\r\n    return path.resolve(this.cwd, this._tempDirectory)\r\n  }\r\n\r\n  reportDirectory () {\r\n    return path.resolve(this.cwd, this._reportDir)\r\n  }\r\n}\r\n\r\nmodule.exports = NYC\r\n"]}