@bundle-stats/utils 4.3.0-beta.3 → 4.3.0-rc.1

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 (56) hide show
  1. package/lib/config/metrics.js.map +1 -1
  2. package/lib/i18n.js +3 -0
  3. package/lib/i18n.js.map +1 -1
  4. package/lib/utils/component-links.js +30 -3
  5. package/lib/utils/component-links.js.map +1 -1
  6. package/lib/utils/index.js +1 -0
  7. package/lib/utils/index.js.map +1 -1
  8. package/lib/utils/insights.js +54 -0
  9. package/lib/utils/insights.js.map +1 -0
  10. package/lib/webpack/extract/modules-packages-duplicate.js +21 -9
  11. package/lib/webpack/extract/modules-packages-duplicate.js.map +1 -1
  12. package/lib/webpack/extract/modules.js +45 -20
  13. package/lib/webpack/extract/modules.js.map +1 -1
  14. package/lib/webpack/metrics.js +5 -5
  15. package/lib/webpack/metrics.js.map +1 -1
  16. package/lib-esm/config/metrics.js +1 -1
  17. package/lib-esm/config/metrics.js.map +1 -1
  18. package/lib-esm/i18n.js +3 -0
  19. package/lib-esm/i18n.js.map +1 -1
  20. package/lib-esm/utils/component-links.js +28 -2
  21. package/lib-esm/utils/component-links.js.map +1 -1
  22. package/lib-esm/utils/index.js +1 -0
  23. package/lib-esm/utils/index.js.map +1 -1
  24. package/lib-esm/utils/insights.js +47 -0
  25. package/lib-esm/utils/insights.js.map +1 -0
  26. package/lib-esm/webpack/extract/modules-packages-duplicate.js +21 -9
  27. package/lib-esm/webpack/extract/modules-packages-duplicate.js.map +1 -1
  28. package/lib-esm/webpack/extract/modules.js +45 -20
  29. package/lib-esm/webpack/extract/modules.js.map +1 -1
  30. package/lib-esm/webpack/metrics.js +5 -5
  31. package/lib-esm/webpack/metrics.js.map +1 -1
  32. package/package.json +13 -13
  33. package/src/config/metrics.js +2 -6
  34. package/src/constants.ts +5 -0
  35. package/src/i18n.js +3 -0
  36. package/src/utils/component-links.ts +33 -2
  37. package/src/utils/index.js +1 -0
  38. package/src/utils/insights.ts +82 -0
  39. package/src/webpack/extract/modules-packages-duplicate.ts +31 -16
  40. package/src/webpack/extract/modules.ts +61 -31
  41. package/src/webpack/metrics.js +5 -5
  42. package/src/webpack/types.ts +2 -2
  43. package/types/browsertime/metrics.d.ts +1 -1
  44. package/types/config/metrics.d.ts +1 -30
  45. package/types/constants.d.ts +4 -0
  46. package/types/i18n.d.ts +3 -0
  47. package/types/lighthouse/metrics.d.ts +4 -4
  48. package/types/utils/component-links.d.ts +3 -1
  49. package/types/utils/index.d.ts +1 -0
  50. package/types/utils/insights.d.ts +9 -0
  51. package/types/webpack/constants.d.ts +1 -1
  52. package/types/webpack/extract/assets-size-total-insight.d.ts +1 -1
  53. package/types/webpack/extract/modules-packages-duplicate.d.ts +3 -3
  54. package/types/webpack/metrics.d.ts +3 -3
  55. package/types/webpack/types.d.ts +2 -2
  56. package/tsconfig.lib.json +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.js"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.js"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,47 @@
