UNPKG

dependency-tree-81

Version:
47 lines (36 loc) 1.59 kB
'use strict'; const path = require('path'); const debug = require('debug')('tree'); class Config { constructor(options) { this.filename = options.filename; this.directory = options.directory || options.root; this.visited = options.visited || {}; this.nonExistent = options.nonExistent || []; this.isListForm = options.isListForm; this.requireConfig = options.config || options.requireConfig; this.webpackConfig = options.webpackConfig; this.nodeModulesConfig = options.nodeModulesConfig; this.detectiveConfig = options.detective || options.detectiveConfig || {}; this.tsConfig = options.tsConfig; this.filter = options.filter; if (!this.filename) { throw new Error('filename not given'); } if (!this.directory) { throw new Error('directory not given'); } if (this.filter && typeof this.filter !== 'function') { throw new Error('filter must be a function'); } if ('string' === typeof this.tsConfig) { debug('preparsing the ts config into an object for performance'); const ts = require('typescript'); const tsParsedConfig = ts.readJsonConfigFile(this.tsConfig, ts.sys.readFile); const obj = ts.parseJsonSourceFileConfigFileContent(tsParsedConfig, ts.sys, path.dirname(this.tsConfig)); this.tsConfig = obj.raw; } debug('given filename: ' + this.filename); this.filename = path.resolve(process.cwd(), this.filename); debug('resolved filename: ' + this.filename); debug('visited: ', this.visited); } clone () { return new Config(this); } } module.exports = Config;