| "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; | 
| ; |