@bundle-stats/utils 3.3.0-alpha.0 → 3.3.0

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 (99) hide show
  1. package/CHANGELOG.md +40 -6
  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/i18n.js +2 -1
  11. package/lib/i18n.js.map +1 -1
  12. package/lib/index.js +5 -1
  13. package/lib/index.js.map +1 -1
  14. package/lib/jobs/create-job.js +7 -3
  15. package/lib/jobs/create-job.js.map +1 -1
  16. package/lib/jobs/create-jobs.js +2 -2
  17. package/lib/jobs/create-jobs.js.map +1 -1
  18. package/lib/jobs/index.js +5 -1
  19. package/lib/jobs/index.js.map +1 -1
  20. package/lib/lighthouse/index.js +5 -1
  21. package/lib/lighthouse/index.js.map +1 -1
  22. package/lib/report/create.js +5 -1
  23. package/lib/report/create.js.map +1 -1
  24. package/lib/report/index.js +5 -1
  25. package/lib/report/index.js.map +1 -1
  26. package/lib/utils/component-links.js +15 -1
  27. package/lib/utils/component-links.js.map +1 -1
  28. package/lib/utils/format.js +5 -1
  29. package/lib/utils/format.js.map +1 -1
  30. package/lib/utils/index.js +5 -1
  31. package/lib/utils/index.js.map +1 -1
  32. package/lib/webpack/constants.js +14 -26
  33. package/lib/webpack/constants.js.map +1 -1
  34. package/lib/webpack/extract/assets-size-total-insight.js +4 -4
  35. package/lib/webpack/extract/assets-size-total-insight.js.map +1 -1
  36. package/lib/webpack/extract/assets-size.js +4 -3
  37. package/lib/webpack/extract/assets-size.js.map +1 -1
  38. package/lib/webpack/extract/index.js +1 -3
  39. package/lib/webpack/extract/index.js.map +1 -1
  40. package/lib/webpack/extract/modules.js +29 -2
  41. package/lib/webpack/extract/modules.js.map +1 -1
  42. package/lib/webpack/index.js +5 -1
  43. package/lib/webpack/index.js.map +1 -1
  44. package/lib/webpack/metrics.js +30 -27
  45. package/lib/webpack/metrics.js.map +1 -1
  46. package/lib-esm/config/component-links.js +1 -0
  47. package/lib-esm/config/component-links.js.map +1 -1
  48. package/lib-esm/config/file-types.js +3 -3
  49. package/lib-esm/config/file-types.js.map +1 -1
  50. package/lib-esm/i18n.js +2 -1
  51. package/lib-esm/i18n.js.map +1 -1
  52. package/lib-esm/jobs/create-job.js +2 -2
  53. package/lib-esm/jobs/create-job.js.map +1 -1
  54. package/lib-esm/jobs/create-jobs.js +2 -2
  55. package/lib-esm/jobs/create-jobs.js.map +1 -1
  56. package/lib-esm/utils/component-links.js +14 -0
  57. package/lib-esm/utils/component-links.js.map +1 -1
  58. package/lib-esm/webpack/constants.js +13 -25
  59. package/lib-esm/webpack/constants.js.map +1 -1
  60. package/lib-esm/webpack/extract/assets-size-total-insight.js +4 -4
  61. package/lib-esm/webpack/extract/assets-size-total-insight.js.map +1 -1
  62. package/lib-esm/webpack/extract/assets-size.js +4 -3
  63. package/lib-esm/webpack/extract/assets-size.js.map +1 -1
  64. package/lib-esm/webpack/extract/index.js +1 -3
  65. package/lib-esm/webpack/extract/index.js.map +1 -1
  66. package/lib-esm/webpack/extract/modules.js +29 -2
  67. package/lib-esm/webpack/extract/modules.js.map +1 -1
  68. package/lib-esm/webpack/metrics.js +30 -27
  69. package/lib-esm/webpack/metrics.js.map +1 -1
  70. package/package.json +16 -16
  71. package/src/config/component-links.js +1 -0
  72. package/src/config/file-types.js +3 -3
  73. package/src/constants.ts +3 -0
  74. package/src/i18n.js +2 -1
  75. package/src/jobs/create-job.js +2 -2
  76. package/src/jobs/create-jobs.js +2 -2
  77. package/src/utils/component-links.js +23 -7
  78. package/src/webpack/constants.js +91 -0
  79. package/src/webpack/extract/assets-size-total-insight.js +4 -4
  80. package/src/webpack/extract/assets-size.js +5 -3
  81. package/src/webpack/extract/index.js +5 -10
  82. package/src/webpack/extract/modules.ts +35 -4
  83. package/src/webpack/{metrics.ts → metrics.js} +30 -27
  84. package/types/config/component-links.d.ts +1 -0
  85. package/types/constants.d.ts +3 -0
  86. package/types/i18n.d.ts +1 -0
  87. package/types/jobs/create-job.d.ts +1 -1
  88. package/types/jobs/create-jobs.d.ts +1 -1
  89. package/types/utils/component-links.d.ts +26 -12
  90. package/types/webpack/constants.d.ts +9 -31
  91. package/types/webpack/extract/index.d.ts +1 -1
  92. package/types/webpack/metrics.d.ts +153 -102
  93. package/lib/webpack/extract/budgets-insights.js +0 -39
  94. package/lib/webpack/extract/budgets-insights.js.map +0 -1
  95. package/lib-esm/webpack/extract/budgets-insights.js +0 -33
  96. package/lib-esm/webpack/extract/budgets-insights.js.map +0 -1
  97. package/src/webpack/constants.ts +0 -96
  98. package/src/webpack/extract/budgets-insights.ts +0 -73
  99. package/types/webpack/extract/budgets-insights.d.ts +0 -22
