@bundle-stats/utils 4.0.0-alpha.9 → 4.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/lib/report/create.js +2 -4
  2. package/lib/report/create.js.map +1 -1
  3. package/lib/webpack/extract/assets.js +27 -32
  4. package/lib/webpack/extract/assets.js.map +1 -1
  5. package/lib/webpack/extract/index.js +0 -2
  6. package/lib/webpack/extract/index.js.map +1 -1
  7. package/lib/webpack/extract/modules-packages-duplicate.js +1 -1
  8. package/lib/webpack/extract/modules-packages-duplicate.js.map +1 -1
  9. package/lib/webpack/extract/modules-packages.js +4 -5
  10. package/lib/webpack/extract/modules-packages.js.map +1 -1
  11. package/lib/webpack/extract/modules.js +9 -4
  12. package/lib/webpack/extract/modules.js.map +1 -1
  13. package/lib/webpack/index.js +1 -0
  14. package/lib/webpack/index.js.map +1 -1
  15. package/lib/webpack/metrics.js +11 -11
  16. package/lib/webpack/metrics.js.map +1 -1
  17. package/lib/webpack/types.js +3 -0
  18. package/lib/webpack/types.js.map +1 -0
  19. package/lib/webpack/utils.js +1 -1
  20. package/lib/webpack/utils.js.map +1 -1
  21. package/lib-esm/webpack/extract/assets.js +27 -31
  22. package/lib-esm/webpack/extract/assets.js.map +1 -1
  23. package/lib-esm/webpack/extract/index.js +0 -2
  24. package/lib-esm/webpack/extract/index.js.map +1 -1
  25. package/lib-esm/webpack/extract/modules-packages.js +3 -3
  26. package/lib-esm/webpack/extract/modules-packages.js.map +1 -1
  27. package/lib-esm/webpack/extract/modules.js +9 -4
  28. package/lib-esm/webpack/extract/modules.js.map +1 -1
  29. package/lib-esm/webpack/index.js +1 -0
  30. package/lib-esm/webpack/index.js.map +1 -1
  31. package/lib-esm/webpack/metrics.js +11 -11
  32. package/lib-esm/webpack/metrics.js.map +1 -1
  33. package/lib-esm/webpack/types.js +2 -0
  34. package/lib-esm/webpack/types.js.map +1 -0
  35. package/package.json +7 -7
  36. package/src/constants.ts +0 -24
  37. package/src/webpack/extract/assets.ts +39 -62
  38. package/src/webpack/extract/index.js +2 -7
  39. package/src/webpack/extract/modules-packages.ts +7 -7
  40. package/src/webpack/extract/modules.ts +14 -18
  41. package/src/webpack/index.js +1 -0
  42. package/src/webpack/metrics.js +11 -11
  43. package/src/webpack/types.ts +54 -0
  44. package/types/constants.d.ts +0 -20
  45. package/types/webpack/extract/assets.d.ts +3 -11
  46. package/types/webpack/extract/modules-packages.d.ts +2 -2
  47. package/types/webpack/extract/modules.d.ts +3 -2
  48. package/types/webpack/index.d.ts +1 -0
  49. package/types/webpack/types.d.ts +45 -0
  50. package/lib/webpack/extract/modules-count.js +0 -14
  51. package/lib/webpack/extract/modules-count.js.map +0 -1
  52. package/lib-esm/webpack/extract/modules-count.js +0 -7
  53. package/lib-esm/webpack/extract/modules-count.js.map +0 -1
  54. package/src/webpack/extract/modules-count.js +0 -8
  55. package/types/webpack/extract/modules-count.d.ts +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"modules-packages.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modules-packages.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
- import isEmpty from 'lodash/isEmpty';
2
1
  import round from 'lodash/round';
3
2
  import { getModuleName, normalizeChunkId } from '../utils';
