@bundle-stats/utils 4.4.0-beta.0 → 4.4.0-beta.3

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 (102) hide show
  1. package/lib/config/component-links.js +5 -1
  2. package/lib/config/component-links.js.map +1 -1
  3. package/lib/config/file-types.js +3 -3
  4. package/lib/config/file-types.js.map +1 -1
  5. package/lib/config/index.js +0 -1
  6. package/lib/config/index.js.map +1 -1
  7. package/lib/config/metrics.js.map +1 -1
  8. package/lib/constants.js +11 -5
  9. package/lib/constants.js.map +1 -1
  10. package/lib/i18n.js +5 -0
  11. package/lib/i18n.js.map +1 -1
  12. package/lib/utils/component-links.js +85 -9
  13. package/lib/utils/component-links.js.map +1 -1
  14. package/lib/utils/index.js +1 -0
  15. package/lib/utils/index.js.map +1 -1
  16. package/lib/utils/insights.js +54 -0
  17. package/lib/utils/insights.js.map +1 -0
  18. package/lib/webpack/extract/assets-size-total-insight.js +2 -2
  19. package/lib/webpack/extract/assets-size-total-insight.js.map +1 -1
  20. package/lib/webpack/extract/index.js +2 -0
  21. package/lib/webpack/extract/index.js.map +1 -1
  22. package/lib/webpack/extract/modules-packages-duplicate.js +28 -16
  23. package/lib/webpack/extract/modules-packages-duplicate.js.map +1 -1
  24. package/lib/webpack/extract/modules-packages-new-insight.js +57 -0
  25. package/lib/webpack/extract/modules-packages-new-insight.js.map +1 -0
  26. package/lib/webpack/extract/modules.js +45 -22
  27. package/lib/webpack/extract/modules.js.map +1 -1
  28. package/lib/webpack/metrics.js +5 -5
  29. package/lib/webpack/metrics.js.map +1 -1
  30. package/lib/webpack/types.js +1 -1
  31. package/lib/webpack/types.js.map +1 -1
  32. package/lib-esm/config/component-links.js +4 -0
  33. package/lib-esm/config/component-links.js.map +1 -1
  34. package/lib-esm/config/file-types.js +3 -3
  35. package/lib-esm/config/file-types.js.map +1 -1
  36. package/lib-esm/config/index.js +0 -1
  37. package/lib-esm/config/index.js.map +1 -1
  38. package/lib-esm/config/metrics.js +1 -1
  39. package/lib-esm/config/metrics.js.map +1 -1
  40. package/lib-esm/constants.js +6 -0
  41. package/lib-esm/constants.js.map +1 -1
  42. package/lib-esm/i18n.js +5 -0
  43. package/lib-esm/i18n.js.map +1 -1
  44. package/lib-esm/utils/component-links.js +79 -7
  45. package/lib-esm/utils/component-links.js.map +1 -1
  46. package/lib-esm/utils/index.js +1 -0
  47. package/lib-esm/utils/index.js.map +1 -1
  48. package/lib-esm/utils/insights.js +47 -0
  49. package/lib-esm/utils/insights.js.map +1 -0
  50. package/lib-esm/webpack/extract/assets-size-total-insight.js +1 -1
  51. package/lib-esm/webpack/extract/assets-size-total-insight.js.map +1 -1
  52. package/lib-esm/webpack/extract/index.js +2 -0
  53. package/lib-esm/webpack/extract/index.js.map +1 -1
  54. package/lib-esm/webpack/extract/modules-packages-duplicate.js +22 -10
  55. package/lib-esm/webpack/extract/modules-packages-duplicate.js.map +1 -1
  56. package/lib-esm/webpack/extract/modules-packages-new-insight.js +54 -0
  57. package/lib-esm/webpack/extract/modules-packages-new-insight.js.map +1 -0
  58. package/lib-esm/webpack/extract/modules.js +45 -23
  59. package/lib-esm/webpack/extract/modules.js.map +1 -1
  60. package/lib-esm/webpack/metrics.js +5 -5
  61. package/lib-esm/webpack/metrics.js.map +1 -1
  62. package/package.json +13 -13
  63. package/src/config/component-links.js +5 -0
  64. package/src/config/file-types.js +3 -3
  65. package/src/config/index.js +0 -1
  66. package/src/config/metrics.js +2 -6
  67. package/src/constants.ts +22 -10
  68. package/src/i18n.js +5 -0
  69. package/src/utils/component-links.ts +96 -10
  70. package/src/utils/index.js +1 -0
  71. package/src/utils/insights.ts +82 -0
  72. package/src/webpack/extract/assets-size-total-insight.js +1 -1
  73. package/src/webpack/extract/index.js +2 -0
  74. package/src/webpack/extract/modules-packages-duplicate.ts +32 -17
  75. package/src/webpack/extract/modules-packages-new-insight.ts +80 -0
  76. package/src/webpack/extract/modules.ts +60 -33
  77. package/src/webpack/metrics.js +5 -5
  78. package/src/webpack/types.ts +1 -2
  79. package/types/browsertime/metrics.d.ts +22 -22
  80. package/types/config/component-links.d.ts +24 -18
  81. package/types/config/file-types.d.ts +17 -17
  82. package/types/config/index.d.ts +0 -1
  83. package/types/config/metrics.d.ts +1 -30
  84. package/types/constants.d.ts +21 -9
  85. package/types/i18n.d.ts +17 -12
  86. package/types/lighthouse/metrics.d.ts +16 -16
  87. package/types/utils/component-links.d.ts +8 -1
  88. package/types/utils/index.d.ts +1 -0
  89. package/types/utils/insights.d.ts +9 -0
  90. package/types/webpack/constants.d.ts +1 -1
  91. package/types/webpack/extract/assets-size-total-insight.d.ts +2 -2
  92. package/types/webpack/extract/modules-packages-duplicate.d.ts +3 -3
  93. package/types/webpack/extract/modules-packages-new-insight.d.ts +8 -0
  94. package/types/webpack/metrics.d.ts +51 -51
  95. package/types/webpack/types.d.ts +1 -2
  96. package/lib/config/insights.js +0 -10
  97. package/lib/config/insights.js.map +0 -1
  98. package/lib-esm/config/insights.js +0 -7
  99. package/lib-esm/config/insights.js.map +0 -1
  100. package/src/config/insights.ts +0 -5
  101. package/tsconfig.lib.json +0 -7
  102. package/types/config/insights.d.ts +0 -5