1
+ import isEmpty from 'lodash/isEmpty';
2
+ import { InsightType } from '../constants';
3
+ import { BUNDLE_PACKAGES_DUPLICATE, BUNDLE_PACKAGES_CHANGED, BUNDLE_PACKAGES_DUPLICATE_CHANGED, } from './component-links';
4
+ export const getInsightList = (insights) => {
5
+ const { duplicatePackages, newPackages } = insights;
6
+ const insightsByLevel = {
7
+ [InsightType.ERROR]: [],
8
+ [InsightType.WARNING]: [],
9
+ [InsightType.INFO]: [],
10
+ };
11
+ if (duplicatePackages) {
12
+ insightsByLevel[duplicatePackages.type].push({
13
+ name: 'duplicatePackages',
14
+ insight: duplicatePackages,
15
+ link: duplicatePackages.type === InsightType.WARNING
16
+ ? BUNDLE_PACKAGES_DUPLICATE
17
+ : BUNDLE_PACKAGES_DUPLICATE_CHANGED,
18
+ });
19
+ }
20
+ if (newPackages) {
21
+ insightsByLevel[newPackages.type].push({
22
+ name: 'newPackages',
23
+ insight: newPackages,
24
+ link: BUNDLE_PACKAGES_CHANGED,
25
+ });
26
+ }
27
+ return [
28
+ ...(insightsByLevel[InsightType.ERROR] || []),
29
+ ...(insightsByLevel[InsightType.WARNING] || []),
30
+ ...(insightsByLevel[InsightType.INFO] || []),
31
+ ];
32
+ };
33
+ export const getChangedInsights = (normalizedInsights) => {
34
+ var _a;
35
+ const res = {};
36
+ if (((_a = normalizedInsights.duplicatePackages) === null || _a === void 0 ? void 0 : _a.type) === InsightType.ERROR) {
37
+ res.duplicatePackages = normalizedInsights.duplicatePackages;
38
+ }
39
+ if (normalizedInsights.newPackages) {
40
+ res.newPackages = normalizedInsights.newPackages;
41
+ }
42
+ if (isEmpty(res)) {
43
+ return null;
44
+ }
45
+ return res;
46
+ };
47
+ //# sourceMappingURL=insights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/utils/insights.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,WAAW,EAA+B,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,iCAAiC,GAClC,MAAM,mBAAmB,CAAC;AAoB3B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAyB,EAA0B,EAAE;IAClF,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IAEpD,MAAM,eAAe,GAAgD;QACnE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE;QACvB,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;QACzB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE;KACvB,CAAC;IAEF,IAAI,iBAAiB,EAAE;QACrB,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAC3C,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,iBAAiB;YAC1B,IAAI,EACF,iBAAiB,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO;gBAC5C,CAAC,CAAC,yBAAyB;gBAC3B,CAAC,CAAC,iCAAiC;SACxC,CAAC,CAAC;KACJ;IAED,IAAI,WAAW,EAAE;QACf,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACrC,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,uBAAuB;SAC9B,CAAC,CAAC;KACJ;IAED,OAAO;QACL,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/C,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KAC7C,CAAC;AACJ,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,kBAAmC,EAA0B,EAAE;;IAChG,MAAM,GAAG,GAAoB,EAAE,CAAC;IAEhC,IAAI,CAAA,MAAA,kBAAkB,CAAC,iBAAiB,0CAAE,IAAI,MAAK,WAAW,CAAC,KAAK,EAAE;QACpE,GAAG,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;KAC9D;IAED,IAAI,kBAAkB,CAAC,WAAW,EAAE;QAClC,GAAG,CAAC,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC;KAClD;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
@@ -1,3 +1,4 @@
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';
@@ -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"}
@@ -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,40 +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) => {
57
+ modulesByName.forEach((moduleEntry, normalizedName) => {
31
58
  const { name, size = 0, chunks } = moduleEntry;
32
- const normalizedName = getModuleName(name);
33
- if (!chunks || (chunks === null || chunks === void 0 ? void 0 : chunks.length) === 0) {
34
- return agg;
35
- }
36
59
  const instances = chunks.length;
37
60
  const duplicateInstances = instances - 1;
61
+ const duplicated = duplicateInstances > 0;
38
62
  moduleCount += instances;
39
- duplicateModulesCount += duplicateInstances;
40
- duplicateCodeSize += duplicateInstances * size;
41
63
  totalCodeSize += instances * size;
42
- agg[normalizedName] = {
64
+ if (duplicated) {
65
+ duplicateModulesCount += duplicateInstances;
66
+ duplicateCodeSize += duplicateInstances * size;
67
+ }
68
+ modules[normalizedName] = {
43
69
  name,
44
70
  value: size,
45
71
  chunkIds: chunks.map(normalizeChunkId),
46
- duplicated: Boolean(duplicateInstances),
72
+ ...(duplicated && { duplicated }),
47
73
  };
48
- return agg;
49
74
  }, {});
50
75
  const duplicateCode = totalCodeSize ? round((duplicateCodeSize / totalCodeSize) * 100, 2) : 0;
51
76
  return {
@@ -1 +1 @@
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"}
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.3.0-beta.3",
3
+ "version": "4.3.0-rc.1",
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.3.0-beta.3",
39
- "@bundle-stats/plugin-webpack-validate": "^4.3.0-beta.3",
38
+ "@bundle-stats/plugin-webpack-filter": "^4.3.0-rc.1",
39
+ "@bundle-stats/plugin-webpack-validate": "^4.3.0-rc.1",
40
40
  "query-string": "7.1.3",
41
41
  "serialize-query-params": "2.0.2",
42
- "use-query-params": "2.2.0"
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.2",
49
- "jest-cli": "29.4.2",
45
+ "@types/jest": "29.5.0",
46
+ "@types/lodash": "4.14.192",
47
+ "core-js": "3.30.0",
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.5"
53
+ "rimraf": "4.4.1",
54
+ "ts-jest": "29.1.0",
55
+ "typescript": "5.0.3"
56
56
  },
57
57
  "peerDependencies": {
58
58
  "core-js": "^3.0.0",
59
59
  "lodash": "^4.0.0"
60
60
  },
61
- "gitHead": "b9dff5b3797a3a8bb5bc5afce1900a56080c9ba4"
61
+ "gitHead": "ab03ed6a8ae8fccec7dcb25d7c45259c4e2ba08c"
62
62
  }
@@ -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
@@ -101,6 +101,11 @@ export interface JobInsights {
101
101
  };
102
102
  }