4
3
  export const extractModules = (webpackStats) => {
5
- const modulesSource = (webpackStats === null || webpackStats === void 0 ? void 0 : webpackStats.modules) || [];
4
+ const modulesSource = webpackStats === null || webpackStats === void 0 ? void 0 : webpackStats.modules;
6
5
  if (!modulesSource) {
7
6
  return {
8
7
  metrics: {
9
8
  duplicateCode: { value: 0 },
10
9
  duplicateModulesCount: { value: 0 },
11
10
  modules: {},
11
+ moduleCount: { value: 0 },
12
12
  },
13
13
  };
14
14
  }
@@ -23,17 +23,19 @@ export const extractModules = (webpackStats) => {
23
23
  })));
24
24
  return agg;
25
25
  }, []);
26
+ let moduleCount = 0;
26
27
  let totalCodeSize = 0;
27
28
  let duplicateCodeSize = 0;
28
29
  let duplicateModulesCount = 0;
29
30
  const modules = allModules.reduce((agg, moduleEntry) => {
30
- const { name, size, chunks } = moduleEntry;
31
+ const { name, size = 0, chunks } = moduleEntry;
31
32
  const normalizedName = getModuleName(name);
32
- if (isEmpty(chunks)) {
33
+ if (!chunks || (chunks === null || chunks === void 0 ? void 0 : chunks.length) === 0) {
33
34
  return agg;
34
35
  }
35
36
  const instances = chunks.length;
36
37
  const duplicateInstances = instances - 1;
38
+ moduleCount += instances;
37
39
  duplicateModulesCount += duplicateInstances;
38
40
  duplicateCodeSize += duplicateInstances * size;
39
41
  totalCodeSize += instances * size;
@@ -55,6 +57,9 @@ export const extractModules = (webpackStats) => {
55
57
  duplicateModulesCount: {
56
58
  value: duplicateModulesCount,
57
59
  },
60
+ moduleCount: {
61
+ value: moduleCount,
62
+ },
58
63
  },
59
64
  };
60
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,KAAK,MAAM,cAAc,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAe3D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,YAAkB,EAAyB,EAAE;IAC1E,MAAM,aAAa,GAAgD,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,KAAI,EAAE,CAAC;IAE/F,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO;YACL,OAAO,EAAE;gBACP,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC3B,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBACnC,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;KACH;IAGD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEtB,OAAO,GAAG,CAAC;SACZ;QAGD,GAAG,GAAG,GAAG,CAAC,MAAM,CACd,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,kBAAkB;YAErB,MAAM,EAAE,WAAW,CAAC,MAAM;SAC3B,CAAC,CAAC,CACJ,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA0B,CAAC,CAAC;IAE/B,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAG9B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QACrD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;QAC3C,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAG3C,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,MAAM,kBAAkB,GAAG,SAAS,GAAG,CAAC,CAAC;QAEzC,qBAAqB,IAAI,kBAAkB,CAAC;QAC5C,iBAAiB,IAAI,kBAAkB,GAAG,IAAI,CAAC;QAC/C,aAAa,IAAI,SAAS,GAAG,IAAI,CAAC;QAGlC,GAAG,CAAC,cAAc,CAAC,GAAG;YACpB,IAAI;YACJ,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACtC,UAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC;SACxC,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAkC,CAAC,CAAC;IAEvC,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9F,OAAO;QACL,OAAO,EAAE;YACP,OAAO;YACP,aAAa,EAAE;gBACb,KAAK,EAAE,aAAa;aACrB;YACD,qBAAqB,EAAE;gBACrB,KAAK,EAAE,qBAAqB;aAC7B;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAIjC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAK3D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,YAAmC,EAAkB,EAAE;IACpF,MAAM,aAAa,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,CAAC;IAE5C,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO;YACL,OAAO,EAAE;gBACP,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC3B,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBACnC,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;aAC1B;SACF,CAAC;KACH;IAGD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEtB,OAAO,GAAG,CAAC;SACZ;QAGD,GAAG,GAAG,GAAG,CAAC,MAAM,CACd,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,kBAAkB;YAErB,MAAM,EAAE,WAAW,CAAC,MAAM;SAC3B,CAAC,CAAC,CACJ,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA2C,CAAC,CAAC;IAEhD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAG9B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QACrD,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;QAC/C,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAG3C,IAAI,CAAC,MAAM,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,MAAK,CAAC,EAAE;YACnC,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,MAAM,kBAAkB,GAAG,SAAS,GAAG,CAAC,CAAC;QAEzC,WAAW,IAAI,SAAS,CAAC;QACzB,qBAAqB,IAAI,kBAAkB,CAAC;QAC5C,iBAAiB,IAAI,kBAAkB,GAAG,IAAI,CAAC;QAC/C,aAAa,IAAI,SAAS,GAAG,IAAI,CAAC;QAGlC,GAAG,CAAC,cAAc,CAAC,GAAG;YACpB,IAAI;YACJ,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACtC,UAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC;SACxC,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA4B,CAAC,CAAC;IAEjC,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9F,OAAO;QACL,OAAO,EAAE;YACP,OAAO;YACP,aAAa,EAAE;gBACb,KAAK,EAAE,aAAa;aACrB;YACD,qBAAqB,EAAE;gBACrB,KAAK,EAAE,qBAAqB;aAC7B;YACD,WAAW,EAAE;gBACX,KAAK,EAAE,WAAW;aACnB;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -6,4 +6,5 @@ export * from './extract';
6
6
  export * from './metrics';
7
7
  export * from './selectors';
8
8
  export * from './utils';
9
+ export * from './types';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/webpack/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAE5E,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/webpack/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAE5E,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -2,74 +2,74 @@ import { METRIC_TYPE_FILE_SIZE, METRIC_TYPE_NUMERIC, METRIC_TYPE_PERCENTAGE, } f
2
2
  export const metrics = {
3
3
  totalSizeByTypeALL: {
4
4
  label: 'Bundle Size',
5
- description: 'Sum of all assets emitted by webpack.',
5
+ description: 'The total size of the assets produced by webpack',
6
6
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
7
7
  type: METRIC_TYPE_FILE_SIZE,
8
8
  },
9
9
  totalInitialSizeJS: {
10
10
  label: 'Initial JS',
11
- description: 'Sum of all JavaScript assets that are labeled as initial(eg: vendor.js, app.js).',
11
+ description: 'The total size of JavaScript initial chunks',
12
12
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
13
13
  type: METRIC_TYPE_FILE_SIZE,
14
14
  },
15
15
  totalInitialSizeCSS: {
16
16
  label: 'Initial CSS',
17
- description: 'Sum of all CSS assets that are labeled as initial(eg: vendor.css, app.css).',
17
+ description: 'The total size of CSS initial chunks',
18
18
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
19
19
  type: METRIC_TYPE_FILE_SIZE,
20
20
  },
21
21
  cacheInvalidation: {
22
22
  label: 'Cache Invalidation',
23
- description: 'Ratio between the total changed assets and Bundle Size.',
23
+ description: 'The ratio between the total changed assets and total assets size(Bundle Size)',
24
24
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
25
25
  type: METRIC_TYPE_PERCENTAGE,
26
26
  biggerIsBetter: false,
27
27
  },
28
28
  chunkCount: {
29
29
  label: 'Chunks',
30
- description: 'Total number of chunks generated by webpack.',
30
+ description: 'The total number of chunks',
31
31
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
32
32
  type: METRIC_TYPE_NUMERIC,
33
33
  biggerIsBetter: false,
34
34
  },
35
35
  assetCount: {
36
36
  label: 'Assets',
37
- description: 'Total number of assets emitted by webpack.',
37
+ description: 'Total number of assets',
38
38
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
39
39
  type: METRIC_TYPE_NUMERIC,
40
40
  biggerIsBetter: false,
41
41
  },
42
42
  moduleCount: {
43
43
  label: 'Modules',
44
- description: 'Total number of modules bundled by webpack.',
44
+ description: 'The total number of modules bundled by webpack',
45
45
  url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
46
46
  type: METRIC_TYPE_NUMERIC,
47
47
  biggerIsBetter: false,
48
48
  },
49
49
  duplicateModulesCount: {
50
50
  label: 'Duplicate Modules',
51
- description: 'Total number of modules that belong to more than one chunk.',
51
+ description: 'The total number of modules that belong to more than one chunk',
52
52
  url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
53
53
  type: METRIC_TYPE_NUMERIC,
54
54
  biggerIsBetter: false,
55
55
  },
56
56
  duplicateCode: {
57
57
  label: 'Duplicate Code',
58
- description: 'The percentage of total duplicate module size from the total module size.',
58
+ description: 'The percentage of total duplicate module size from the total module size',
59
59
  url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
60
60
  type: METRIC_TYPE_PERCENTAGE,
61
61
  biggerIsBetter: false,
62
62
  },
63
63
  packageCount: {
64
64
  label: 'Packages',
65
- description: 'Total number of packages bundled by webpack.',
65
+ description: 'The total number of packages bundled by webpack',
66
66
  url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
67
67
  type: METRIC_TYPE_NUMERIC,
68
68
  biggerIsBetter: false,
69
69
  },
70
70
  duplicatePackagesCount: {
71
71
  label: 'Duplicate Packages',
72
- description: 'Total number of packages that are duplicated.',
72
+ description: 'The total number of duplicate packages',
73
73
  url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
74
74
  type: METRIC_TYPE_NUMERIC,
75
75
  biggerIsBetter: false,
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/webpack/metrics.js"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,kBAAkB,EAAE;QAClB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,uCAAuC;QACpD,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,qBAAqB;KAC5B;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,kFAAkF;QAC/F,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,qBAAqB;KAC5B;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,6EAA6E;QAC1F,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,qBAAqB;KAC5B;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,yDAAyD;QACtE,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,sBAAsB;QAC5B,cAAc,EAAE,KAAK;KACtB;IACD,UAAU,EAAE;QACV,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,8CAA8C;QAC3D,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,UAAU,EAAE;QACV,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,4CAA4C;QACzD,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,WAAW,EAAE;QACX,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,6CAA6C;QAC1D,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,qBAAqB,EAAE;QACrB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,6DAA6D;QAC1E,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,aAAa,EAAE;QACb,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,2EAA2E;QACxF,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,sBAAsB;QAC5B,cAAc,EAAE,KAAK;KACtB;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,8CAA8C;QAC3D,GAAG,EAAE,iEAAiE;QACtE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,+CAA+C;QAC5D,GAAG,EAAE,iEAAiE;QACtE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,KAAK,EAAE;QACL,iBAAiB,EAAE;YACjB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,qBAAqB;SAC5B;QACD,kBAAkB,EAAE;YAClB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,qBAAqB;SAC5B;QACD,kBAAkB,EAAE;YAClB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,qBAAqB;SAC5B;QACD,oBAAoB,EAAE;YACpB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;SAC5B;QACD,mBAAmB,EAAE;YACnB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;SAC5B;QACD,mBAAmB,EAAE;YACnB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,qBAAqB;SAC5B;QACD,oBAAoB,EAAE;YACpB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;SAC5B;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/webpack/metrics.js"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,kBAAkB,EAAE;QAClB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,kDAAkD;QAC/D,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,qBAAqB;KAC5B;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,6CAA6C;QAC1D,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,qBAAqB;KAC5B;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,sCAAsC;QACnD,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,qBAAqB;KAC5B;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,+EAA+E;QAC5F,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,sBAAsB;QAC5B,cAAc,EAAE,KAAK;KACtB;IACD,UAAU,EAAE;QACV,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,4BAA4B;QACzC,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,UAAU,EAAE;QACV,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,wBAAwB;QACrC,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,WAAW,EAAE;QACX,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,gDAAgD;QAC7D,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,qBAAqB,EAAE;QACrB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,gEAAgE;QAC7E,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,aAAa,EAAE;QACb,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,0EAA0E;QACvF,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,sBAAsB;QAC5B,cAAc,EAAE,KAAK;KACtB;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,iDAAiD;QAC9D,GAAG,EAAE,iEAAiE;QACtE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,wCAAwC;QACrD,GAAG,EAAE,iEAAiE;QACtE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,KAAK,EAAE;QACL,iBAAiB,EAAE;YACjB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,qBAAqB;SAC5B;QACD,kBAAkB,EAAE;YAClB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,qBAAqB;SAC5B;QACD,kBAAkB,EAAE;YAClB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,qBAAqB;SAC5B;QACD,oBAAoB,EAAE;YACpB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;SAC5B;QACD,mBAAmB,EAAE;YACnB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;SAC5B;QACD,mBAAmB,EAAE;YACnB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,qBAAqB;SAC5B;QACD,oBAAoB,EAAE;YACpB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;SAC5B;KACF;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/webpack/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bundle-stats/utils",
3
- "version": "4.0.0-alpha.9",
3
+ "version": "4.0.0-rc.4",
4
4
  "description": "BundleStats utils",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -35,18 +35,18 @@
35
35
  },
36
36
  "homepage": "https://github.com/relative-ci/bundle-stats/blob/master/packages/utils#readme",
37
37
  "dependencies": {
38
- "@bundle-stats/plugin-webpack-filter": "^4.0.0-alpha.9",
39
- "@bundle-stats/plugin-webpack-validate": "^4.0.0-alpha.9",
38
+ "@bundle-stats/plugin-webpack-filter": "^4.0.0-rc.4",
39
+ "@bundle-stats/plugin-webpack-validate": "^4.0.0-rc.4",
40
40
  "convert-units": "3.0.0-beta.4",
41
41
  "query-string": "^7.1.0",
42
42
  "serialize-query-params": "^1.3.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@types/jest": "28.1.2",
45
+ "@types/jest": "28.1.4",
46
46
  "@types/lodash": "4.14.182",
47
- "core-js": "3.23.1",
47
+ "core-js": "3.23.4",
48
48
  "jest": "27.5.1",
49
- "jest-cli": "28.1.1",
49
+ "jest-cli": "28.1.2",
50
50
  "jest-date-mock": "1.0.8",
51
51
  "lodash": "4.17.21",
52
52
  "regenerator-runtime": "0.13.9",
@@ -58,5 +58,5 @@
58
58
  "core-js": "^3.0.0",
59
59
  "lodash": "^4.0.0"
60
60
  },
61
- "gitHead": "2efc8ee51f6b58a9fb5e1528902ad0b5f9b659a8"
61
+ "gitHead": "17ca795598091c796a5a2f91da02bd985f7a6908"
62
62
  }
package/src/constants.ts CHANGED
@@ -44,30 +44,6 @@ export interface Metric {
44
44
  value: number;
45
45
  }
46
46
 
47
- export interface ModuleMetric extends Metric {
48
- name: string;
49
- chunkIds: Array<String>;
50
- duplicated: boolean;
51
- }
52
-
53
- export interface PackageMetric extends Metric {
54
- path: string;
55
- }
56
-
57
- export interface WebpackMetricsModules {
58
- metrics: {
59
- duplicateCode: MetricRun;
60
- duplicateModulesCount: MetricRun;
61
- modules: Record<string, ModuleMetric>;
62
- };
63
- }
64
-
65
- export interface WebpackMetricsPackages {
66
- metrics: {
67
- packages: Record<string, PackageMetric>;
68
- };
69
- }
70
-
71
47
  export interface LighthouseSource {
72
48
  lighthouseVersion: string;
73
49
  fetchTime: string;
@@ -1,84 +1,61 @@
1
1
  import isEmpty from 'lodash/isEmpty';
2
+ import { WebpackStatsFiltered } from '@bundle-stats/plugin-webpack-filter';
2
3
 
4
+ import { MetricsAssets, Assets } from '../types';
3
5
  import { getAssetName, normalizeChunkId } from '../utils';
4
6
 
5
7
  const IGNORE_PATTERN = /\.(map|LICENSE\.txt)$/;
6
8
 
7
- interface WebpackStatsAsset {
8
- name: string;
9
- size: number;
10
- }
9
+ export const extractAssets = (webpackStats: WebpackStatsFiltered): MetricsAssets => {
10
+ const webpackAssets = webpackStats.assets;
11
+ const webpackChunks = webpackStats.chunks;
11
12
 
12
- interface WebpackStatsEntrypointAsset {
13
- name: string;
14
- }
13
+ let initialAssetNames: Array<string> = [];
14
+ let entryAssetNames: Array<string> = [];
15
15
 
16
- interface WebpackStatsEntrypoint {
17
- // Webpack 5 provides { name, size }
18
- assets: Array<WebpackStatsEntrypointAsset | string>;
19
- }
20
-
21
- type WebpackStatsEntrypoints = Record<string, WebpackStatsEntrypoint>;
22
-
23
- interface WebpackStatsChunk {
24
- id: string;
25
- entry: boolean;
26
- initial: boolean;
27
- files: Array<string>;
28
- names: Array<string>;
29
- }
30
-
31
- export const extractAssets = (webpackStats: any) => {
32
- const webpackAssets: Array<WebpackStatsAsset> = webpackStats?.assets || [];
33
- const webpackChunks: Array<WebpackStatsChunk> = webpackStats?.chunks || [];
34
- const webpackEntrypoints: WebpackStatsEntrypoints = webpackStats?.entrypoints || {};
35
-
36
- const entrypointsAssets = Object.values(webpackEntrypoints)
37
- .map(({ assets: items }) => items.map((item) => {
38
- if (typeof item === 'object') {
39
- return item.name;
40
- }
41
-
42
- return item;
43
- }))
44
- .flat();
16
+ webpackChunks?.forEach((webpackChunk) => {
17
+ if (webpackChunk.initial && webpackChunk.files && webpackChunk.files?.length > 0) {
18
+ initialAssetNames = initialAssetNames.concat(webpackChunk.files);
19
+ }
45
20
 
46
- const initialItems = webpackChunks
47
- .filter(({ initial }) => initial)
48
- .map(({ files }) => files)
49
- .flat();
21
+ if (webpackChunk.entry && webpackChunk.files && webpackChunk.files?.length > 0) {
22
+ entryAssetNames = entryAssetNames.concat(webpackChunk.files);
23
+ }
24
+ });
50
25
 
51
- const normalizedChunks = webpackChunks.map(({ id, names, files }) => ({
26
+ const normalizedChunks = webpackChunks?.map(({ id, names, files }) => ({
52
27
  id: normalizeChunkId(id),
53
- name: names.join('+') || `chunk-${id}`,
28
+ name: names?.join('+') || `chunk-${id}`,
54
29
  files,
55
30
  }));
56
31
 
57
- const assets = webpackAssets.reduce((aggregator, asset) => {
58
- const baseName = asset?.name.split('?')[0];
32
+ const assets =
33
+ webpackAssets?.reduce((agg, asset) => {
34
+ const baseName = asset?.name.split('?')[0];
59
35
 
60
- if (IGNORE_PATTERN.test(baseName)) {
61
- return aggregator;
62
- }
36
+ if (IGNORE_PATTERN.test(baseName)) {
37
+ return agg;
38
+ }
63
39
 
64
- // Check for the corresponding chunk
65
- const assetChunk = normalizedChunks.find((chunk) => chunk.files.includes(asset.name));
40
+ // Check for the corresponding chunk
41
+ const assetChunk = normalizedChunks?.find((chunk) => chunk.files?.includes(asset.name));
66
42
 
67
- const normalizedName = getAssetName(baseName);
68
- const { size, name } = asset;
43
+ const normalizedName = getAssetName(baseName);
44
+ const { size, name } = asset;
69
45
 
70
- return {
71
- ...aggregator,
72
- [normalizedName]: {
46
+ // Reassign for perf
47
+ // eslint-disable-next-line no-param-reassign
48
+ agg[normalizedName] = {
73
49
  name: baseName,
74
- value: size,
75
- isEntry: entrypointsAssets.includes(name),
76
- isInitial: initialItems.includes(name),
50
+ value: size || 0,
51
+ isEntry: entryAssetNames.includes(name),
52
+ isInitial: initialAssetNames.includes(name),
77
53
  isChunk: Boolean(assetChunk),
78
- ...(assetChunk ? { chunkId: assetChunk.id } : {}),
79
- },
80
- };
81
- }, {});
54
+ ...(assetChunk && { chunkId: assetChunk.id }),
55
+ };
56
+
57
+ return agg;
58
+ }, {} as Assets) || {};
82
59
 
83
60
  return {
84
61
  metrics: {
@@ -87,7 +64,7 @@ export const extractAssets = (webpackStats: any) => {
87
64
  ...(!isEmpty(normalizedChunks)
88
65
  ? {
89
66
  meta: {
90
- chunks: normalizedChunks.map(({ id, name }) => ({ id, name })),
67
+ chunks: normalizedChunks?.map(({ id, name }) => ({ id, name })) || [],
91
68
  },
92
69
  }
93
70
  : {}),
@@ -8,7 +8,6 @@ import { extractAssetsSize } from './assets-size';
8
8
  import { extractAssetsSizeTotalInsight } from './assets-size-total-insight';
9
9
  import { extractMeta } from './meta';
10
10
  import { extractModules } from './modules';
11
- import { extractModulesCount } from './modules-count';
12
11
  import { extractModulesPackages } from './modules-packages';
13
12
  import { extractModulesPackagesCount } from './modules-packages-count';
14
13
  import { extractModulesPackagesDuplicate } from './modules-packages-duplicate';
@@ -22,14 +21,10 @@ const extractFns = [
22
21
  extractAssetsSizeTotalInsight,
23
22
  extractMeta,
24
23
  extractModules,
25
- extractModulesCount,
26
24
  extractModulesPackages,
27
25
  extractModulesPackagesCount,
28
26
  extractModulesPackagesDuplicate,
29
27
  ];
30
28
 
31
- export const extract = (webpackStats, baseline) => extractFns.reduce((agg, extractFn) => merge(
32
- {},
33
- agg,
34
- extractFn(webpackStats, agg, baseline),
35
- ), {});
29
+ export const extract = (webpackStats, baseline) =>
30
+ extractFns.reduce((agg, extractFn) => merge({}, agg, extractFn(webpackStats, agg, baseline)), {});
@@ -3,7 +3,7 @@ import last from 'lodash/last';
3
3
  import isEmpty from 'lodash/isEmpty';
4
4
 
5
5
  import { PACKAGES_SEPARATOR, PACKAGE_ID_SEPARATOR } from '../../config';
6
- import { PackageMetric, WebpackMetricsModules, WebpackMetricsPackages } from '../../constants';
6
+ import { Package, MetricsModules, MetricsPackages } from '../types';
7
7
  import { MODULE_PATH_PACKAGES, PACKAGE_PATH_NAME } from '../constants';
8
8
 
9
9
  const uniqLast = (data: Array<unknown>) => {
@@ -66,9 +66,9 @@ export const getPackageMetaFromModulePath = (modulePath: string) => {
66
66
  };
67
67
 
68
68
  export const extractModulesPackages = (
69
- webpackStats?: any,
70
- currentExtractedData?: WebpackMetricsModules,
71
- ): WebpackMetricsPackages => {
69
+ _?: unknown,
70
+ currentExtractedData?: MetricsModules,
71
+ ): MetricsPackages => {
72
72
  const modules = Object.entries(currentExtractedData?.metrics?.modules || {});
73
73
 
74
74
  const packages = modules.reduce((agg, [modulePath, { value }]) => {
@@ -105,7 +105,7 @@ export const extractModulesPackages = (
105
105
 
106
106
  // Same package name, but different paths (eg: symlinks)
107
107
  const existingPackageWithEqualPath = Object.entries(agg).find(
108
- ([_, packageData]) => packageData.path === packageMeta.path,
108
+ ([__, packageData]) => packageData.path === packageMeta.path,
109
109
  );
110
110
 
111
111
  if (existingPackageWithEqualPath) {
@@ -125,7 +125,7 @@ export const extractModulesPackages = (
125
125
  Object.keys(agg)
126
126
  .map((id) => id.split('~'))
127
127
  .filter(([id]) => id === packageMeta.id)
128
- .map(([_, index]) => parseInt(index, 10)),
128
+ .map(([__, index]) => parseInt(index, 10)),
129
129
  ) || 0;
130
130
 
131
131
  const packageName = [packageMeta.id, lastIndex + 1].join(PACKAGE_ID_SEPARATOR);
@@ -138,7 +138,7 @@ export const extractModulesPackages = (
138
138
  value,
139
139
  },
140
140
  };
141
- }, {} as Record<string, PackageMetric>);
141
+ }, {} as Record<string, Package>);
142
142
 
143
143
  return { metrics: { packages } };
144
144
  };
@@ -1,24 +1,14 @@
1
- import isEmpty from 'lodash/isEmpty';
2
1
  import round from 'lodash/round';
2
+ import { WebpackStatsFiltered, WebpackStatsFilteredRootModule } from '@bundle-stats/plugin-webpack-filter';
3
3
 
4
- import { ModuleMetric, WebpackMetricsModules } from '../../constants';
4
+ import { Module, MetricsModules } from '../types';
5
5
  import { getModuleName, normalizeChunkId } from '../utils';
6
6
 
7
- interface WebpackModule {
8
- name: string;
9
- size: number;
10
- chunks: Array<string | number>;
11
- }
12
-
13
- interface WebpackModuleWithConcatenatedModules extends WebpackModule {
14
- modules: Array<Pick<WebpackModule, 'name' | 'size'>>;
15
- }
16
-
17
7
  /*
18
8
  * Extract webpack modules array to an object with metrics
19
9
  */
20
- export const extractModules = (webpackStats?: any): WebpackMetricsModules => {
21
- const modulesSource: Array<WebpackModuleWithConcatenatedModules> = webpackStats?.modules || [];
10
+ export const extractModules = (webpackStats?: WebpackStatsFiltered): MetricsModules => {
11
+ const modulesSource = webpackStats?.modules;
22
12
 
23
13
  if (!modulesSource) {
24
14
  return {
@@ -26,6 +16,7 @@ export const extractModules = (webpackStats?: any): WebpackMetricsModules => {
26
16
  duplicateCode: { value: 0 },
27
17
  duplicateModulesCount: { value: 0 },
28
18
  modules: {},
19
+ moduleCount: { value: 0 },
29
20
  },
30
21
  };
31
22
  }
@@ -48,25 +39,27 @@ export const extractModules = (webpackStats?: any): WebpackMetricsModules => {
48
39
  );
49
40
 
50
41
  return agg;
51
- }, [] as Array<WebpackModule>);
42
+ }, [] as Array<WebpackStatsFilteredRootModule>);
52
43
 
44
+ let moduleCount = 0;
53
45
  let totalCodeSize = 0;
54
46
  let duplicateCodeSize = 0;
55
47
  let duplicateModulesCount = 0;
56
48
 
57
49
  // Normalize module entries
58
50
  const modules = allModules.reduce((agg, moduleEntry) => {
59
- const { name, size, chunks } = moduleEntry;
51
+ const { name, size = 0, chunks } = moduleEntry;
60
52
  const normalizedName = getModuleName(name);
61
53
 
62
54
  // skip modules that do not belong to any chunk
63
- if (isEmpty(chunks)) {
55
+ if (!chunks || chunks?.length === 0) {
64
56
  return agg;
65
57
  }
66
58
 
67
59
  const instances = chunks.length;
68
60
  const duplicateInstances = instances - 1;
69
61
 
62
+ moduleCount += instances;
70
63
  duplicateModulesCount += duplicateInstances;
71
64
  duplicateCodeSize += duplicateInstances * size;
72
65
  totalCodeSize += instances * size;
@@ -80,7 +73,7 @@ export const extractModules = (webpackStats?: any): WebpackMetricsModules => {
80
73
  };
81
74
 
82
75
  return agg;
83
- }, {} as Record<string, ModuleMetric>);
76
+ }, {} as Record<string, Module>);
84
77
 
85
78
  const duplicateCode = totalCodeSize ? round((duplicateCodeSize / totalCodeSize) * 100, 2) : 0;
86
79
 
@@ -93,6 +86,9 @@ export const extractModules = (webpackStats?: any): WebpackMetricsModules => {
93
86
  duplicateModulesCount: {
94
87
  value: duplicateModulesCount,
95
88
  },
89
+ moduleCount: {
90
+ value: moduleCount,
91
+ },
96
92
  },
97
93
  };
98
94
  };
@@ -7,3 +7,4 @@ export * from './extract';
7
7
  export * from './metrics';
8
8
  export * from './selectors';
9
9
  export * from './utils';
10
+ export * from './types';