ConcatenatedModule.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _Module = _interopRequireDefault(require("./Module"));
  7. var _ContentModule = _interopRequireDefault(require("./ContentModule"));
  8. var _ContentFolder = _interopRequireDefault(require("./ContentFolder"));
  9. var _utils = require("./utils");
  10. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  11. class ConcatenatedModule extends _Module.default {
  12. constructor(name, data, parent) {
  13. super(name, data, parent);
  14. this.name += ' (concatenated)';
  15. this.children = Object.create(null);
  16. this.fillContentModules();
  17. }
  18. get parsedSize() {
  19. var _this$getParsedSize;
  20. return (_this$getParsedSize = this.getParsedSize()) !== null && _this$getParsedSize !== void 0 ? _this$getParsedSize : this.getEstimatedSize('parsedSize');
  21. }
  22. get gzipSize() {
  23. var _this$getGzipSize;
  24. return (_this$getGzipSize = this.getGzipSize()) !== null && _this$getGzipSize !== void 0 ? _this$getGzipSize : this.getEstimatedSize('gzipSize');
  25. }
  26. getEstimatedSize(sizeType) {
  27. const parentModuleSize = this.parent[sizeType];
  28. if (parentModuleSize !== undefined) {
  29. return Math.floor(this.size / this.parent.size * parentModuleSize);
  30. }
  31. }
  32. fillContentModules() {
  33. this.data.modules.forEach(moduleData => this.addContentModule(moduleData));
  34. }
  35. addContentModule(moduleData) {
  36. const pathParts = (0, _utils.getModulePathParts)(moduleData);
  37. if (!pathParts) {
  38. return;
  39. }
  40. const [folders, fileName] = [pathParts.slice(0, -1), pathParts[pathParts.length - 1]];
  41. let currentFolder = this;
  42. folders.forEach(folderName => {
  43. let childFolder = currentFolder.getChild(folderName);
  44. if (!childFolder) {
  45. childFolder = currentFolder.addChildFolder(new _ContentFolder.default(folderName, this));
  46. }
  47. currentFolder = childFolder;
  48. });
  49. const ModuleConstructor = moduleData.modules ? ConcatenatedModule : _ContentModule.default;
  50. const module = new ModuleConstructor(fileName, moduleData, this);
  51. currentFolder.addChildModule(module);
  52. }
  53. getChild(name) {
  54. return this.children[name];
  55. }
  56. addChildModule(module) {
  57. module.parent = this;
  58. this.children[module.name] = module;
  59. }
  60. addChildFolder(folder) {
  61. folder.parent = this;
  62. this.children[folder.name] = folder;
  63. return folder;
  64. }
  65. mergeNestedFolders() {
  66. Object.values(this.children).forEach(child => {
  67. if (child.mergeNestedFolders) {
  68. child.mergeNestedFolders();
  69. }
  70. });
  71. }
  72. toChartData() {
  73. return { ...super.toChartData(),
  74. concatenated: true,
  75. groups: Object.values(this.children).map(child => child.toChartData())
  76. };
  77. }
  78. }
  79. exports.default = ConcatenatedModule;
  80. ;