Folder.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _gzipSize = _interopRequireDefault(require("gzip-size"));
  7. var _Module = _interopRequireDefault(require("./Module"));
  8. var _BaseFolder = _interopRequireDefault(require("./BaseFolder"));
  9. var _ConcatenatedModule = _interopRequireDefault(require("./ConcatenatedModule"));
  10. var _utils = require("./utils");
  11. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  12. class Folder extends _BaseFolder.default {
  13. get parsedSize() {
  14. return this.src ? this.src.length : 0;
  15. }
  16. get gzipSize() {
  17. if (!Object.prototype.hasOwnProperty.call(this, '_gzipSize')) {
  18. this._gzipSize = this.src ? _gzipSize.default.sync(this.src) : 0;
  19. }
  20. return this._gzipSize;
  21. }
  22. addModule(moduleData) {
  23. const pathParts = (0, _utils.getModulePathParts)(moduleData);
  24. if (!pathParts) {
  25. return;
  26. }
  27. const [folders, fileName] = [pathParts.slice(0, -1), pathParts[pathParts.length - 1]];
  28. let currentFolder = this;
  29. folders.forEach(folderName => {
  30. let childNode = currentFolder.getChild(folderName);
  31. if ( // Folder is not created yet
  32. !childNode || // In some situations (invalid usage of dynamic `require()`) webpack generates a module with empty require
  33. // context, but it's moduleId points to a directory in filesystem.
  34. // In this case we replace this `File` node with `Folder`.
  35. // See `test/stats/with-invalid-dynamic-require.json` as an example.
  36. !(childNode instanceof Folder)) {
  37. childNode = currentFolder.addChildFolder(new Folder(folderName));
  38. }
  39. currentFolder = childNode;
  40. });
  41. const ModuleConstructor = moduleData.modules ? _ConcatenatedModule.default : _Module.default;
  42. const module = new ModuleConstructor(fileName, moduleData, this);
  43. currentFolder.addChildModule(module);
  44. }
  45. toChartData() {
  46. return { ...super.toChartData(),
  47. parsedSize: this.parsedSize,
  48. gzipSize: this.gzipSize
  49. };
  50. }
  51. }
  52. exports.default = Folder;
  53. ;