@bundle-stats/utils 3.3.0-alpha.1 → 3.3.0-beta.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 (178) hide show
  1. package/CHANGELOG.md +29 -12
  2. package/lib/browsertime/index.js +5 -1
  3. package/lib/browsertime/index.js.map +1 -1
  4. package/lib/config/component-links.js +1 -0
  5. package/lib/config/component-links.js.map +1 -1
  6. package/lib/config/file-types.js +3 -3
  7. package/lib/config/file-types.js.map +1 -1
  8. package/lib/config/index.js +5 -1
  9. package/lib/config/index.js.map +1 -1
  10. package/lib/constants.js +1 -8
  11. package/lib/constants.js.map +1 -1
  12. package/lib/i18n.js +2 -1
  13. package/lib/i18n.js.map +1 -1
  14. package/lib/index.js +5 -16
  15. package/lib/index.js.map +1 -1
  16. package/lib/jobs/create-job.js +7 -3
  17. package/lib/jobs/create-job.js.map +1 -1
  18. package/lib/jobs/create-jobs.js +2 -2
  19. package/lib/jobs/create-jobs.js.map +1 -1
  20. package/lib/jobs/index.js +5 -1
  21. package/lib/jobs/index.js.map +1 -1
  22. package/lib/lighthouse/index.js +5 -1
  23. package/lib/lighthouse/index.js.map +1 -1
  24. package/lib/report/create.js +5 -1
  25. package/lib/report/create.js.map +1 -1
  26. package/lib/report/index.js +5 -1
  27. package/lib/report/index.js.map +1 -1
  28. package/lib/utils/component-links.js +15 -1
  29. package/lib/utils/component-links.js.map +1 -1
  30. package/lib/utils/format.js +5 -1
  31. package/lib/utils/format.js.map +1 -1
  32. package/lib/utils/index.js +5 -1
  33. package/lib/utils/index.js.map +1 -1
  34. package/lib/webpack/constants.js +14 -26
  35. package/lib/webpack/constants.js.map +1 -1
  36. package/lib/webpack/extract/assets-size-total-insight.js +4 -4
  37. package/lib/webpack/extract/assets-size-total-insight.js.map +1 -1
  38. package/lib/webpack/extract/assets-size.js +4 -3
  39. package/lib/webpack/extract/assets-size.js.map +1 -1
  40. package/lib/webpack/extract/index.js +1 -22
  41. package/lib/webpack/extract/index.js.map +1 -1
  42. package/lib/webpack/extract/modules-packages-duplicate.js +2 -2
  43. package/lib/webpack/extract/modules-packages-duplicate.js.map +1 -1
  44. package/lib/webpack/extract/modules.js +29 -2
  45. package/lib/webpack/extract/modules.js.map +1 -1
  46. package/lib/webpack/index.js +5 -1
  47. package/lib/webpack/index.js.map +1 -1
  48. package/lib/webpack/metrics.js +30 -27
  49. package/lib/webpack/metrics.js.map +1 -1
  50. package/lib-esm/config/component-links.js +1 -0
  51. package/lib-esm/config/component-links.js.map +1 -1
  52. package/lib-esm/config/file-types.js +3 -3
  53. package/lib-esm/config/file-types.js.map +1 -1
  54. package/lib-esm/constants.js +0 -7
  55. package/lib-esm/constants.js.map +1 -1
  56. package/lib-esm/i18n.js +2 -1
  57. package/lib-esm/i18n.js.map +1 -1
  58. package/lib-esm/index.js +0 -3
  59. package/lib-esm/index.js.map +1 -1
  60. package/lib-esm/jobs/create-job.js +2 -2
  61. package/lib-esm/jobs/create-job.js.map +1 -1
  62. package/lib-esm/jobs/create-jobs.js +2 -2
  63. package/lib-esm/jobs/create-jobs.js.map +1 -1
  64. package/lib-esm/utils/component-links.js +14 -0
  65. package/lib-esm/utils/component-links.js.map +1 -1
  66. package/lib-esm/webpack/constants.js +13 -25
  67. package/lib-esm/webpack/constants.js.map +1 -1
  68. package/lib-esm/webpack/extract/assets-size-total-insight.js +4 -4
  69. package/lib-esm/webpack/extract/assets-size-total-insight.js.map +1 -1
  70. package/lib-esm/webpack/extract/assets-size.js +4 -3
  71. package/lib-esm/webpack/extract/assets-size.js.map +1 -1
  72. package/lib-esm/webpack/extract/index.js +1 -3
  73. package/lib-esm/webpack/extract/index.js.map +1 -1
  74. package/lib-esm/webpack/extract/modules-packages-duplicate.js +2 -2
  75. package/lib-esm/webpack/extract/modules-packages-duplicate.js.map +1 -1
  76. package/lib-esm/webpack/extract/modules.js +29 -2
  77. package/lib-esm/webpack/extract/modules.js.map +1 -1
  78. package/lib-esm/webpack/metrics.js +30 -27
  79. package/lib-esm/webpack/metrics.js.map +1 -1
  80. package/package.json +16 -16
  81. package/src/config/component-links.js +1 -0
  82. package/src/config/file-types.js +3 -3
  83. package/src/constants.ts +3 -7
  84. package/src/i18n.js +2 -1
  85. package/src/index.js +0 -2
  86. package/src/jobs/create-job.js +2 -2
  87. package/src/jobs/create-jobs.js +2 -2
  88. package/src/utils/component-links.js +23 -7
  89. package/src/webpack/constants.js +91 -0
  90. package/src/webpack/extract/assets-size-total-insight.js +4 -4
  91. package/src/webpack/extract/assets-size.js +5 -3
  92. package/src/webpack/extract/index.js +5 -7
  93. package/src/webpack/extract/modules-packages-duplicate.js +2 -2
  94. package/src/webpack/extract/modules.ts +35 -4
  95. package/src/webpack/{metrics.ts → metrics.js} +30 -27
  96. package/lib/transformers/budgets-insights.js +0 -85
  97. package/lib/transformers/budgets-insights.js.map +0 -1
  98. package/lib/transformers/index.js +0 -24
  99. package/lib/transformers/index.js.map +0 -1
  100. package/lib/webpack/extract/budgets-insights.js +0 -39
  101. package/lib/webpack/extract/budgets-insights.js.map +0 -1
  102. package/lib-esm/transformers/budgets-insights.js +0 -77
  103. package/lib-esm/transformers/budgets-insights.js.map +0 -1
  104. package/lib-esm/transformers/index.js +0 -3
  105. package/lib-esm/transformers/index.js.map +0 -1
  106. package/lib-esm/webpack/extract/budgets-insights.js +0 -33
  107. package/lib-esm/webpack/extract/budgets-insights.js.map +0 -1
  108. package/src/transformers/budgets-insights.ts +0 -143
  109. package/src/transformers/index.ts +0 -1
  110. package/src/webpack/constants.ts +0 -96
  111. package/src/webpack/extract/budgets-insights.ts +0 -73
  112. package/types/browsertime/compare.d.ts +0 -1
  113. package/types/browsertime/constants.d.ts +0 -1
  114. package/types/browsertime/extract.d.ts +0 -6
  115. package/types/browsertime/filter.d.ts +0 -1
  116. package/types/browsertime/index.d.ts +0 -6
  117. package/types/browsertime/metrics.d.ts +0 -107
  118. package/types/browsertime/selectors.d.ts +0 -1
  119. package/types/config/component-links.d.ts +0 -34
  120. package/types/config/delta.d.ts +0 -9
  121. package/types/config/file-types.d.ts +0 -45
  122. package/types/config/index.d.ts +0 -11
  123. package/types/config/insights.d.ts +0 -4
  124. package/types/config/metrics.d.ts +0 -35
  125. package/types/constants.d.ts +0 -162
  126. package/types/i18n.d.ts +0 -15
  127. package/types/index.d.ts +0 -7
  128. package/types/jobs/create-job.d.ts +0 -1
  129. package/types/jobs/create-jobs.d.ts +0 -1
  130. package/types/jobs/create-summary.d.ts +0 -1
  131. package/types/jobs/index.d.ts +0 -2
  132. package/types/lighthouse/compare.d.ts +0 -1
  133. package/types/lighthouse/constants.d.ts +0 -1
  134. package/types/lighthouse/extract/audits.d.ts +0 -6
  135. package/types/lighthouse/extract/category-scores.d.ts +0 -6
  136. package/types/lighthouse/extract/index.d.ts +0 -1
  137. package/types/lighthouse/extract/score-category-scores.d.ts +0 -10
  138. package/types/lighthouse/filter.d.ts +0 -1
  139. package/types/lighthouse/index.d.ts +0 -6
  140. package/types/lighthouse/metrics.d.ts +0 -65
  141. package/types/lighthouse/selectors.d.ts +0 -1
  142. package/types/polyfills.d.ts +0 -1
  143. package/types/report/add-row-metric-data.d.ts +0 -8
  144. package/types/report/compare-metrics.d.ts +0 -2
  145. package/types/report/create.d.ts +0 -14
  146. package/types/report/get-metric-changed.d.ts +0 -2
  147. package/types/report/index.d.ts +0 -5
  148. package/types/report/merge-metrics-by-key.d.ts +0 -4
  149. package/types/report/types.d.ts +0 -8
  150. package/types/transformers/budgets-insights.d.ts +0 -36
  151. package/types/transformers/index.d.ts +0 -1
  152. package/types/utils/component-links.d.ts +0 -179
  153. package/types/utils/date.d.ts +0 -2
  154. package/types/utils/delta.d.ts +0 -6
  155. package/types/utils/file-types.d.ts +0 -4
  156. package/types/utils/format.d.ts +0 -5
  157. package/types/utils/index.d.ts +0 -6
  158. package/types/utils/metrics.d.ts +0 -3
  159. package/types/webpack/compare.d.ts +0 -14
  160. package/types/webpack/constants.d.ts +0 -31
  161. package/types/webpack/extract/assets-cache-invalidation.d.ts +0 -7
  162. package/types/webpack/extract/assets-chunk-count.d.ts +0 -7
  163. package/types/webpack/extract/assets-count.d.ts +0 -7
  164. package/types/webpack/extract/assets-size-total-insight.d.ts +0 -12
  165. package/types/webpack/extract/assets-size.d.ts +0 -11
  166. package/types/webpack/extract/assets.d.ts +0 -8
  167. package/types/webpack/extract/budgets-insights.d.ts +0 -22
  168. package/types/webpack/extract/index.d.ts +0 -1
  169. package/types/webpack/extract/meta.d.ts +0 -6
  170. package/types/webpack/extract/modules-count.d.ts +0 -7
  171. package/types/webpack/extract/modules-packages-count.d.ts +0 -7
  172. package/types/webpack/extract/modules-packages-duplicate.d.ts +0 -21
  173. package/types/webpack/extract/modules-packages.d.ts +0 -7
  174. package/types/webpack/extract/modules.d.ts +0 -2
  175. package/types/webpack/index.d.ts +0 -8
  176. package/types/webpack/metrics.d.ts +0 -102
  177. package/types/webpack/selectors.d.ts +0 -41
  178. package/types/webpack/utils.d.ts +0 -8