@@ -1,96 +0,0 @@
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 enum MetricId {
16
- BundleSize = 'totalSizeByTypeALL',
17
- TotalInitialSizeJS = 'totalInitialSizeJS',
18
- TotalInitialSizeCSS = 'totalInitialSizeCSS',
19
- CacheInvalidation = 'cacheInvalidation',
20
- ModuleName = 'moduleCount',
21
- ChunkCount = 'chunkCount',
22
- AssetCount = 'assetCount',
23
- PackageCount = 'packageCount',
24
- DuplicatePackagesCount = 'duplicatePackagesCount',
25
- }
26
-
27
- export const SIZE_BY_TYPE_METRIC_ID_ALL = 'ALL';
28
- export const SIZE_BY_TYPE_METRIC_ID_PREFIX = 'totalSizeByType';
29
-
30
- export enum SizeByTypeMetricId {
31
- JS = 'totalSizeByTypeJS',
32
- CSS = 'totalSizeByTypeCSS',
33
- IMG = 'totalSizeByTypeIMG',
34
- Media = 'totalSizeByTypeMEDIA',
35
- Font = 'totalSizeByTypeFONT',
36
- HTML = 'totalSizeByTypeHTML',
37
- Other = 'totalSizeByTypeOTHER',
38
- }
39
-
40
- export const SUMMARY_METRIC_PATHS = Object.values(MetricId);
41
-
42
- const PACKAGE_PREFIX = /(?:node_modules|~)(?:\/\.pnpm)?/;
43
- const PACKAGE_SLUG = /[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*/;
44
- const VERSION = /@[\w|\-|_|.]+/;
45
-
46
- // Extract package paths from module path
47
- // https://regex101.com/r/22Leep/6
48
- /* eslint-disable prettier/prettier, @typescript-eslint/indent */
49
- export const MODULE_PATH_PACKAGES = new RegExp([
50
- // match dependency directory (eg: `node_modules/`, `node_modules/.pnpm/`)
51
- `(?:${PACKAGE_PREFIX.source}/)`,
52
- // match package name
53
- '(?:',
54
- // match `@organization/` or `@organization+`(pnpm)
55
- `(?:@${PACKAGE_SLUG.source}[/|+])?`,
56
- // match github.com+organization+
57
- `(?:${PACKAGE_SLUG.source}\\+)*`,
58
- // match package name
59
- `(?:${PACKAGE_SLUG.source})`,
60
- // match version
61
- `(?:${VERSION.source})?`,
62
- ')',
63
-
64
- // Match pnpm peer dependencies (eg: package-a@version_package-b@version)
65
- '(?:_',
66
- `(?:@${PACKAGE_SLUG.source}[/|+])?`,
67
- `(?:${PACKAGE_SLUG.source})`,
68
- `(?:@${PACKAGE_SLUG.source})?`,
69
- ')*',
70
- '/',
71
- ].join(''), 'g');
72
-
73
- // Extract package name from package path
74
- // https://regex101.com/r/tTlU0W/6
75
- export const PACKAGE_PATH_NAME = new RegExp([
76
- `(?:${PACKAGE_PREFIX.source}/)`,
77
- // match dependency
78
- '(?:',
79
- '(',
80
- `(?:@${PACKAGE_SLUG.source}[/|+])?`,
81
- `(?:(?:${PACKAGE_SLUG.source}\\+)*)`,
82
- `(?:${PACKAGE_SLUG.source})`,
83
- ')',
84
- `(?:${VERSION.source})?`,
85
- ')',
86
- // match peer dependency
87
- '(?:_',
88
- '(',
89
- `(?:@${PACKAGE_SLUG.source}[/|+])?`,
90
- `(?:${PACKAGE_SLUG.source})`,
91
- ')',
92
- `(?:@${PACKAGE_SLUG.source})`,
93
- ')*',
94
- '/',
95
- ].join(''), 'g');
96
- /* eslint-enable prettier/prettier, @typescript-eslint/indent */
@@ -1,73 +0,0 @@
1
- import get from 'lodash/get';
2
-
3
- import { getMetricType } from '../utils';
4
-
5
- interface OptionBudgetMetric {
6
- metric: string;
7
- value: number;
8
- }
9
-
10
- interface Options {
11
- budgets?: Array<OptionBudgetMetric>;
12
- }
13
-
14
- interface BudgetInsight {
15
- currentValue: number;
16
- budgetValue: number;
17
- failed: boolean;
18
- }
19
-
20
- interface BudgetsInsights {
21
- [metricId: string]: BudgetInsight;
22
- }
23
-
24
- interface ExtractBudgetsInsights {
25
- insights: {
26
- budgets: BudgetsInsights;
27
- };
28
- }
29
-
30
- export default function extractBudgetsInsights(
31
- _: unknown,
32
- currentExtractedData: any,
33
- __: unknown,
34
- options: Options = {}
35
- ): ExtractBudgetsInsights | null {
36
- const { budgets: budgetsOptions } = options;
37
-
38
- if (!budgetsOptions) {
39
- return null;
40
- }
41
-
42
- const insights: Array<[string, BudgetInsight]> = [];
43
-
44
- budgetsOptions.forEach((budgetOption) => {
45
- const { metric: budgetMetricId, value: budgetValue } = budgetOption;
46
- const currentValue = get(currentExtractedData, `metrics.${budgetMetricId}.value`);
47
- const metric = getMetricType(budgetMetricId);
48
-
49
- if (!currentValue) {
50
- return;
51
- }
52
-
53
- const isValueOverBudget = currentValue > budgetValue;
54
-
55
- const budgetInsight = {
56
- currentValue,
57
- budgetValue,
58
- failed: metric.biggerIsBetter ? !isValueOverBudget : isValueOverBudget,
59
- };
60
-
61
- insights.push([budgetMetricId, budgetInsight]);
62
- });
63
-
64
- if (insights.length === 0) {
65
- return null;
66
- }
67
-
68
- return {
69
- insights: {
70
- budgets: Object.fromEntries(insights),
71
- },
72
- };
73
- }
@@ -1,22 +0,0 @@
1
- interface OptionBudgetMetric {
2
- metric: string;
3
- value: number;
4
- }
5
- interface Options {
6
- budgets?: Array<OptionBudgetMetric>;
7
- }
8
- interface BudgetInsight {
9
- currentValue: number;
10
- budgetValue: number;
11
- failed: boolean;
12
- }
13
- interface BudgetsInsights {
14
- [metricId: string]: BudgetInsight;
15
- }
16
- interface ExtractBudgetsInsights {
17
- insights: {
18
- budgets: BudgetsInsights;
19
- };
20
- }
21
- export default function extractBudgetsInsights(_: unknown, currentExtractedData: any, __: unknown, options?: Options): ExtractBudgetsInsights | null;
22
- export {};