| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.default = void 0;var _lodash = _interopRequireDefault(require("lodash"));var _Node = _interopRequireDefault(require("./Node"));function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }class BaseFolder extends _Node.default {  constructor(name, parent) {    super(name, parent);    this.children = Object.create(null);  }  get src() {    if (!_lodash.default.has(this, '_src')) {      this._src = this.walk((node, src) => src += node.src || '', '', false);    }    return this._src;  }  get size() {    if (!_lodash.default.has(this, '_size')) {      this._size = this.walk((node, size) => size + node.size, 0, false);    }    return this._size;  }  getChild(name) {    return this.children[name];  }  addChildModule(module) {    const {      name    } = module;    const currentChild = this.children[name]; // For some reason we already have this node in children and it's a folder.    if (currentChild && currentChild instanceof BaseFolder) return;    if (currentChild) {      // We already have this node in children and it's a module.      // Merging it's data.      currentChild.mergeData(module.data);    } else {      // Pushing new module      module.parent = this;      this.children[name] = module;    }    delete this._size;    delete this._src;  }  addChildFolder(folder) {    folder.parent = this;    this.children[folder.name] = folder;    delete this._size;    delete this._src;    return folder;  }  walk(walker, state = {}, deep = true) {    let stopped = false;    _lodash.default.each(this.children, child => {      if (deep && child.walk) {        state = child.walk(walker, state, stop);      } else {        state = walker(child, state, stop);      }      if (stopped) return false;    });    return state;    function stop(finalState) {      stopped = true;      return finalState;    }  }  mergeNestedFolders() {    if (!this.isRoot) {      let childNames;      while ((childNames = Object.keys(this.children)).length === 1) {        const childName = childNames[0];        const onlyChild = this.children[childName];        if (onlyChild instanceof this.constructor) {          this.name += `/${onlyChild.name}`;          this.children = onlyChild.children;        } else {          break;        }      }    }    this.walk(child => {      child.parent = this;      if (child.mergeNestedFolders) {        child.mergeNestedFolders();      }    }, null, false);  }  toChartData() {    return {      label: this.name,      path: this.path,      statSize: this.size,      groups: _lodash.default.invokeMap(this.children, 'toChartData')    };  }}exports.default = BaseFolder;;
 |