103
103
 
104
+ export interface JobInsightsInfo {
105
+ duplicatePackages?: JobInsights['webpack']['duplicatePackagesV3'];
106
+ newPackages?: JobInsights['webpack']['newPackages'];
107
+ }
108
+
104
109
  export type JobMetricsSource = Record<string, MetricRun | Record<string, MetricRun>>;
105
110
  export type JobMetrics = JobSection<JobMetricsSource>;
106
111
 
package/src/i18n.js CHANGED
@@ -9,7 +9,10 @@ export default {
9
9
  COMPONENT_LINK_MODULES_DUPLICATE: 'View duplicate modules',
10
10
  COMPONENT_LINK_CHUNK_MODULES: 'View chunk modules',
11
11
  COMPONENT_LINK_PACKAGES_COUNT: 'View all packages',
12
+ COMPONENT_LINK_PACKAGES_CHANGED: 'View all changed packages',
12
13
  COMPONENT_LINK_PACKAGES_DUPLICATE: 'View all duplicate packages',
14
+ COMPONENT_LINK_PACKAGES_DUPLICATE_CHANGED: 'View all changed duplicate packages',
13
15
  COMPONENT_LINK_VIEW_PACKAGE: 'View package',
14
16
  COMPONENT_LINK_BUNDLE_ASSETS_BY_FILE_TYPE: ({ label }) => `View all ${label} assets`,
17
+ COMPONENT_LINK_BUNDLE_ASSETS_BY_ENTRY_TYPE: (assetType) => `View all ${assetType} assets`,
15
18
  };
@@ -185,6 +185,24 @@ export const BUNDLE_MODULES_DUPLICATE: ComponentLink = {
185
185
  },
186
186
  };
187
187
 