@@ -0,0 +1,91 @@
1
+ export const SECTION_WEBPACK_STATS = 'stats';
2
+ export const SECTION_WEBPACK_SIZES = 'sizes';
3
+ export const SECTION_WEBPACK_ASSETS = 'assets';
4
+ export const SECTION_WEBPACK_MODULES = 'modules';
5
+ export const SECTION_WEBPACK_PACKAGES = 'packages';
6
+
7
+ export const SECTIONS = [
8
+ SECTION_WEBPACK_STATS,
9
+ SECTION_WEBPACK_SIZES,
10
+ SECTION_WEBPACK_ASSETS,
11
+ SECTION_WEBPACK_MODULES,
12
+ SECTION_WEBPACK_PACKAGES,
13
+ ];
14
+
15
+ export const SUMMARY_METRIC_PATHS = [
16
+ 'totalSizeByTypeALL',
17
+ 'totalInitialSizeJS',
18
+ 'totalInitialSizeCSS',
19
+ 'cacheInvalidation',
20
+ 'moduleCount',
21
+ 'duplicateModulesCount',
22
+ 'duplicateCode',
23
+ 'chunkCount',
24
+ 'assetCount',
25
+ 'packageCount',
26
+ 'duplicatePackagesCount',
27
+ ];
28
+
29
+ const PACKAGE_PREFIX = /(?:node_modules|~)(?:\/\.pnpm)?/;
30
+ const PACKAGE_SLUG = /[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*/;
31
+ const VERSION = /@[\w|\-|_|.]+/;
32
+
33
+ // Extract package paths from module path
34
+ // https://regex101.com/r/22Leep/6
35
+ /* eslint-disable prettier/prettier */
36
+ export const MODULE_PATH_PACKAGES = new RegExp(
37
+ [
38
+ // match dependency directory (eg: `node_modules/`, `node_modules/.pnpm/`)
39
+ `(?:${PACKAGE_PREFIX.source}/)`,
40
+ // match package name
41
+ '(?:',
42
+ // match `@organization/` or `@organization+`(pnpm)
43
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
44
+ // match github.com+organization+
45
+ `(?:${PACKAGE_SLUG.source}\\+)*`,
46
+ // match package name
47
+ `(?:${PACKAGE_SLUG.source})`,
48
+ // match version
49
+ `(?:${VERSION.source})?`,
50
+ ')',
51
+
52
+ // Match pnpm peer dependencies (eg: package-a@version_package-b@version)
53
+ '(?:_',
54
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
55
+ `(?:${PACKAGE_SLUG.source})`,
56
+ `(?:@${PACKAGE_SLUG.source})?`,
57
+ ')*',
58
+ '/',
59
+ ].join(''),
60
+ 'g',
61
+ );
62
+ /* eslint-enable prettier/prettier */
63
+
64
+ // Extract package name from package path
65
+ // https://regex101.com/r/tTlU0W/6
66
+ /* eslint-disable prettier/prettier */
67
+ export const PACKAGE_PATH_NAME = new RegExp(
68
+ [
69
+ `(?:${PACKAGE_PREFIX.source}/)`,
70
+ // match dependency
71
+ '(?:',
72
+ '(',
73
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
74
+ `(?:(?:${PACKAGE_SLUG.source}\\+)*)`,
75
+ `(?:${PACKAGE_SLUG.source})`,
76
+ ')',
77
+ `(?:${VERSION.source})?`,
78
+ ')',
79
+ // match peer dependency
80
+ '(?:_',
81
+ '(',
82
+ `(?:@${PACKAGE_SLUG.source}[/|+])?`,
83
+ `(?:${PACKAGE_SLUG.source})`,
84
+ ')',
85
+ `(?:@${PACKAGE_SLUG.source})`,
86
+ ')*',
87
+ '/',
88
+ ].join(''),
89
+ 'g',
90
+ );
91
+ /* eslint-enable prettier/prettier */
@@ -4,21 +4,21 @@ import template from 'lodash/template';
4
4
  import { INSIGHT_INFO } from '../../config/insights';
5
5
  import { getMetricRunInfo } from '../../utils/metrics';
6
6
  import { getMetricType } from '../utils';
7
- import { MetricId } from '../constants';
8
7
 
9
8
  const INFO_TEMPLATE = template(
10
9
  '<%= metric %> — <%= displayValue %> (<%= displayDeltaPercentage %>).',
11
10
  );
11
+ const METRIC_NAME = 'totalSizeByTypeALL';
12
12
 
13
13
  export const extractAssetsSizeTotalInsight = (
14
14
  webpackStats,
15
15
  currentExtractedData,
16
16
  baselineBundleStats,
17
17
  ) => {
18
- const currentValue = get(currentExtractedData, ['metrics', MetricId.BundleSize, 'value'], 0);
19
- const baselineValue = get(baselineBundleStats, ['metrics', 'webpack', MetricId.BundleSize, 'value'], 0);
18
+ const currentValue = get(currentExtractedData, ['metrics', METRIC_NAME, 'value'], 0);
19
+ const baselineValue = get(baselineBundleStats, ['metrics', 'webpack', METRIC_NAME, 'value'], 0);
20
20
 
21
- const metric = getMetricType(MetricId.BundleSize);
21
+ const metric = getMetricType(METRIC_NAME);
22
22
  const info = getMetricRunInfo(metric, currentValue, baselineValue);
23
23
  const { displayDeltaPercentage, displayValue } = info;
24
24
 
@@ -4,9 +4,11 @@ import sum from 'lodash/sum';
4
4
 
5
5
  import { FILE_TYPE_CSS, FILE_TYPE_JS, FILE_TYPES } from '../../config/file-types';
6
6
  import { getFileType } from '../../utils/file-types';
7
- import { SIZE_BY_TYPE_METRIC_ID_PREFIX, SIZE_BY_TYPE_METRIC_ID_ALL } from '../constants';
8
7
 
9
- const getMetricName = (fileType) => `${SIZE_BY_TYPE_METRIC_ID_PREFIX}${fileType}`;
8
+ const METRIC_NAME_ALL = 'ALL';
9
+ const METRIC_NAME_PREFIX = 'totalSizeByType';
10
+
11
+ const getMetricName = (fileType) => `${METRIC_NAME_PREFIX}${fileType}`;
10
12
 
11
13
  const generateInitialSizeByType = () => FILE_TYPES.reduce((accumulator, fileType) => ({
12
14
  ...accumulator,
@@ -50,7 +52,7 @@ export const extractAssetsSize = (webpackStats, currentExtractedData) => {
50
52
 
51
53
  const sizes = calculateTotalByType(bundleAssets);
52
54
  const generic = {
53
- [getMetricName(SIZE_BY_TYPE_METRIC_ID_ALL)]: {
55
+ [getMetricName(METRIC_NAME_ALL)]: {
54
56
  value: sum(map(bundleAssets, 'value')),
55
57
  },
56
58
  ...calculateInitialTotals(bundleAssets),
@@ -1,6 +1,5 @@
1
1
  import merge from 'lodash/merge';
2
2
 
3
- import * as budgetsInsights from '../../transformers/budgets-insights';
4
3
  import { extractAssets } from './assets';
5
4
  import { extractAssetsCacheInvalidation } from './assets-cache-invalidation';
6
5
  import { extractAssetsChunkCount } from './assets-chunk-count';
@@ -27,11 +26,10 @@ const extractFns = [
27
26
  extractModulesPackages,
28
27
  extractModulesPackagesCount,
29
28
  extractModulesPackagesDuplicate,
30
- budgetsInsights.getExtract('webpack'),
31
29
  ];
32
30
 
33
- export const extract = (webpackStats, baseline, options) =>
34
- extractFns.reduce(
35
- (agg, extractFn) => merge({}, agg, extractFn(webpackStats, agg, baseline, options)),
36
- {},
37
- );
31
+ export const extract = (webpackStats, baseline) => extractFns.reduce((agg, extractFn) => merge(
32
+ {},
33
+ agg,
34
+ extractFn(webpackStats, agg, baseline),
35
+ ), {});
@@ -3,7 +3,7 @@ import map from 'lodash/map';
3
3
  import orderBy from 'lodash/orderBy';
4
4
  import sum from 'lodash/sum';
5
5
 
6
- import { InsightType } from '../../constants';
6
+ import { INSIGHT_WARNING } from '../../config';
7
7
 
8
8
  export const extractModulesPackagesDuplicate = (webpackStats, currentExtractedData) => {
9
9
  const source = get(currentExtractedData, 'metrics.packages', {});
@@ -89,7 +89,7 @@ export const extractModulesPackagesDuplicate = (webpackStats, currentExtractedDa
89
89
  return {
90
90
  insights: {
91
91
  duplicatePackages: {
92
- type: InsightType.WARNING,
92
+ type: INSIGHT_WARNING,
93
93
  data,
94
94
  },
95
95
  },
@@ -1,4 +1,5 @@
1
1
  import isEmpty from 'lodash/isEmpty';
2
+ import round from 'lodash/round';
2
3
 
3
4
  import { ModuleMetric, WebpackMetricsModules } from '../../constants';
4
5
  import { getModuleName, normalizeChunkId } from '../utils';
@@ -10,7 +11,7 @@ interface WebpackModule {
10
11
  }
11
12
 
12
13
  interface WebpackModuleWithConcatenatedModules extends WebpackModule {
13
- modules?: Array<Pick<WebpackModule, 'name' | 'size'>>;
14
+ modules: Array<Pick<WebpackModule, 'name' | 'size'>>;
14
15
  }
15
16
 
16
17
  /*
@@ -20,7 +21,13 @@ export const extractModules = (webpackStats?: any): WebpackMetricsModules => {
20
21
  const modulesSource: Array<WebpackModuleWithConcatenatedModules> = webpackStats?.modules || [];
21
22
 
22
23
  if (!modulesSource) {
23
- return { metrics: { modules: {} } };
24
+ return {
25
+ metrics: {
26
+ duplicateCode: { value: 0 },
27
+ duplicateModulesCount: { value: 0 },
28
+ modules: {},
29
+ },
30
+ };
24
31
  }
25
32
 
26
33
  // Flatten concatenated modules
@@ -43,25 +50,49 @@ export const extractModules = (webpackStats?: any): WebpackMetricsModules => {
43
50
  return agg;
44
51
  }, [] as Array<WebpackModule>);
45
52
 
53
+ let totalCodeSize = 0;
54
+ let duplicateCodeSize = 0;
55
+ let duplicateModulesCount = 0;
56
+
46
57
  // Normalize module entries
47
58
  const modules = allModules.reduce((agg, moduleEntry) => {
48
59
  const { name, size, chunks } = moduleEntry;
49
60
  const normalizedName = getModuleName(name);
50
61
 
51
- // skip modules with no chunks
62
+ // skip modules that do not belong to any chunk
52
63
  if (isEmpty(chunks)) {
53
64
  return agg;
54
65
  }
55
66
 
67
+ const instances = chunks.length;
68
+ const duplicateInstances = instances - 1;
69
+
70
+ duplicateModulesCount += duplicateInstances;
71
+ duplicateCodeSize += duplicateInstances * size;
72
+ totalCodeSize += instances * size;
73
+
56
74
  // eslint-disable-next-line no-param-reassign
57
75
  agg[normalizedName] = {
58
76
  name,
59
77
  value: size,
60
78
  chunkIds: chunks.map(normalizeChunkId),
79
+ duplicated: Boolean(duplicateInstances),
61
80
  };
62
81
 
63
82
  return agg;
64
83
  }, {} as Record<string, ModuleMetric>);
65
84
 
66
- return { metrics: { modules } };
85
+ const duplicateCode = totalCodeSize ? round((duplicateCodeSize / totalCodeSize) * 100, 2) : 0;
86
+
87
+ return {
88
+ metrics: {
89
+ modules,
90
+ duplicateCode: {
91
+ value: duplicateCode,
92
+ },
93
+ duplicateModulesCount: {
94
+ value: duplicateModulesCount,
95
+ },
96
+ },
97
+ };
67
98
  };
@@ -3,66 +3,76 @@ import {
3
3
  METRIC_TYPE_NUMERIC,
4
4
  METRIC_TYPE_PERCENTAGE,
5
5
  } from '../config/metrics';
6
- import { MetricId, SizeByTypeMetricId } from './constants';
7
6
 
8
7
  export const metrics = {
9
- [MetricId.BundleSize]: {
8
+ totalSizeByTypeALL: {
10
9
  label: 'Bundle Size',
11
10
  description: 'Sum of all assets emitted by webpack.',
12
11
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
13
12
  type: METRIC_TYPE_FILE_SIZE,
14
- biggerIsBetter: false,
15
13
  },
16
- [MetricId.TotalInitialSizeJS]: {
14
+ totalInitialSizeJS: {
17
15
  label: 'Initial JS',
18
16
  description: 'Sum of all JavaScript assets that are labeled as initial(eg: vendor.js, app.js).',
19
17
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
20
18
  type: METRIC_TYPE_FILE_SIZE,
21
- biggerIsBetter: false,
22
19
  },
23
- [MetricId.TotalInitialSizeCSS]: {
20
+ totalInitialSizeCSS: {
24
21
  label: 'Initial CSS',
25
22
  description: 'Sum of all CSS assets that are labeled as initial(eg: vendor.css, app.css).',
26
23
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
27
24
  type: METRIC_TYPE_FILE_SIZE,
28
- biggerIsBetter: false,
29
25
  },
30
- [MetricId.CacheInvalidation]: {
26
+ cacheInvalidation: {
31
27
  label: 'Cache Invalidation',
32
28
  description: 'Ratio between the total changed assets and Bundle Size.',
33
29
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
34
30
  type: METRIC_TYPE_PERCENTAGE,
35
31
  biggerIsBetter: false,
36
32
  },
37
- [MetricId.ChunkCount]: {
33
+ chunkCount: {
38
34
  label: 'Chunks',
39
35
  description: 'Total number of chunks generated by webpack.',
40
36
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
41
37
  type: METRIC_TYPE_NUMERIC,
42
38
  biggerIsBetter: false,
43
39
  },
44
- [MetricId.AssetCount]: {
40
+ assetCount: {
45
41
  label: 'Assets',
46
42
  description: 'Total number of assets emitted by webpack.',
47
43
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
48
44
  type: METRIC_TYPE_NUMERIC,
49
45
  biggerIsBetter: false,
50
46
  },
51
- [MetricId.ModuleName]: {
47
+ moduleCount: {
52
48
  label: 'Modules',
53
49
  description: 'Total number of modules bundled by webpack.',
54
50
  url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
55
51
  type: METRIC_TYPE_NUMERIC,
56
52
  biggerIsBetter: false,
57
53
  },
58
- [MetricId.PackageCount]: {
54
+ duplicateModulesCount: {
55
+ label: 'Duplicate Modules',
56
+ description: 'Total number of modules that belong to more than one chunk.',
57
+ url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
58
+ type: METRIC_TYPE_NUMERIC,
59
+ biggerIsBetter: false,
60
+ },
61
+ duplicateCode: {
62
+ label: 'Duplicate Code',
63
+ description: 'The percentage of duplicate module total size',
64
+ url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
65
+ type: METRIC_TYPE_PERCENTAGE,
66
+ biggerIsBetter: false,
67
+ },
68
+ packageCount: {
59
69
  label: 'Packages',
60
70
  description: 'Total number of packages bundled by webpack.',
61
71
  url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
62
72
  type: METRIC_TYPE_NUMERIC,
63
73
  biggerIsBetter: false,
64
74
  },
65
- [MetricId.DuplicatePackagesCount]: {
75
+ duplicatePackagesCount: {
66
76
  label: 'Duplicate Packages',
67
77
  description: 'Total number of packages that are duplicated.',
68
78
  url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
@@ -70,40 +80,33 @@ export const metrics = {
70
80
  biggerIsBetter: false,
71
81
  },
72
82
  sizes: {
73
- [SizeByTypeMetricId.JS]: {
83
+ totalSizeByTypeJS: {
74
84
  label: 'JS',
75
85
  type: METRIC_TYPE_FILE_SIZE,
76
- biggerIsBetter: false,
77
86
  },
78
- [SizeByTypeMetricId.CSS]: {
87
+ totalSizeByTypeCSS: {
79
88
  label: 'CSS',
80
89
  type: METRIC_TYPE_FILE_SIZE,
81
- biggerIsBetter: false,
82
90
  },
83
- [SizeByTypeMetricId.IMG]: {
91
+ totalSizeByTypeIMG: {
84
92
  label: 'IMG',
85
93
  type: METRIC_TYPE_FILE_SIZE,
86
- biggerIsBetter: false,
87
94
  },
88
- [SizeByTypeMetricId.Media]: {
95
+ totalSizeByTypeMEDIA: {
89
96
  label: 'Media',
90
97
  type: METRIC_TYPE_FILE_SIZE,
91
- biggerIsBetter: false,
92
98
  },
93
- [SizeByTypeMetricId.Font]: {
99
+ totalSizeByTypeFONT: {
94
100
  label: 'Fonts',
95
101
  type: METRIC_TYPE_FILE_SIZE,
96
- biggerIsBetter: false,
97
102
  },
98
- [SizeByTypeMetricId.HTML]: {
103
+ totalSizeByTypeHTML: {
99
104
  label: 'HTML',
100
105
  type: METRIC_TYPE_FILE_SIZE,
101
- biggerIsBetter: false,
102
106
  },
103
- [SizeByTypeMetricId.Other]: {
107
+ totalSizeByTypeOTHER: {
104
108
  label: 'Other',
105
109
  type: METRIC_TYPE_FILE_SIZE,
106
- biggerIsBetter: false,
107
110
  },
108
111
  },
109
112
  };
@@ -1,85 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getInfo = exports.INFO_MESSAGE_TEMPLATE = exports.getExtract = void 0;
7
- const get_1 = __importDefault(require("lodash/get"));
8
- const constants_1 = require("../constants");
9
- const utils_1 = require("../utils");
10
- const getExtract = (source) => (_, currentExtractedData, __, options = {}) => {
11
- const { budgets: budgetsOptions } = options;
12
- if (!budgetsOptions) {
13
- return null;
14
- }
15
- const insights = [];
16
- budgetsOptions.forEach((budgetOption) => {
17
- const { metric: budgetMetricId, value: budgetValue } = budgetOption;
18
- const currentValue = (0, get_1.default)(currentExtractedData, `metrics.${budgetMetricId}.value`);
19
- const metric = (0, utils_1.getGlobalMetricType)(`${source}.${budgetMetricId}`);
20
- if (!currentValue) {
21
- return;
22
- }
23
- const isValueOverBudget = currentValue > budgetValue;
24
- const budgetInsight = {
25
- currentValue,
26
- budgetValue,
27
- failed: metric.biggerIsBetter ? !isValueOverBudget : isValueOverBudget,
28
- };
29
- insights.push([budgetMetricId, budgetInsight]);
30
- });
31
- if (insights.length === 0) {
32
- return null;
33
- }
34
- return {
35
- insights: {
36
- budgets: Object.fromEntries(insights),
37
- },
38
- };
39
- };
40
- exports.getExtract = getExtract;
41
- const resolveDiffLabel = (budgetInsight) => {
42
- const { currentValue, budgetValue } = budgetInsight;
43
- if (currentValue > budgetValue) {
44
- return 'over';
45
- }
46
- if (currentValue < budgetValue) {
47
- return 'under';
48
- }
49
- return 'equal with';
50
- };
51
- const resolveType = (budgetInsight) => {
52
- if (budgetInsight.failed) {
53
- return constants_1.InsightType.ERROR;
54
- }
55
- if (budgetInsight.currentValue === budgetInsight.budgetValue) {
56
- return constants_1.InsightType.WARNING;
57
- }
58
- return constants_1.InsightType.SUCCESS;
59
- };
60
- exports.INFO_MESSAGE_TEMPLATE = '<%= metricLabel %> value \(<%= currentValue %>\) is <%= diffLabel %> <%= budgetValue %> budget';
61
- const getInfo = (globalMetricId, budgetInsight) => {
62
- const metric = (0, utils_1.getGlobalMetricType)(globalMetricId);
63
- const diffLabel = resolveDiffLabel(budgetInsight);
64
- const type = resolveType(budgetInsight);
65
- const currentValue = metric.formatter(budgetInsight.currentValue);
66
- const budgetValue = metric.formatter(budgetInsight.budgetValue);
67
- return {
68
- type,
69
- message: {
70
- template: exports.INFO_MESSAGE_TEMPLATE,
71
- data: {
72
- metricLabel: metric.label,
73
- diffLabel,
74
- currentValue,
75
- budgetValue,
76
- },
77
- },
78
- source: {
79
- metricId: globalMetricId,
80
- budgetInsight,
81
- },
82
- };
83
- };
84
- exports.getInfo = getInfo;
85
- //# sourceMappingURL=budgets-insights.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"budgets-insights.js","sourceRoot":"","sources":["../../src/transformers/budgets-insights.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.budgetInsights = void 0;
23
- exports.budgetInsights = __importStar(require("./budgets-insights"));
24
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAqD"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const get_1 = __importDefault(require("lodash/get"));
7
- const utils_1 = require("../utils");
8
- function extractBudgetsInsights(_, currentExtractedData, __, options = {}) {
9
- const { budgets: budgetsOptions } = options;
10
- if (!budgetsOptions) {
11
- return null;
12
- }
13
- const insights = [];
14
- budgetsOptions.forEach((budgetOption) => {
15
- const { metric: budgetMetricId, value: budgetValue } = budgetOption;
16
- const currentValue = (0, get_1.default)(currentExtractedData, `metrics.${budgetMetricId}.value`);
17
- const metric = (0, utils_1.getMetricType)(budgetMetricId);
18
- if (!currentValue) {
19
- return;
20
- }
21
- const isValueOverBudget = currentValue > budgetValue;
22
- const budgetInsight = {
23
- currentValue,
24
- budgetValue,
25
- failed: metric.biggerIsBetter ? !isValueOverBudget : isValueOverBudget,
26
- };
27
- insights.push([budgetMetricId, budgetInsight]);
28
- });
29
- if (insights.length === 0) {
30
- return null;
31
- }
32
- return {
33
- insights: {
34
- budgets: Object.fromEntries(insights),
35
- },
36
- };
37
- }
38
- exports.default = extractBudgetsInsights;
39
- //# sourceMappingURL=budgets-insights.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"budgets-insights.js","sourceRoot":"","sources":["../../../src/webpack/extract/budgets-insights.ts"],"names":[],"mappings":";;;;;AAAA,qDAA6B;AAE7B,oCAAyC;AA2BzC,SAAwB,sBAAsB,CAC5C,CAAU,EACV,oBAAyB,EACzB,EAAW,EACX,UAAmB,EAAE;IAErB,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAE5C,IAAI,CAAC,cAAc,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,QAAQ,GAAmC,EAAE,CAAC;IAEpD,cAAc,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QACtC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;QACpE,MAAM,YAAY,GAAG,IAAA,aAAG,EAAC,oBAAoB,EAAE,WAAW,cAAc,QAAQ,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,IAAA,qBAAa,EAAC,cAAc,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;SACR;QAED,MAAM,iBAAiB,GAAG,YAAY,GAAG,WAAW,CAAC;QAErD,MAAM,aAAa,GAAG;YACpB,YAAY;YACZ,WAAW;YACX,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB;SACvE,CAAC;QAEF,QAAQ,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAED,OAAO;QACL,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;SACtC;KACF,CAAC;AACJ,CAAC;AA3CD,yCA2CC"}
@@ -1,77 +0,0 @@
1
- import get from 'lodash/get';
2
- import { InsightType } from '../constants';
3
- import { getGlobalMetricType } from '../utils';
4
- export const getExtract = (source) => (_, currentExtractedData, __, options = {}) => {
5
- const { budgets: budgetsOptions } = options;
6
- if (!budgetsOptions) {
7
- return null;
8
- }
9
- const insights = [];
10
- budgetsOptions.forEach((budgetOption) => {
11
- const { metric: budgetMetricId, value: budgetValue } = budgetOption;
12
- const currentValue = get(currentExtractedData, `metrics.${budgetMetricId}.value`);
13
- const metric = getGlobalMetricType(`${source}.${budgetMetricId}`);
14
- if (!currentValue) {
15
- return;
16
- }
17
- const isValueOverBudget = currentValue > budgetValue;
18
- const budgetInsight = {
19
- currentValue,
20
- budgetValue,
21
- failed: metric.biggerIsBetter ? !isValueOverBudget : isValueOverBudget,
22
- };
23
- insights.push([budgetMetricId, budgetInsight]);
24
- });
25
- if (insights.length === 0) {
26
- return null;
27
- }
28
- return {
29
- insights: {
30
- budgets: Object.fromEntries(insights),
31
- },
32
- };
33
- };
34
- const resolveDiffLabel = (budgetInsight) => {
35
- const { currentValue, budgetValue } = budgetInsight;
36
- if (currentValue > budgetValue) {
37
- return 'over';
38
- }
39
- if (currentValue < budgetValue) {
40
- return 'under';
41
- }
42
- return 'equal with';
43
- };
44
- const resolveType = (budgetInsight) => {
45
- if (budgetInsight.failed) {
46
- return InsightType.ERROR;
47
- }
48
- if (budgetInsight.currentValue === budgetInsight.budgetValue) {
49
- return InsightType.WARNING;
50
- }
51
- return InsightType.SUCCESS;
52
- };
53
- export const INFO_MESSAGE_TEMPLATE = '<%= metricLabel %> value \(<%= currentValue %>\) is <%= diffLabel %> <%= budgetValue %> budget';
54
- export const getInfo = (globalMetricId, budgetInsight) => {
55
- const metric = getGlobalMetricType(globalMetricId);
56
- const diffLabel = resolveDiffLabel(budgetInsight);
57
- const type = resolveType(budgetInsight);
58
- const currentValue = metric.formatter(budgetInsight.currentValue);
59
- const budgetValue = metric.formatter(budgetInsight.budgetValue);
60
- return {
61
- type,
62
- message: {
63
- template: INFO_MESSAGE_TEMPLATE,
64
- data: {
65
- metricLabel: metric.label,
66
- diffLabel,
67
- currentValue,
68
- budgetValue,
69
- },
70
- },
71
- source: {
72
- metricId: globalMetricId,
73
- budgetInsight,
74
- },
75
- };
76
- };
77
- //# sourceMappingURL=budgets-insights.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"budgets-insights.js","sourceRoot":"","sources":["../../src/transformers/budgets-insights.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import * as budgetInsights_1 from './budgets-insights';
2
- export { budgetInsights_1 as budgetInsights };
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":"kCAAgC,oBAAoB;6BAAxC,cAAc"}