@@ -10,6 +10,7 @@ import { extractModules } from './modules';
10
10
  import { extractModulesPackages } from './modules-packages';
11
11
  import { extractModulesPackagesCount } from './modules-packages-count';
12
12
  import { extractModulesPackagesDuplicate } from './modules-packages-duplicate';
13
+ import { extractModulesPackagesNewInsight } from './modules-packages-new-insight';
13
14
  const extractFns = [
14
15
  extractAssets,
15
16
  extractAssetsCacheInvalidation,
@@ -22,6 +23,7 @@ const extractFns = [
22
23
  extractModulesPackages,
23
24
  extractModulesPackagesCount,
24
25
  extractModulesPackagesDuplicate,
26
+ extractModulesPackagesNewInsight,
25
27
  ];
26
28
  export const extract = (webpackStats, baseline) => extractFns.reduce((agg, extractFn) => merge({}, agg, extractFn(webpackStats, agg, baseline)), {});
27
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webpack/extract/index.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAE/E,MAAM,UAAU,GAAG;IACjB,aAAa;IACb,8BAA8B;IAC9B,uBAAuB;IACvB,kBAAkB;IAClB,iBAAiB;IACjB,6BAA6B;IAC7B,WAAW;IACX,cAAc;IACd,sBAAsB;IACtB,2BAA2B;IAC3B,+BAA+B;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,CAChD,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webpack/extract/index.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAElF,MAAM,UAAU,GAAG;IACjB,aAAa;IACb,8BAA8B;IAC9B,uBAAuB;IACvB,kBAAkB;IAClB,iBAAiB;IACjB,6BAA6B;IAC7B,WAAW;IACX,cAAc;IACd,sBAAsB;IACtB,2BAA2B;IAC3B,+BAA+B;IAC/B,gCAAgC;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,CAChD,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC"}
@@ -1,7 +1,8 @@
1
+ import isEmpty from 'lodash/isEmpty';
1
2
  import map from 'lodash/map';
2
3
  import orderBy from 'lodash/orderBy';
3
4
  import sum from 'lodash/sum';
4
- import { InsightType } from '../../config';
5
+ import { InsightType, } from '../../constants';
5
6
  export const getDuplicatePackagesInsight = (duplicatePackagesMap, baselineDuplicatePackagesMap) => {
6
7
  const duplicateInstances = [];
7
8
  const baselineDuplicateInstances = [];
@@ -38,14 +39,14 @@ export const getDuplicatePackagesInsight = (duplicatePackagesMap, baselineDuplic
38
39
  const duplicateInstancesCount = duplicateInstances.length;
39
40
  const newDuplicateInstancesCount = newDuplicateInstances.length;
40
41
  const removedDuplicateInstancesCount = removedDuplicateInstances.length;
41
- let text;
42
- let insightType;
42
+ let text = '';
43
+ let insightType = null;
43
44
  if (newDuplicateInstancesCount > 0 && removedDuplicateInstancesCount > 0) {
44
45
  const item = newDuplicateInstancesCount > 1 || removedDuplicateInstancesCount > 1 ? 'packages' : 'package';
45
46
  text = `Bundle introduced ${newDuplicateInstancesCount} and removed ${removedDuplicateInstancesCount} duplicate ${item}`;
46
47
  insightType = InsightType.ERROR;
47
48
  }
48
- else if (newDuplicateInstancesCount > 0 && baselineDuplicatePackagesMap) {
49
+ else if (newDuplicateInstancesCount > 0 && !isEmpty(baselineDuplicatePackagesMap)) {
49
50
  const item = newDuplicateInstancesCount > 1 ? 'packages' : 'package';
50
51
  text = `Bundle introduced ${newDuplicateInstancesCount} duplicate ${item}`;
51
52
  insightType = InsightType.ERROR;
@@ -55,6 +56,12 @@ export const getDuplicatePackagesInsight = (duplicatePackagesMap, baselineDuplic
55
56
  text = `Bundle contains ${newDuplicateInstancesCount} duplicate ${item}`;
56
57
  insightType = InsightType.WARNING;
57
58
  }
59
+ else if (removedDuplicateInstancesCount > 0 && duplicateInstancesCount > 0) {
60
+ const itemRemoved = removedDuplicateInstancesCount > 1 ? 'packages' : 'package';
61
+ const itemRemaining = duplicateInstancesCount > 1 ? 'packages' : 'package';
62
+ text = `Bundle removed ${removedDuplicateInstancesCount} duplicate ${itemRemoved}, ${duplicateInstancesCount} duplicate ${itemRemaining} remaining`;
63
+ insightType = InsightType.WARNING;
64
+ }
58
65
  else if (removedDuplicateInstancesCount > 0) {
59
66
  const item = removedDuplicateInstancesCount > 1 ? 'packages' : 'package';
60
67
  text = `Bundle removed ${removedDuplicateInstancesCount} duplicate ${item}`;
@@ -68,8 +75,9 @@ export const getDuplicatePackagesInsight = (duplicatePackagesMap, baselineDuplic
68
75
  insightType = InsightType.WARNING;
69
76
  }
70
77
  else {
71
- text = 'Bundle does not contain duplicate packages';
72
- insightType = InsightType.INFO;
78
+ }
79
+ if (!text || !insightType) {
80
+ return null;
73
81
  }
74
82
  return {
75
83
  type: insightType,
@@ -110,11 +118,14 @@ export const extractModulesPackagesDuplicate = (_, currentExtractedData, baselin
110
118
  const baselineDuplicatePackages = ((_e = (_d = (_c = (_b = baselineJob === null || baselineJob === void 0 ? void 0 : baselineJob.insights) === null || _b === void 0 ? void 0 : _b.webpack) === null || _c === void 0 ? void 0 : _c.duplicatePackagesV3) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.packages) ||
111
119
  ((_h = (_g = (_f = baselineJob === null || baselineJob === void 0 ? void 0 : baselineJob.insights) === null || _f === void 0 ? void 0 : _f.webpack) === null || _g === void 0 ? void 0 : _g.duplicatePackages) === null || _h === void 0 ? void 0 : _h.data) ||
112
120
  {};
121
+ const noDuplicatesDuplicatePackagesV3 = getDuplicatePackagesInsight({}, baselineDuplicatePackages);
113
122
  if (!count) {
114
123
  return {
115
- insights: {
116
- duplicatePackagesV3: getDuplicatePackagesInsight({}, baselineDuplicatePackages),
117
- },
124
+ ...(noDuplicatesDuplicatePackagesV3 && {
125
+ insights: {
126
+ duplicatePackagesV3: noDuplicatesDuplicatePackagesV3,
127
+ },
128
+ }),
118
129
  metrics: {
119
130
  duplicatePackagesCount: {
120
131
  value: count,
@@ -136,13 +147,14 @@ export const extractModulesPackagesDuplicate = (_, currentExtractedData, baselin
136
147
  }
137
148
  duplicatePackagesData[packageName] = packageData.children.map(({ id }) => id);
138
149
  });
150
+ const duplicatePackagesV3 = getDuplicatePackagesInsight(duplicatePackagesData, baselineDuplicatePackages);
139
151
  return {
140
152
  insights: {
141
153
  duplicatePackages: {
142
154
  type: InsightType.WARNING,
143
155
  data: duplicatePackagesData,
144
156
  },
145
- duplicatePackagesV3: getDuplicatePackagesInsight(duplicatePackagesData, baselineDuplicatePackages),
157
+ ...(duplicatePackagesV3 && { duplicatePackagesV3 }),
146
158
  },
147
159
  metrics: {
148
160
  duplicatePackagesCount: {
@@ -1 +1 @@
1
- {"version":3,"file":"modules-packages-duplicate.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-duplicate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modules-packages-duplicate.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-duplicate.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EACL,WAAW,GAOZ,MAAM,iBAAiB,CAAC;AAwBzB,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,oBAAmD,EACnD,4BAA4D,EACN,EAAE;IACxD,MAAM,kBAAkB,GAAkB,EAAE,CAAC;IAC7C,MAAM,0BAA0B,GAAkB,EAAE,CAAC;IACrD,MAAM,qBAAqB,GAAkB,EAAE,CAAC;IAChD,MAAM,yBAAyB,GAAkB,EAAE,CAAC;IAEpD,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE;QAC/D,SAAS,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;;YACtC,IAAI,iBAAiB,KAAK,EAAE,EAAE;gBAC5B,OAAO;aACR;YAED,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAE3C,IAAI,MAAA,4BAA4B,aAA5B,4BAA4B,uBAA5B,4BAA4B,CAAG,EAAE,CAAC,0CAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE;gBACnE,OAAO;aACR;YAED,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,4BAA4B,EAAE;QAChC,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE;YACvE,SAAS,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;;gBACtC,IAAI,iBAAiB,KAAK,EAAE,EAAE;oBAC5B,OAAO;iBACR;gBAED,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAEnD,IAAI,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAG,EAAE,CAAC,0CAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE;oBAC3D,OAAO;iBACR;gBAED,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAC1D,MAAM,0BAA0B,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAChE,MAAM,8BAA8B,GAAG,yBAAyB,CAAC,MAAM,CAAC;IAExE,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,WAAW,GAAuB,IAAI,CAAC;IAE3C,IAAI,0BAA0B,GAAG,CAAC,IAAI,8BAA8B,GAAG,CAAC,EAAE;QAExE,MAAM,IAAI,GACR,0BAA0B,GAAG,CAAC,IAAI,8BAA8B,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,IAAI,GAAG,qBAAqB,0BAA0B,gBAAgB,8BAA8B,cAAc,IAAI,EAAE,CAAC;QACzH,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;KACjC;SAAM,IAAI,0BAA0B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAAE;QAEnF,MAAM,IAAI,GAAG,0BAA0B,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,IAAI,GAAG,qBAAqB,0BAA0B,cAAc,IAAI,EAAE,CAAC;QAC3E,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;KACjC;SAAM,IAAI,0BAA0B,GAAG,CAAC,EAAE;QAEzC,MAAM,IAAI,GAAG,0BAA0B,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,IAAI,GAAG,mBAAmB,0BAA0B,cAAc,IAAI,EAAE,CAAC;QACzE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;KACnC;SAAM,IAAI,8BAA8B,GAAG,CAAC,IAAI,uBAAuB,GAAG,CAAC,EAAE;QAE5E,MAAM,WAAW,GAAG,8BAA8B,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,aAAa,GAAG,uBAAuB,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,IAAI,GAAG,kBAAkB,8BAA8B,cAAc,WAAW,KAAK,uBAAuB,cAAc,aAAa,YAAY,CAAC;QACpJ,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;KACnC;SAAM,IAAI,8BAA8B,GAAG,CAAC,EAAE;QAE7C,MAAM,IAAI,GAAG,8BAA8B,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,GAAG,kBAAkB,8BAA8B,cAAc,IAAI,EAAE,CAAC;QAC5E,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;KAChC;SAAM,IACL,0BAA0B,KAAK,CAAC;QAChC,8BAA8B,KAAK,CAAC;QACpC,uBAAuB,GAAG,CAAC,EAC3B;QAEA,MAAM,IAAI,GAAG,uBAAuB,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,IAAI,GAAG,mBAAmB,uBAAuB,cAAc,IAAI,EAAE,CAAC;QACtE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;KACnC;SAAM;KAEN;IAED,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAED,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE;YACJ,IAAI;YACJ,QAAQ,EAAE,oBAAoB;SAC/B;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,CAAM,EACN,oBAAyB,EACzB,WAAiB,EACa,EAAE;;IAChC,MAAM,MAAM,GAAa,CAAA,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,OAAO,0CAAE,QAAQ,KAAI,EAAE,CAAC;IAGvE,MAAM,cAAc,GAA0C,EAAE,CAAC;IAEjE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE;QAC1D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;QACpC,MAAM,mBAAmB,GAA0B,cAAc,CAAC,IAAI,CAAC,IAAI;YACzE,IAAI;YACJ,KAAK;YACL,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5D,cAAc,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC;IAC7C,CAAC,CAAC,CAAC;IAGH,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,iBAAiB,GAAiC,EAAE,CAAC;IAE3D,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,EAAE;QAG9E,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAGhE,IAAI,kBAAkB,KAAK,CAAC,EAAE;YAC5B,OAAO;SACR;QAED,KAAK,IAAI,kBAAkB,CAAC;QAE5B,iBAAiB,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;SACpC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,yBAAyB,GAC7B,CAAA,MAAA,MAAA,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,0CAAE,OAAO,0CAAE,mBAAmB,0CAAE,IAAI,0CAAE,QAAQ;SACnE,MAAA,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,0CAAE,OAAO,0CAAE,iBAAiB,0CAAE,IAAI,CAAA;QACvD,EAAE,CAAC;IAEL,MAAM,+BAA+B,GAAG,2BAA2B,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;IAEnG,IAAI,CAAC,KAAK,EAAE;QACV,OAAO;YACL,GAAG,CAAC,+BAA+B,IAAI;gBACrC,QAAQ,EAAE;oBACR,mBAAmB,EAAE,+BAA+B;iBACrD;aACF,CAAC;YACF,OAAO,EAAE;gBACP,sBAAsB,EAAE;oBACtB,KAAK,EAAE,KAAK;iBACb;aACF;SACF,CAAC;KACH;IAGD,MAAM,uBAAuB,GAA0C,OAAO,CAC5E,iBAAiB,EACjB,OAAO,EACP,MAAM,CACP,CAAC,MAAM,CACN,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,oBAAoB,EAAyB,EAAE,EAAE,CAAC,CAAC;QAClE,GAAG,GAAG;QACN,CAAC,IAAI,CAAC,EAAE;YACN,GAAG,oBAAoB;YACvB,QAAQ,EAAE,OAAO,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;SAClE;KACF,CAAC,EACF,EAAE,CACH,CAAC;IAIF,MAAM,qBAAqB,GAAoC,EAAE,CAAC;IAElE,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE;QAC7E,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE;YACvC,qBAAqB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;SACzC;QAED,qBAAqB,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,2BAA2B,CACrD,qBAAqB,EACrB,yBAAyB,CAC1B,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE;YACR,iBAAiB,EAAE;gBACjB,IAAI,EAAE,WAAW,CAAC,OAAO;gBACzB,IAAI,EAAE,qBAAqB;aAC5B;YACD,GAAG,CAAC,mBAAmB,IAAI,EAAE,mBAAmB,EAAE,CAAC;SACpD;QACD,OAAO,EAAE;YACP,sBAAsB,EAAE;gBACtB,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { InsightType } from '../../constants';
2
+ const getPackageNames = (packages) => {
3
+ const result = new Set();
4
+ Object.values(packages).forEach((metricPackage) => {
5
+ result.add(metricPackage.name);
6
+ });
7
+ return result;
8
+ };
9
+ const getText = (newPackages) => {
10
+ if (newPackages.length === 1) {
11
+ return `Bundle introduced one new package: ${newPackages[0]}`;
12
+ }
13
+ const firstNewPackages = newPackages.slice(0, 3);
14
+ const otherPackages = newPackages.slice(3);
15
+ const text = `Bundle introduced ${newPackages.length} new packages: ${firstNewPackages.join(', ')}`;
16
+ if (otherPackages.length === 0) {
17
+ return text;
18
+ }
19
+ if (otherPackages.length === 1) {
20
+ return `${text} and one more`;
21
+ }
22
+ return `${text} and ${otherPackages.length} more`;
23
+ };
24
+ export const extractModulesPackagesNewInsight = (_, currentExtractedData, baselineJob) => {
25
+ var _a, _b, _c;
26
+ const currentMetricPackages = (_a = currentExtractedData === null || currentExtractedData === void 0 ? void 0 : currentExtractedData.metrics) === null || _a === void 0 ? void 0 : _a.packages;
27
+ const baselineMetricPackages = (_c = (_b = baselineJob === null || baselineJob === void 0 ? void 0 : baselineJob.metrics) === null || _b === void 0 ? void 0 : _b.webpack) === null || _c === void 0 ? void 0 : _c.packages;
28
+ if (!baselineMetricPackages) {
29
+ return null;
30
+ }
31
+ const currentPackages = getPackageNames(currentMetricPackages);
32
+ const baselinePackages = getPackageNames(baselineMetricPackages);
33
+ const newPackages = [];
34
+ currentPackages.forEach((packageName) => {
35
+ if (!baselinePackages.has(packageName)) {
36
+ newPackages.push(packageName);
37
+ }
38
+ });
39
+ if (newPackages.length === 0) {
40
+ return null;
41
+ }
42
+ return {
43
+ insights: {
44
+ newPackages: {
45
+ type: InsightType.WARNING,
46
+ data: {
47
+ text: getText(newPackages),
48
+ packages: newPackages,
49
+ },
50
+ },
51
+ },
52
+ };
53
+ };
54
+ //# sourceMappingURL=modules-packages-new-insight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modules-packages-new-insight.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-new-insight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAoB,MAAM,iBAAiB,CAAC;AAShE,MAAM,eAAe,GAAG,CAAC,QAAkB,EAAe,EAAE;IAC1D,MAAM,MAAM,GAAgB,IAAI,GAAG,EAAE,CAAC;IAEtC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QAChD,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,WAA0B,EAAE,EAAE;IAC7C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,sCAAsC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3C,MAAM,IAAI,GAAG,qBAAqB,WAAW,CAAC,MAAM,kBAAkB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAEpG,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,OAAO,GAAG,IAAI,eAAe,CAAC;KAC/B;IAED,OAAO,GAAG,IAAI,QAAQ,aAAa,CAAC,MAAM,OAAO,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,CAAM,EACN,oBAAyB,EACzB,WAAiB,EACc,EAAE;;IACjC,MAAM,qBAAqB,GAAG,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,OAAO,0CAAE,QAAoB,CAAC;IAClF,MAAM,sBAAsB,GAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,0CAAE,OAAO,0CAAE,QAAoB,CAAC;IAGnF,IAAI,CAAC,sBAAsB,EAAE;QAC3B,OAAO,IAAI,CAAC;KACb;IAED,MAAM,eAAe,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAEjE,MAAM,WAAW,GAAkB,EAAE,CAAC;IAEtC,eAAe,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACtC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YACtC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IAED,OAAO;QACL,QAAQ,EAAE;YACR,WAAW,EAAE;gBACX,IAAI,EAAE,WAAW,CAAC,OAAO;gBACzB,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC;oBAC1B,QAAQ,EAAE,WAAW;iBACtB;aACF;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import round from 'lodash/round';
2
+ import union from 'lodash/union';
2
3
  import { getModuleName, normalizeChunkId } from '../utils';
3
4
  export const extractModules = (webpackStats) => {
4
5
  const modulesSource = webpackStats === null || webpackStats === void 0 ? void 0 : webpackStats.modules;
@@ -12,43 +13,64 @@ export const extractModules = (webpackStats) => {
12
13
  },
13
14
  };
14
15
  }
15
- const allModules = modulesSource.reduce((agg, moduleEntry) => {
16
- if (!moduleEntry.modules) {
17
- agg.push(moduleEntry);
18
- return agg;
16
+ const modulesByName = new Map();
17
+ modulesSource.forEach((rootModule) => {
18
+ if (!rootModule.chunks || rootModule.chunks.length === 0) {
19
+ return;
19
20
  }
20
- agg = agg.concat(moduleEntry.modules.map((concatenatedModule) => ({
21
- ...concatenatedModule,
22
- chunks: moduleEntry.chunks,
23
- })));
24
- return agg;
25
- }, []);
21
+ if (rootModule.modules) {
22
+ rootModule.modules.forEach((concatenatedModule) => {
23
+ const concatenatedModuleName = getModuleName(concatenatedModule.name);
24
+ const existingModule = modulesByName.get(concatenatedModuleName);
25
+ if (existingModule) {
26
+ modulesByName.set(concatenatedModuleName, {
27
+ ...existingModule,
28
+ chunks: union(existingModule.chunks, rootModule.chunks),
29
+ });
30
+ }
31
+ else {
32
+ modulesByName.set(concatenatedModuleName, {
33
+ ...concatenatedModule,
34
+ chunks: rootModule.chunks,
35
+ });
36
+ }
37
+ });
38
+ return;
39
+ }
40
+ const normalizedName = getModuleName(rootModule.name);
41
+ const savedRootModule = modulesByName.get(normalizedName);
42
+ if (savedRootModule) {
43
+ modulesByName.set(normalizedName, {
44
+ ...savedRootModule,
45
+ chunks: union(savedRootModule.chunks, rootModule.chunks),
46
+ size: rootModule.size,
47
+ });
48
+ return;
49
+ }
50
+ modulesByName.set(normalizedName, rootModule);
51
+ });
52
+ const modules = {};
26
53
  let moduleCount = 0;
27
54
  let totalCodeSize = 0;
28
55
  let duplicateCodeSize = 0;
29
56
  let duplicateModulesCount = 0;
30
- const modules = allModules.reduce((agg, moduleEntry) => {
31
- var _a;
57
+ modulesByName.forEach((moduleEntry, normalizedName) => {
32
58
  const { name, size = 0, chunks } = moduleEntry;
33
- const normalizedName = getModuleName(name);
34
- if (!chunks || (chunks === null || chunks === void 0 ? void 0 : chunks.length) === 0) {
35
- return agg;
36
- }
37
59
  const instances = chunks.length;
38
60
  const duplicateInstances = instances - 1;
61
+ const duplicated = duplicateInstances > 0;
39
62
  moduleCount += instances;
40
- duplicateModulesCount += duplicateInstances;
41
- duplicateCodeSize += duplicateInstances * size;
42
63
  totalCodeSize += instances * size;
43
- const reasons = (_a = moduleEntry.reasons) === null || _a === void 0 ? void 0 : _a.map((reason) => getModuleName(reason.module));
44
- agg[normalizedName] = {
64
+ if (duplicated) {
65
+ duplicateModulesCount += duplicateInstances;
66
+ duplicateCodeSize += duplicateInstances * size;
67
+ }
68
+ modules[normalizedName] = {
45
69
  name,
46
70
  value: size,
47
71
  chunkIds: chunks.map(normalizeChunkId),
48
- duplicated: Boolean(duplicateInstances),
49
- ...(reasons && { reasons }),
72
+ ...(duplicated && { duplicated }),
50
73
  };
51
- return agg;
52
74
  }, {});
53
75
  const duplicateCode = totalCodeSize ? round((duplicateCodeSize / totalCodeSize) * 100, 2) : 0;
54
76
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { Metric } from './types';
4
4
  export const metrics = {
5
5
  [Metric.BUNDLE_SIZE]: {
6
6
  label: 'Bundle Size',
7
- description: 'The total size of the assets produced by webpack',
7
+ description: 'The total size of the assets processed by the bundler',
8
8
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
9
9
  type: METRIC_TYPE_FILE_SIZE,
10
10
  },
@@ -43,14 +43,14 @@ export const metrics = {
43
43
  },
44
44
  [Metric.MODULE_COUNT]: {
45
45
  label: 'Modules',
46
- description: 'The total number of modules bundled by webpack',
46
+ description: 'The total number of bundled modules',
47
47
  url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
48
48
  type: METRIC_TYPE_NUMERIC,
49
49
  biggerIsBetter: false,
50
50
  },
51
51
  [Metric.DUPLICATE_MODULES_COUNT]: {
52
52
  label: 'Duplicate Modules',
53
- description: 'The total number of modules that belong to more than one chunk',
53
+ description: 'The total number of module instances bundled into multiple chunks',
54
54
  url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
55
55
  type: METRIC_TYPE_NUMERIC,
56
56
  biggerIsBetter: false,
@@ -64,14 +64,14 @@ export const metrics = {
64
64
  },
65
65
  [Metric.PACKAGE_COUNT]: {
66
66
  label: 'Packages',
67
- description: 'The total number of packages bundled by webpack',
67
+ description: 'The total number of bundled packages',
68
68
  url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
69
69
  type: METRIC_TYPE_NUMERIC,
70
70
  biggerIsBetter: false,
71
71
  },
72
72
  [Metric.DUPLICATE_PACKAGES_COUNT]: {
73
73
  label: 'Duplicate Packages',
74
- description: 'The total number of duplicate packages',
74
+ description: 'The total number of bundled duplicate package instances',
75
75
  url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
76
76
  type: METRIC_TYPE_NUMERIC,
77
77
  biggerIsBetter: false,
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/webpack/metrics.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/webpack/metrics.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bundle-stats/utils",
3
- "version": "4.4.0-beta.0",
3
+ "version": "4.4.0-beta.3",
4
4
  "description": "BundleStats utils",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -35,28 +35,28 @@
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.4.0-beta.0",
39
- "@bundle-stats/plugin-webpack-validate": "^4.4.0-beta.0",
38
+ "@bundle-stats/plugin-webpack-filter": "^4.4.0-beta.3",
39
+ "@bundle-stats/plugin-webpack-validate": "^4.4.0-beta.3",
40
40
  "query-string": "7.1.3",
41
41
  "serialize-query-params": "2.0.2",
42
- "use-query-params": "2.1.2"
42
+ "use-query-params": "2.2.1"
43
43
  },
44
44
  "devDependencies": {
45
- "@types/jest": "29.4.0",
46
- "@types/lodash": "4.14.191",
47
- "core-js": "3.27.2",
48
- "jest": "29.4.0",
49
- "jest-cli": "29.4.0",
45
+ "@types/jest": "29.5.2",
46
+ "@types/lodash": "4.14.195",
47
+ "core-js": "3.30.2",
48
+ "jest": "29.5.0",
49
+ "jest-cli": "29.5.0",
50
50
  "jest-date-mock": "1.0.8",
51
51
  "lodash": "4.17.21",
52
52
  "regenerator-runtime": "0.13.11",
53
- "rimraf": "4.1.2",
54
- "ts-jest": "29.0.5",
55
- "typescript": "4.9.4"
53
+ "rimraf": "4.4.1",
54
+ "ts-jest": "29.1.0",
55
+ "typescript": "5.1.3"
56
56
  },
57
57
  "peerDependencies": {
58
58
  "core-js": "^3.0.0",
59
59
  "lodash": "^4.0.0"
60
60
  },
61
- "gitHead": "e2c2b5a9b7bd31c07baad4f5fefa682d21470600"
61
+ "gitHead": "24b9c0091e6a2dee2745dc149c2743e72349c3f0"
62
62
  }
@@ -36,3 +36,8 @@ export const COMPONENT = {
36
36
  BUNDLE_MODULES: 'bm',
37
37
  BUNDLE_PACKAGES: 'bp',
38
38
  };
39
+
40
+ export const MODULE_SOURCE_TYPE_LABELS = {
41
+ FIRST_PARTY: 'First party',
42
+ THIRD_PARTY: 'Third party',
43
+ };
@@ -9,7 +9,7 @@ export const FILE_TYPE_OTHER = 'OTHER';
9
9
 
10
10
  export const FILE_TYPE_PATTERNS = {
11
11
  [FILE_TYPE_CSS]: /\.css$/,
12
- [FILE_TYPE_JS]: /\.js$/,
12
+ [FILE_TYPE_JS]: /\.(js|cjs|mjs)$/,
13
13
  [FILE_TYPE_IMG]: /\.(a?png|jpe?g|webp|gif|svg|ico|avif)$/,
14
14
  [FILE_TYPE_MEDIA]: /\.(mp4|mp3|m4a|aac|mov|webm|wav|ogg)$/,
15
15
  [FILE_TYPE_FONT]: /\.(woff|woff2|ttf|otf|eot)$/,
@@ -34,14 +34,14 @@ export const FILE_TYPES = [...Object.keys(FILE_TYPE_PATTERNS), FILE_TYPE_OTHER];
34
34
  */
35
35
  export const MODULE_SOURCE_PATTERNS = {
36
36
  [FILE_TYPE_CSS]: /\.(css|styl|sass|scss|less)$/,
37
- [FILE_TYPE_JS]: /\.(jsx?|tsx?|mjs)$/,
37
+ [FILE_TYPE_JS]: /\.(jsx?|tsx?|cjs|mjs)$/,
38
38
  };
39
39
 
40
40
  export const MODULE_SOURCE_FILE_TYPES = [...Object.keys(MODULE_SOURCE_PATTERNS), FILE_TYPE_OTHER];
41
41
 
42
42
  export const MODULE_DESTINATION_PATTERNS = {
43
43
  [FILE_TYPE_CSS]: /\.css$/,
44
- [FILE_TYPE_JS]: /\.(js|mjs)$/,
44
+ [FILE_TYPE_JS]: /\.(js|cjs|mjs)$/,
45
45
  };
46
46
 
47
47
  export const MODULE_DESTINATION_FILE_TYPES = Object.keys(MODULE_DESTINATION_PATTERNS);
@@ -1,6 +1,5 @@
1
1
  export * from './component-links';
2
2
  export * from './file-types';
3
- export * from './insights';
4
3
  export * from './metrics';
5
4
  export * from './delta';
6
5
 
@@ -1,9 +1,4 @@
1
- import {
2
- formatNumber,
3
- formatDuration,
4
- formatFileSize,
5
- formatPercentage,
6
- } from '../utils/format';
1
+ import { formatNumber, formatDuration, formatFileSize, formatPercentage } from '../utils/format';
7
2
 
8
3
  export const METRIC_TYPE_FILE_SIZE = 'METRIC_TYPE_FILE_SIZE';
9
4
  export const METRIC_TYPE_DURATION = 'METRIC_TYPE_DURATION';
@@ -11,6 +6,7 @@ export const METRIC_TYPE_NUMERIC = 'METRIC_TYPE_NUMERIC';
11
6
  export const METRIC_TYPE_SCORE = 'METRIC_TYPE_SCORE';
12
7
  export const METRIC_TYPE_PERCENTAGE = 'METRIC_TYPE_PERCENTAGE';
13
8
 
9
+ /** @type {Record<string, import('../constants').MetricType>} */
14
10
  export const METRIC_TYPES = {
15
11
  [METRIC_TYPE_NUMERIC]: {
16
12
  biggerIsBetter: false,
package/src/constants.ts CHANGED
@@ -1,5 +1,3 @@
1
- import { InsightType } from './config/insights';
2
-
3
1
  export enum Source {
4
2
  webpack = 'webpack',
5
3
  lighthouse = 'lighthouse',
@@ -8,12 +6,18 @@ export enum Source {
8
6
 
9
7
  export type SourceData = Record<string, unknown>;
10
8
 
9
+ export enum InsightType {
10
+ ERROR = 'error',
11
+ INFO = 'info',
12
+ WARNING = 'warning',
13
+ }
14
+
11
15
  export enum MetricTypeType {
12
- 'METRIC_TYPE_NUMERIC' = 'METRIC_TYPE_NUMERIC',
13
- 'METRIC_TYPE_SCORE' = 'METRIC_TYPE_SCORE',
14
- 'METRIC_TYPE_FILE_SIZE' = 'METRIC_TYPE_FILE_SIZE',
15
- 'METRIC_TYPE_DURATION' = 'METRIC_TYPE_DURATION',
16
- 'METRIC_TYPE_PERCENTAGE' = 'METRIC_TYPE_PERCENTAGE',
16
+ METRIC_TYPE_NUMERIC = 'METRIC_TYPE_NUMERIC',
17
+ METRIC_TYPE_SCORE = 'METRIC_TYPE_SCORE',
18
+ METRIC_TYPE_FILE_SIZE = 'METRIC_TYPE_FILE_SIZE',
19
+ METRIC_TYPE_DURATION = 'METRIC_TYPE_DURATION',
20
+ METRIC_TYPE_PERCENTAGE = 'METRIC_TYPE_PERCENTAGE',
17
21
  }
18
22
 
19
23
  export interface MetricTypeConfig {
@@ -68,21 +72,23 @@ export interface JobSummaryItem {
68
72
 
69
73
  export interface JobInsight<T = object> {
70
74
  type: InsightType;
71
- data: T;
75
+ data: T & { text?: string };
72
76
  }
73
77
 
74
78
  export interface JobInsightAssetsSizeTotalData {
75
- text: string;
76
79
  md: string;
77
80
  info: MetricRunInfo;
78
81
  }
79
82
  export type JobInsightDuplicatePackagesData = Record<string, Array<string>>;
80
83
 
81
84
  export interface JobInsightDuplicatePackagesV3Data {
82
- text: string;
83
85
  packages: Record<string, Array<string>>;
84
86
  }
85
87
 
88
+ export interface JobInsightNewPackagesData {
89
+ packages: Array<string>;
90
+ }
91
+
86
92
  export type JobSummarySource = Record<string, JobSummaryItem>;
87
93
  export type JobSummary = JobSection<JobSummarySource>;
88
94
 
@@ -91,9 +97,15 @@ export interface JobInsights {
91
97
  assetsSizeTotal: JobInsight<JobInsightAssetsSizeTotalData>;
92
98
  duplicatePackages?: JobInsight<JobInsightDuplicatePackagesData>;
93
99
  duplicatePackagesV3?: JobInsight<JobInsightDuplicatePackagesV3Data>;
100
+ newPackages?: JobInsight<JobInsightNewPackagesData>;
94
101
  };
95
102
  }
96
103
 
104
+ export interface JobInsightsInfo {
105
+ duplicatePackages?: JobInsights['webpack']['duplicatePackagesV3'];
106
+ newPackages?: JobInsights['webpack']['newPackages'];
107
+ }
108
+
97
109
  export type JobMetricsSource = Record<string, MetricRun | Record<string, MetricRun>>;
98
110
  export type JobMetrics = JobSection<JobMetricsSource>;
99
111
 
package/src/i18n.js CHANGED
@@ -7,9 +7,14 @@ export default {
7
7
  COMPONENT_LINK_BUNDLE_ASSETS_CHUNK_COUNT: 'View all chunks',
8
8
  COMPONENT_LINK_MODULES: 'View modules',
9
9
  COMPONENT_LINK_MODULES_DUPLICATE: 'View duplicate modules',
10
+ COMPONENT_LINK_MODULES_BY_FILE_TYPE: (fileType) => `View all ${fileType} modules`,
11
+ COMPONENT_LINK_MODULES_BY_SOURCE: (source) => `View all ${source} modules`,
10
12
  COMPONENT_LINK_CHUNK_MODULES: 'View chunk modules',
11
13
  COMPONENT_LINK_PACKAGES_COUNT: 'View all packages',
14
+ COMPONENT_LINK_PACKAGES_CHANGED: 'View all changed packages',
12
15
  COMPONENT_LINK_PACKAGES_DUPLICATE: 'View all duplicate packages',
16
+ COMPONENT_LINK_PACKAGES_DUPLICATE_CHANGED: 'View all changed duplicate packages',
13
17
  COMPONENT_LINK_VIEW_PACKAGE: 'View package',
14
18
  COMPONENT_LINK_BUNDLE_ASSETS_BY_FILE_TYPE: ({ label }) => `View all ${label} assets`,
19
+ COMPONENT_LINK_BUNDLE_ASSETS_BY_ENTRY_TYPE: (assetType) => `View all ${assetType} assets`,
15
20
  };