188
+ export const getBundleAssetsByEntryType = (
189
+ assetType: 'entry' | 'initial' | 'chunk',
190
+ ): ComponentLink => ({
191
+ section: SECTIONS.ASSETS,
192
+ title: I18N.COMPONENT_LINK_BUNDLE_ASSETS_BY_ENTRY_TYPE(assetType),
193
+ params: {
194
+ [COMPONENT.BUNDLE_ASSETS]: {
195
+ filters: {
196
+ [ASSET_FILTERS.CHANGED]: false,
197
+ ...getAssetEntryTypeFilters(false),
198
+ [`${ASSET_ENTRY_TYPE}.${ASSET_FILTERS.ENTRY}`]: assetType === 'entry',
199
+ [`${ASSET_ENTRY_TYPE}.${ASSET_FILTERS.INITIAL}`]: assetType === 'initial',
200
+ [`${ASSET_ENTRY_TYPE}.${ASSET_FILTERS.CHUNK}`]: assetType === 'chunk',
201
+ },
202
+ },
203
+ },
204
+ });
205
+
188
206
  export const getBundleModulesBySearch = (search: string): ComponentLink => ({
189
207
  section: SECTIONS.MODULES,
190
208
  title: I18N.COMPONENT_LINK_MODULES,
@@ -234,6 +252,19 @@ export const BUNDLE_PACKAGES_COUNT: ComponentLink = {
234
252
  },
235
253
  };
236
254
 
255
+ export const BUNDLE_PACKAGES_CHANGED: ComponentLink = {
256
+ section: SECTIONS.PACKAGES,
257
+ title: I18N.COMPONENT_LINK_PACKAGES_CHANGED,
258
+ params: {
259
+ [COMPONENT.BUNDLE_PACKAGES]: {
260
+ filters: {
261
+ // Keep a filter to allow the merge and skip default
262
+ [PACKAGE_FILTERS.CHANGED]: true,
263
+ },
264
+ },
265
+ },
266
+ };
267
+
237
268
  export const BUNDLE_PACKAGES_DUPLICATE: ComponentLink = {
238
269
  section: SECTIONS.PACKAGES,
239
270
  title: I18N.COMPONENT_LINK_PACKAGES_DUPLICATE,
@@ -246,9 +277,9 @@ export const BUNDLE_PACKAGES_DUPLICATE: ComponentLink = {
246
277
  },
247
278
  };
248
279
 
249
- export const BUNDLE_PACKAGES_DUPLICATE_NEW: ComponentLink = {
280
+ export const BUNDLE_PACKAGES_DUPLICATE_CHANGED: ComponentLink = {
250
281
  section: SECTIONS.PACKAGES,
251
- title: I18N.COMPONENT_LINK_PACKAGES_DUPLICATE,
282
+ title: I18N.COMPONENT_LINK_PACKAGES_DUPLICATE_CHANGED,
252
283
  params: {
253
284
  [COMPONENT.BUNDLE_PACKAGES]: {
254
285
  filters: {
@@ -1,6 +1,7 @@
1
1
  export * from './component-links';
2
2
  export * from './delta';
3
3
  export * from './date';
4
+ export * from './insights';
4
5
  export * from './file-types';
5
6
  export * from './format';
6
7
  export * from './metrics';
@@ -0,0 +1,82 @@
1
+ import isEmpty from 'lodash/isEmpty';
2
+
3
+ import { InsightType, JobInsight, JobInsightsInfo } from '../constants';
4
+ import {
5
+ BUNDLE_PACKAGES_DUPLICATE,
6
+ BUNDLE_PACKAGES_CHANGED,
7
+ BUNDLE_PACKAGES_DUPLICATE_CHANGED,
8
+ } from './component-links';
9
+
10
+ interface InsightListItem {
11
+ /**
12
+ * Inight name
13
+ */
14
+ name: string;
15
+ /**
16
+ * Insight data
17
+ */
18
+ insight: JobInsight;
19
+ /**
20
+ * Custom link props
21
+ */
22
+ link: any;
23
+ }
24
+
25
+ /**
26
+ * Get the insigh list ordered by level type
27
+ */
28
+ export const getInsightList = (insights: JobInsightsInfo): Array<InsightListItem> => {
29
+ const { duplicatePackages, newPackages } = insights;
30
+
31
+ const insightsByLevel: Record<InsightType, Array<InsightListItem>> = {
32
+ [InsightType.ERROR]: [],
33
+ [InsightType.WARNING]: [],
34
+ [InsightType.INFO]: [],
35
+ };
36
+
37
+ if (duplicatePackages) {
38
+ insightsByLevel[duplicatePackages.type].push({
39
+ name: 'duplicatePackages',
40
+ insight: duplicatePackages,
41
+ link:
42
+ duplicatePackages.type === InsightType.WARNING
43
+ ? BUNDLE_PACKAGES_DUPLICATE
44
+ : BUNDLE_PACKAGES_DUPLICATE_CHANGED,
45
+ });
46
+ }
47
+
48
+ if (newPackages) {
49
+ insightsByLevel[newPackages.type].push({
50
+ name: 'newPackages',
51
+ insight: newPackages,
52
+ link: BUNDLE_PACKAGES_CHANGED,
53
+ });
54
+ }
55
+
56
+ return [
57
+ ...(insightsByLevel[InsightType.ERROR] || []),
58
+ ...(insightsByLevel[InsightType.WARNING] || []),
59
+ ...(insightsByLevel[InsightType.INFO] || []),
60
+ ];
61
+ };
62
+
63
+ /**
64
+ * Show only the insights that are introduced by a change
65
+ */
66
+ export const getChangedInsights = (normalizedInsights: JobInsightsInfo): JobInsightsInfo | null => {
67
+ const res: JobInsightsInfo = {};
68
+
69
+ if (normalizedInsights.duplicatePackages?.type === InsightType.ERROR) {
70
+ res.duplicatePackages = normalizedInsights.duplicatePackages;
71
+ }
72
+
73
+ if (normalizedInsights.newPackages) {
74
+ res.newPackages = normalizedInsights.newPackages;
75
+ }
76
+
77
+ if (isEmpty(res)) {
78
+ return null;
79
+ }
80
+
81
+ return res;
82
+ };