@bundle-stats/utils 4.2.0-beta.1 → 4.3.0-beta.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.
- package/lib/config/insights.js +7 -5
- package/lib/config/insights.js.map +1 -1
- package/lib/constants.js +12 -12
- package/lib/constants.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/jobs/create-job.js +21 -10
- package/lib/jobs/create-job.js.map +1 -1
- package/lib/jobs/create-jobs.js +13 -17
- package/lib/jobs/create-jobs.js.map +1 -1
- package/lib/jobs/create-summary.js +10 -11
- package/lib/jobs/create-summary.js.map +1 -1
- package/lib/jobs/index.js.map +1 -1
- package/lib/lighthouse/filter.js.map +1 -1
- package/lib/report/create.js +10 -15
- package/lib/report/create.js.map +1 -1
- package/lib/utils/metrics.js.map +1 -1
- package/lib/webpack/constants.js +12 -11
- package/lib/webpack/constants.js.map +1 -1
- package/lib/webpack/extract/assets-size-total-insight.js +5 -5
- package/lib/webpack/extract/assets-size-total-insight.js.map +1 -1
- package/lib/webpack/extract/assets-size.js +3 -4
- package/lib/webpack/extract/assets-size.js.map +1 -1
- package/lib/webpack/extract/modules-packages-duplicate.js +26 -36
- package/lib/webpack/extract/modules-packages-duplicate.js.map +1 -1
- package/lib/webpack/extract/modules-packages.js.map +1 -1
- package/lib/webpack/extract/modules.js +0 -2
- package/lib/webpack/extract/modules.js.map +1 -1
- package/lib/webpack/metrics.js +27 -25
- package/lib/webpack/metrics.js.map +1 -1
- package/lib/webpack/types.js +24 -0
- package/lib/webpack/types.js.map +1 -1
- package/lib-esm/config/insights.js +6 -4
- package/lib-esm/config/insights.js.map +1 -1
- package/lib-esm/constants.js +12 -12
- package/lib-esm/constants.js.map +1 -1
- package/lib-esm/index.js +1 -0
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/jobs/create-job.js +22 -10
- package/lib-esm/jobs/create-job.js.map +1 -1
- package/lib-esm/jobs/create-jobs.js +13 -14
- package/lib-esm/jobs/create-jobs.js.map +1 -1
- package/lib-esm/jobs/create-summary.js +10 -11
- package/lib-esm/jobs/create-summary.js.map +1 -1
- package/lib-esm/jobs/index.js.map +1 -1
- package/lib-esm/lighthouse/filter.js.map +1 -1
- package/lib-esm/report/create.js +10 -15
- package/lib-esm/report/create.js.map +1 -1
- package/lib-esm/utils/metrics.js.map +1 -1
- package/lib-esm/webpack/constants.js +12 -11
- package/lib-esm/webpack/constants.js.map +1 -1
- package/lib-esm/webpack/extract/assets-size-total-insight.js +6 -6
- package/lib-esm/webpack/extract/assets-size-total-insight.js.map +1 -1
- package/lib-esm/webpack/extract/assets-size.js +3 -4
- package/lib-esm/webpack/extract/assets-size.js.map +1 -1
- package/lib-esm/webpack/extract/modules-packages-duplicate.js +28 -37
- package/lib-esm/webpack/extract/modules-packages-duplicate.js.map +1 -1
- package/lib-esm/webpack/extract/modules-packages.js.map +1 -1
- package/lib-esm/webpack/extract/modules.js +0 -3
- package/lib-esm/webpack/extract/modules.js.map +1 -1
- package/lib-esm/webpack/metrics.js +27 -25
- package/lib-esm/webpack/metrics.js.map +1 -1
- package/lib-esm/webpack/types.js +23 -1
- package/lib-esm/webpack/types.js.map +1 -1
- package/package.json +11 -10
- package/src/config/insights.ts +5 -0
- package/src/constants.ts +38 -15
- package/src/index.js +1 -0
- package/src/jobs/create-job.ts +62 -0
- package/src/jobs/create-jobs.ts +28 -0
- package/src/jobs/create-summary.ts +22 -0
- package/src/jobs/{index.js → index.ts} +0 -0
- package/src/lighthouse/filter.js +8 -5
- package/src/report/create.ts +31 -23
- package/src/utils/metrics.js +8 -7
- package/src/webpack/constants.js +13 -11
- package/src/webpack/extract/assets-size-total-insight.js +6 -7
- package/src/webpack/extract/assets-size.js +29 -24
- package/src/webpack/extract/modules-packages-duplicate.ts +105 -0
- package/src/webpack/extract/modules-packages.ts +1 -1
- package/src/webpack/extract/modules.ts +1 -4
- package/src/webpack/metrics.js +27 -25
- package/src/webpack/types.ts +31 -7
- package/types/config/insights.d.ts +5 -4
- package/types/constants.d.ts +33 -15
- package/types/index.d.ts +1 -0
- package/types/jobs/create-job.d.ts +2 -1
- package/types/jobs/create-jobs.d.ts +2 -1
- package/types/jobs/create-summary.d.ts +4 -1
- package/types/jobs/index.d.ts +2 -2
- package/types/lighthouse/filter.d.ts +1 -1
- package/types/report/add-row-metric-data.d.ts +10 -1
- package/types/report/create.d.ts +14 -12
- package/types/utils/metrics.d.ts +1 -1
- package/types/webpack/constants.d.ts +2 -1
- package/types/webpack/extract/assets-size-total-insight.d.ts +3 -2
- package/types/webpack/extract/modules-packages-duplicate.d.ts +5 -4
- package/types/webpack/extract/modules-packages.d.ts +1 -1
- package/types/webpack/types.d.ts +29 -8
- package/src/config/insights.js +0 -5
- package/src/jobs/create-job.js +0 -46
- package/src/jobs/create-jobs.js +0 -26
- package/src/jobs/create-summary.js +0 -16
- package/src/webpack/extract/modules-packages-duplicate.js +0 -102
|
@@ -1,44 +1,35 @@
|
|
|
1
|
-
import get from 'lodash/get';
|
|
2
1
|
import map from 'lodash/map';
|
|
3
2
|
import orderBy from 'lodash/orderBy';
|
|
4
3
|
import sum from 'lodash/sum';
|
|
5
|
-
import {
|
|
6
|
-
export const extractModulesPackagesDuplicate = (
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
...((existingPackageData === null || existingPackageData === void 0 ? void 0 : existingPackageData.children) || []),
|
|
17
|
-
{
|
|
18
|
-
name: packageId,
|
|
19
|
-
value: packageData.value,
|
|
20
|
-
},
|
|
21
|
-
],
|
|
22
|
-
},
|
|
4
|
+
import { InsightType } from '../../config';
|
|
5
|
+
export const extractModulesPackagesDuplicate = (_, currentExtractedData) => {
|
|
6
|
+
var _a;
|
|
7
|
+
const source = ((_a = currentExtractedData === null || currentExtractedData === void 0 ? void 0 : currentExtractedData.metrics) === null || _a === void 0 ? void 0 : _a.packages) || {};
|
|
8
|
+
const packagesByName = {};
|
|
9
|
+
Object.entries(source).forEach(([packageId, packageData]) => {
|
|
10
|
+
const { name, value } = packageData;
|
|
11
|
+
const existingPackageData = packagesByName[name] || {
|
|
12
|
+
name,
|
|
13
|
+
value,
|
|
14
|
+
children: [],
|
|
23
15
|
};
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
16
|
+
existingPackageData.children.push({ id: packageId, value });
|
|
17
|
+
packagesByName[name] = existingPackageData;
|
|
18
|
+
});
|
|
19
|
+
let count = 0;
|
|
20
|
+
const duplicatePackages = [];
|
|
21
|
+
Object.entries(packagesByName).forEach(([packageGroupName, packageGroupData]) => {
|
|
22
|
+
const duplicateInstances = packageGroupData.children.length - 1;
|
|
27
23
|
if (duplicateInstances === 0) {
|
|
28
|
-
return
|
|
24
|
+
return;
|
|
29
25
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
...data,
|
|
38
|
-
},
|
|
39
|
-
],
|
|
40
|
-
};
|
|
41
|
-
}, { count: 0, duplicatePackages: [] });
|
|
26
|
+
count += duplicateInstances;
|
|
27
|
+
duplicatePackages.push({
|
|
28
|
+
name: packageGroupName,
|
|
29
|
+
value: sum(map(packageGroupData.children, 'value')),
|
|
30
|
+
children: packageGroupData.children,
|
|
31
|
+
});
|
|
32
|
+
});
|
|
42
33
|
if (!count) {
|
|
43
34
|
return {
|
|
44
35
|
metrics: {
|
|
@@ -57,12 +48,12 @@ export const extractModulesPackagesDuplicate = (webpackStats, currentExtractedDa
|
|
|
57
48
|
}), {});
|
|
58
49
|
const data = Object.entries(duplicatePackagesByName).reduce((agg, [packageName, duplicatePackageData]) => ({
|
|
59
50
|
...agg,
|
|
60
|
-
[packageName]: duplicatePackageData.children.map(({
|
|
51
|
+
[packageName]: duplicatePackageData.children.map(({ id }) => id),
|
|
61
52
|
}), {});
|
|
62
53
|
return {
|
|
63
54
|
insights: {
|
|
64
55
|
duplicatePackages: {
|
|
65
|
-
type:
|
|
56
|
+
type: InsightType.WARNING,
|
|
66
57
|
data,
|
|
67
58
|
},
|
|
68
59
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules-packages-duplicate.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-duplicate.
|
|
1
|
+
{"version":3,"file":"modules-packages-duplicate.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-duplicate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules-packages.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,OAAO,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEvE,MAAM,QAAQ,GAAG,CAAC,IAAoB,EAAE,EAAE;IACxC,MAAM,GAAG,GAAmB,EAAE,CAAC;IAE/B,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACzC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,UAAkB,EAAE,EAAE;IACjE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAGrD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAC;KACb;IAID,MAAM,KAAK,GAAG,QAAQ,CACpB,KAAK;SACF,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;QAEnB,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,CAAC;SACX;QAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC;SACD,IAAI,EAAE,CACV,CAAC;IAGF,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"modules-packages.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,6 @@ export const extractModules = (webpackStats) => {
|
|
|
28
28
|
let duplicateCodeSize = 0;
|
|
29
29
|
let duplicateModulesCount = 0;
|
|
30
30
|
const modules = allModules.reduce((agg, moduleEntry) => {
|
|
31
|
-
var _a;
|
|
32
31
|
const { name, size = 0, chunks } = moduleEntry;
|
|
33
32
|
const normalizedName = getModuleName(name);
|
|
34
33
|
if (!chunks || (chunks === null || chunks === void 0 ? void 0 : chunks.length) === 0) {
|
|
@@ -40,13 +39,11 @@ export const extractModules = (webpackStats) => {
|
|
|
40
39
|
duplicateModulesCount += duplicateInstances;
|
|
41
40
|
duplicateCodeSize += duplicateInstances * size;
|
|
42
41
|
totalCodeSize += instances * size;
|
|
43
|
-
const reasons = (_a = moduleEntry.reasons) === null || _a === void 0 ? void 0 : _a.map((reason) => getModuleName(reason.module));
|
|
44
42
|
agg[normalizedName] = {
|
|
45
43
|
name,
|
|
46
44
|
value: size,
|
|
47
45
|
chunkIds: chunks.map(normalizeChunkId),
|
|
48
46
|
duplicated: Boolean(duplicateInstances),
|
|
49
|
-
...(reasons && { reasons }),
|
|
50
47
|
};
|
|
51
48
|
return agg;
|
|
52
49
|
}, {});
|
|
@@ -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
|
|
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,73 +1,75 @@
|
|
|
1
1
|
import { METRIC_TYPE_FILE_SIZE, METRIC_TYPE_NUMERIC, METRIC_TYPE_PERCENTAGE, } from '../config/metrics';
|
|
2
|
+
import { FILE_TYPE_LABELS } from '../config/file-types';
|
|
3
|
+
import { Metric } from './types';
|
|
2
4
|
export const metrics = {
|
|
3
|
-
|
|
5
|
+
[Metric.BUNDLE_SIZE]: {
|
|
4
6
|
label: 'Bundle Size',
|
|
5
7
|
description: 'The total size of the assets produced by webpack',
|
|
6
8
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
7
9
|
type: METRIC_TYPE_FILE_SIZE,
|
|
8
10
|
},
|
|
9
|
-
|
|
11
|
+
[Metric.INITIAL_SIZE_JS]: {
|
|
10
12
|
label: 'Initial JS',
|
|
11
13
|
description: 'The total size of JavaScript initial chunks',
|
|
12
14
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
13
15
|
type: METRIC_TYPE_FILE_SIZE,
|
|
14
16
|
},
|
|
15
|
-
|
|
17
|
+
[Metric.INITIAL_SIZE_CSS]: {
|
|
16
18
|
label: 'Initial CSS',
|
|
17
19
|
description: 'The total size of CSS initial chunks',
|
|
18
20
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
19
21
|
type: METRIC_TYPE_FILE_SIZE,
|
|
20
22
|
},
|
|
21
|
-
|
|
23
|
+
[Metric.CACHE_INVALIDATION]: {
|
|
22
24
|
label: 'Cache Invalidation',
|
|
23
25
|
description: 'The ratio between the total changed assets and total assets size(Bundle Size)',
|
|
24
26
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
25
27
|
type: METRIC_TYPE_PERCENTAGE,
|
|
26
28
|
biggerIsBetter: false,
|
|
27
29
|
},
|
|
28
|
-
|
|
30
|
+
[Metric.CHUNK_COUNT]: {
|
|
29
31
|
label: 'Chunks',
|
|
30
32
|
description: 'The total number of chunks',
|
|
31
33
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
32
34
|
type: METRIC_TYPE_NUMERIC,
|
|
33
35
|
biggerIsBetter: false,
|
|
34
36
|
},
|
|
35
|
-
|
|
37
|
+
[Metric.ASSET_COUNT]: {
|
|
36
38
|
label: 'Assets',
|
|
37
39
|
description: 'Total number of assets',
|
|
38
40
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
39
41
|
type: METRIC_TYPE_NUMERIC,
|
|
40
42
|
biggerIsBetter: false,
|
|
41
43
|
},
|
|
42
|
-
|
|
44
|
+
[Metric.MODULE_COUNT]: {
|
|
43
45
|
label: 'Modules',
|
|
44
46
|
description: 'The total number of modules bundled by webpack',
|
|
45
47
|
url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
|
|
46
48
|
type: METRIC_TYPE_NUMERIC,
|
|
47
49
|
biggerIsBetter: false,
|
|
48
50
|
},
|
|
49
|
-
|
|
51
|
+
[Metric.DUPLICATE_MODULES_COUNT]: {
|
|
50
52
|
label: 'Duplicate Modules',
|
|
51
53
|
description: 'The total number of modules that belong to more than one chunk',
|
|
52
54
|
url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
|
|
53
55
|
type: METRIC_TYPE_NUMERIC,
|
|
54
56
|
biggerIsBetter: false,
|
|
55
57
|
},
|
|
56
|
-
|
|
58
|
+
[Metric.DUPLICATE_CODE]: {
|
|
57
59
|
label: 'Duplicate Code',
|
|
58
60
|
description: 'The percentage of total duplicate module size from the total module size',
|
|
59
61
|
url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
|
|
60
62
|
type: METRIC_TYPE_PERCENTAGE,
|
|
61
63
|
biggerIsBetter: false,
|
|
62
64
|
},
|
|
63
|
-
|
|
65
|
+
[Metric.PACKAGE_COUNT]: {
|
|
64
66
|
label: 'Packages',
|
|
65
67
|
description: 'The total number of packages bundled by webpack',
|
|
66
68
|
url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
|
|
67
69
|
type: METRIC_TYPE_NUMERIC,
|
|
68
70
|
biggerIsBetter: false,
|
|
69
71
|
},
|
|
70
|
-
|
|
72
|
+
[Metric.DUPLICATE_PACKAGES_COUNT]: {
|
|
71
73
|
label: 'Duplicate Packages',
|
|
72
74
|
description: 'The total number of duplicate packages',
|
|
73
75
|
url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
|
|
@@ -75,32 +77,32 @@ export const metrics = {
|
|
|
75
77
|
biggerIsBetter: false,
|
|
76
78
|
},
|
|
77
79
|
sizes: {
|
|
78
|
-
|
|
79
|
-
label:
|
|
80
|
+
[Metric.TOTAL_SIZE_JS]: {
|
|
81
|
+
label: FILE_TYPE_LABELS.JS,
|
|
80
82
|
type: METRIC_TYPE_FILE_SIZE,
|
|
81
83
|
},
|
|
82
|
-
|
|
83
|
-
label:
|
|
84
|
+
[Metric.TOTAL_SIZE_CSS]: {
|
|
85
|
+
label: FILE_TYPE_LABELS.CSS,
|
|
84
86
|
type: METRIC_TYPE_FILE_SIZE,
|
|
85
87
|
},
|
|
86
|
-
|
|
87
|
-
label:
|
|
88
|
+
[Metric.TOTAL_SIZE_IMG]: {
|
|
89
|
+
label: FILE_TYPE_LABELS.IMG,
|
|
88
90
|
type: METRIC_TYPE_FILE_SIZE,
|
|
89
91
|
},
|
|
90
|
-
|
|
91
|
-
label:
|
|
92
|
+
[Metric.TOTAL_SIZE_MEDIA]: {
|
|
93
|
+
label: FILE_TYPE_LABELS.MEDIA,
|
|
92
94
|
type: METRIC_TYPE_FILE_SIZE,
|
|
93
95
|
},
|
|
94
|
-
|
|
95
|
-
label:
|
|
96
|
+
[Metric.TOTAL_SIZE_FONT]: {
|
|
97
|
+
label: FILE_TYPE_LABELS.FONT,
|
|
96
98
|
type: METRIC_TYPE_FILE_SIZE,
|
|
97
99
|
},
|
|
98
|
-
|
|
99
|
-
label:
|
|
100
|
+
[Metric.TOTAL_SIZE_HTML]: {
|
|
101
|
+
label: FILE_TYPE_LABELS.HTML,
|
|
100
102
|
type: METRIC_TYPE_FILE_SIZE,
|
|
101
103
|
},
|
|
102
|
-
|
|
103
|
-
label:
|
|
104
|
+
[Metric.TOTAL_SIZE_OTHER]: {
|
|
105
|
+
label: FILE_TYPE_LABELS.OTHER,
|
|
104
106
|
type: METRIC_TYPE_FILE_SIZE,
|
|
105
107
|
},
|
|
106
108
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/webpack/metrics.js"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/webpack/metrics.js"],"names":[],"mappings":"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"}
|
package/lib-esm/webpack/types.js
CHANGED
|
@@ -1,2 +1,24 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const METRIC_TOTALS_SUFIX_ALL = 'ALL';
|
|
2
|
+
export const METRIC_TOTALS_PREFIX = 'totalSizeByType';
|
|
3
|
+
export var Metric;
|
|
4
|
+
(function (Metric) {
|
|
5
|
+
Metric["BUNDLE_SIZE"] = "totalSizeByTypeALL";
|
|
6
|
+
Metric["INITIAL_SIZE_JS"] = "totalInitialSizeJS";
|
|
7
|
+
Metric["INITIAL_SIZE_CSS"] = "totalInitialSizeCSS";
|
|
8
|
+
Metric["CACHE_INVALIDATION"] = "cacheInvalidation";
|
|
9
|
+
Metric["ASSET_COUNT"] = "assetCount";
|
|
10
|
+
Metric["CHUNK_COUNT"] = "chunkCount";
|
|
11
|
+
Metric["MODULE_COUNT"] = "moduleCount";
|
|
12
|
+
Metric["DUPLICATE_MODULES_COUNT"] = "duplicateModulesCount";
|
|
13
|
+
Metric["DUPLICATE_CODE"] = "duplicateCode";
|
|
14
|
+
Metric["PACKAGE_COUNT"] = "packageCount";
|
|
15
|
+
Metric["DUPLICATE_PACKAGES_COUNT"] = "duplicatePackagesCount";
|
|
16
|
+
Metric["TOTAL_SIZE_JS"] = "totalSizeByTypeJS";
|
|
17
|
+
Metric["TOTAL_SIZE_CSS"] = "totalSizeByTypeCSS";
|
|
18
|
+
Metric["TOTAL_SIZE_IMG"] = "totalSizeByTypeIMG";
|
|
19
|
+
Metric["TOTAL_SIZE_MEDIA"] = "totalSizeByTypeMEDIA";
|
|
20
|
+
Metric["TOTAL_SIZE_FONT"] = "totalSizeByTypeFONT";
|
|
21
|
+
Metric["TOTAL_SIZE_HTML"] = "totalSizeByTypeHTML";
|
|
22
|
+
Metric["TOTAL_SIZE_OTHER"] = "totalSizeByTypeOTHER";
|
|
23
|
+
})(Metric || (Metric = {}));
|
|
2
24
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/webpack/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/webpack/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,MAAM,CAAN,IAAY,MAmBX;AAnBD,WAAY,MAAM;IAChB,4CAAkC,CAAA;IAClC,gDAAsC,CAAA;IACtC,kDAAwC,CAAA;IACxC,kDAAwC,CAAA;IACxC,oCAA0B,CAAA;IAC1B,oCAA0B,CAAA;IAC1B,sCAA4B,CAAA;IAC5B,2DAAiD,CAAA;IACjD,0CAAgC,CAAA;IAChC,wCAA8B,CAAA;IAC9B,6DAAmD,CAAA;IACnD,6CAAmC,CAAA;IACnC,+CAAqC,CAAA;IACrC,+CAAqC,CAAA;IACrC,mDAAyC,CAAA;IACzC,iDAAuC,CAAA;IACvC,iDAAuC,CAAA;IACvC,mDAAyC,CAAA;AAC3C,CAAC,EAnBW,MAAM,KAAN,MAAM,QAmBjB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bundle-stats/utils",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0-beta.0",
|
|
4
4
|
"description": "BundleStats utils",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-esm/index.js",
|
|
@@ -35,27 +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.
|
|
39
|
-
"@bundle-stats/plugin-webpack-validate": "^4.
|
|
40
|
-
"query-string": "
|
|
41
|
-
"serialize-query-params": "
|
|
38
|
+
"@bundle-stats/plugin-webpack-filter": "^4.3.0-beta.0",
|
|
39
|
+
"@bundle-stats/plugin-webpack-validate": "^4.3.0-beta.0",
|
|
40
|
+
"query-string": "7.1.3",
|
|
41
|
+
"serialize-query-params": "2.0.2",
|
|
42
|
+
"use-query-params": "2.1.2"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
|
-
"@types/jest": "29.2.
|
|
45
|
+
"@types/jest": "29.2.6",
|
|
45
46
|
"@types/lodash": "4.14.191",
|
|
46
|
-
"core-js": "3.
|
|
47
|
+
"core-js": "3.27.2",
|
|
47
48
|
"jest": "29.3.1",
|
|
48
49
|
"jest-cli": "29.3.1",
|
|
49
50
|
"jest-date-mock": "1.0.8",
|
|
50
51
|
"lodash": "4.17.21",
|
|
51
52
|
"regenerator-runtime": "0.13.11",
|
|
52
|
-
"rimraf": "
|
|
53
|
-
"ts-jest": "29.0.
|
|
53
|
+
"rimraf": "4.1.1",
|
|
54
|
+
"ts-jest": "29.0.5",
|
|
54
55
|
"typescript": "4.9.4"
|
|
55
56
|
},
|
|
56
57
|
"peerDependencies": {
|
|
57
58
|
"core-js": "^3.0.0",
|
|
58
59
|
"lodash": "^4.0.0"
|
|
59
60
|
},
|
|
60
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "0dee5190df0098690d34ee9da7f471058fe8deed"
|
|
61
62
|
}
|
package/src/constants.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
export type SourceData = Record<string, unknown>;
|
|
2
|
+
|
|
1
3
|
export enum MetricTypeType {
|
|
2
|
-
'METRIC_TYPE_NUMERIC',
|
|
3
|
-
'METRIC_TYPE_SCORE',
|
|
4
|
-
'METRIC_TYPE_FILE_SIZE',
|
|
5
|
-
'METRIC_TYPE_DURATION',
|
|
6
|
-
'METRIC_TYPE_PERCENTAGE'
|
|
4
|
+
'METRIC_TYPE_NUMERIC' = 'METRIC_TYPE_NUMERIC',
|
|
5
|
+
'METRIC_TYPE_SCORE' = 'METRIC_TYPE_SCORE',
|
|
6
|
+
'METRIC_TYPE_FILE_SIZE' = 'METRIC_TYPE_FILE_SIZE',
|
|
7
|
+
'METRIC_TYPE_DURATION' = 'METRIC_TYPE_DURATION',
|
|
8
|
+
'METRIC_TYPE_PERCENTAGE' = 'METRIC_TYPE_PERCENTAGE',
|
|
7
9
|
}
|
|
8
10
|
|
|
9
11
|
export interface MetricTypeConfig {
|
|
@@ -18,13 +20,13 @@ export interface MetricType extends MetricTypeConfig {
|
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
export enum MetricRunInfoDeltaType {
|
|
21
|
-
'HIGH_NEGATIVE',
|
|
22
|
-
'NEGATIVE',
|
|
23
|
-
'LOW_NEGATIVE',
|
|
24
|
-
'NO_CHANGE',
|
|
25
|
-
'LOW_POSITIVE',
|
|
26
|
-
'POSITIVE',
|
|
27
|
-
'HIGH_POSITIVE',
|
|
23
|
+
'HIGH_NEGATIVE' = 'HIGH_NEGATIVE',
|
|
24
|
+
'NEGATIVE' = 'NEGATIVE',
|
|
25
|
+
'LOW_NEGATIVE' = 'LOW_NEGATIVE',
|
|
26
|
+
'NO_CHANGE' = 'NO_CHANGE',
|
|
27
|
+
'LOW_POSITIVE' = 'LOW_POSITIVE',
|
|
28
|
+
'POSITIVE' = 'POSITIVE',
|
|
29
|
+
'HIGH_POSITIVE' = 'HIGH_POSITIVE',
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
export interface MetricRun {
|
|
@@ -35,13 +37,34 @@ export interface MetricRunInfo {
|
|
|
35
37
|
value: number;
|
|
36
38
|
displayValue: string;
|
|
37
39
|
delta?: number;
|
|
40
|
+
deltaPercentage?: number;
|
|
41
|
+
deltaType?: MetricRunInfoDeltaType;
|
|
38
42
|
displayDelta?: string;
|
|
39
43
|
displayDeltaPercentage?: string;
|
|
40
|
-
deltaType?: MetricRunInfoDeltaType;
|
|
41
44
|
}
|
|
42
45
|
|
|
43
|
-
export interface
|
|
44
|
-
|
|
46
|
+
export interface JobSummaryItem {
|
|
47
|
+
baseline: number;
|
|
48
|
+
current: number;
|
|
49
|
+
}
|
|
50
|
+
export type JobSummarySource = Record<string, JobSummaryItem>;
|
|
51
|
+
export type JobSummary = Record<string, JobSummarySource>;
|
|
52
|
+
|
|
53
|
+
export type JobMetricsSource = Record<string, MetricRun | Record<string, MetricRun>>;
|
|
54
|
+
export type JobMetrics = Record<string, JobMetricsSource>;
|
|
55
|
+
|
|
56
|
+
export interface JobData {
|
|
57
|
+
meta?: any;
|
|
58
|
+
insights?: any;
|
|
59
|
+
summary?: JobSummary;
|
|
60
|
+
metrics?: JobMetrics;
|
|
61
|
+
rawData?: any;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface Job extends JobData {
|
|
65
|
+
internalBuildNumber: number;
|
|
66
|
+
// @TODO(v5): Remove or move to report
|
|
67
|
+
label: string;
|
|
45
68
|
}
|
|
46
69
|
|
|
47
70
|
export interface LighthouseSource {
|
package/src/index.js
CHANGED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import merge from 'lodash/merge';
|
|
2
|
+
|
|
3
|
+
import { SOURCE_PATHS } from '../config';
|
|
4
|
+
import { createSummary } from './create-summary';
|
|
5
|
+
import * as webpack from '../webpack';
|
|
6
|
+
import * as lighthouse from '../lighthouse';
|
|
7
|
+
import * as browsertime from '../browsertime';
|
|
8
|
+
import { JobData, JobMetricsSource, SourceData } from '../constants';
|
|
9
|
+
|
|
10
|
+
interface SourceResult {
|
|
11
|
+
meta: {};
|
|
12
|
+
insights: {};
|
|
13
|
+
metrics: JobMetricsSource;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface SourceModule {
|
|
17
|
+
SUMMARY_METRIC_PATHS: Array<string>;
|
|
18
|
+
extract: (rawData: any, balien: any) => any;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const SOURCE_MODULES: Record<string, SourceModule> = { webpack, lighthouse, browsertime };
|
|
22
|
+
|
|
23
|
+
export const createJob = (source: SourceData, baseline?: JobData): JobData =>
|
|
24
|
+
SOURCE_PATHS.reduce((agg, sourcePath) => {
|
|
25
|
+
const rawData = source[sourcePath];
|
|
26
|
+
|
|
27
|
+
if (!rawData) {
|
|
28
|
+
return agg;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const sourceModule = SOURCE_MODULES[sourcePath];
|
|
32
|
+
|
|
33
|
+
if (!sourceModule) {
|
|
34
|
+
return agg;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const extractedData: SourceResult = sourceModule.extract(rawData, baseline);
|
|
38
|
+
|
|
39
|
+
const summary = createSummary(
|
|
40
|
+
SOURCE_MODULES[sourcePath].SUMMARY_METRIC_PATHS,
|
|
41
|
+
baseline?.metrics?.[sourcePath],
|
|
42
|
+
extractedData?.metrics,
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
return merge({}, agg, {
|
|
46
|
+
meta: {
|
|
47
|
+
[sourcePath]: extractedData.meta,
|
|
48
|
+
},
|
|
49
|
+
insights: {
|
|
50
|
+
[sourcePath]: extractedData.insights,
|
|
51
|
+
},
|
|
52
|
+
summary: {
|
|
53
|
+
[sourcePath]: summary,
|
|
54
|
+
},
|
|
55
|
+
metrics: {
|
|
56
|
+
[sourcePath]: extractedData.metrics,
|
|
57
|
+
},
|
|
58
|
+
rawData: {
|
|
59
|
+
[sourcePath]: rawData,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}, {});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createJob } from './create-job';
|
|
2
|
+
import { Job, SourceData } from '../constants';
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Create jobs from sources ([current, ..., baseline])
|
|
6
|
+
*/
|
|
7
|
+
export const createJobs = (sources: Array<SourceData>): Array<Job> => {
|
|
8
|
+
const jobs = [] as Array<Job>;
|
|
9
|
+
|
|
10
|
+
for (let i = sources.length - 1; i >= 0; i -= 1) {
|
|
11
|
+
const source = sources[i];
|
|
12
|
+
const baseline = jobs.length > 0 ? jobs[jobs.length - 1] : undefined;
|
|
13
|
+
const jobData = createJob(source, baseline);
|
|
14
|
+
|
|
15
|
+
const internalBuildNumber = sources.length - i;
|
|
16
|
+
const label = `Job #${internalBuildNumber}`;
|
|
17
|
+
|
|
18
|
+
const job = {
|
|
19
|
+
...jobData,
|
|
20
|
+
internalBuildNumber,
|
|
21
|
+
label,
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
jobs.unshift(job);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return jobs;
|
|
28
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import get from 'lodash/get';
|
|
2
|
+
|
|
3
|
+
import { JobMetricsSource, JobSummaryItem } from '../constants';
|
|
4
|
+
|
|
5
|
+
type JobSummary = Record<string, JobSummaryItem>;
|
|
6
|
+
|
|
7
|
+
export const createSummary = (
|
|
8
|
+
metricPaths: Array<string>,
|
|
9
|
+
baselineMetricsSource: JobMetricsSource | null | undefined,
|
|
10
|
+
currentMetricsSource: JobMetricsSource,
|
|
11
|
+
): JobSummary => {
|
|
12
|
+
const result: JobSummary = {};
|
|
13
|
+
|
|
14
|
+
metricPaths.forEach((metric) => {
|
|
15
|
+
result[metric] = {
|
|
16
|
+
baseline: get(baselineMetricsSource, `${metric}.value`, 0) as number,
|
|
17
|
+
current: get(currentMetricsSource, `${metric}.value`, 0) as number,
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
return result;
|
|
22
|
+
};
|
|
File without changes
|
package/src/lighthouse/filter.js
CHANGED
|
@@ -4,7 +4,7 @@ import pick from 'lodash/pick';
|
|
|
4
4
|
* Filter Lightouse source file
|
|
5
5
|
*
|
|
6
6
|
* @param {Object} source
|
|
7
|
-
* @return {import('
|
|
7
|
+
* @return {import('../constants').LighthouseSource}
|
|
8
8
|
*/
|
|
9
9
|
export const filter = (source) => {
|
|
10
10
|
// filter meta data
|
|
@@ -20,10 +20,13 @@ export const filter = (source) => {
|
|
|
20
20
|
);
|
|
21
21
|
|
|
22
22
|
// filter audits
|
|
23
|
-
const audits = Object.entries(source.audits).reduce(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
const audits = Object.entries(source.audits).reduce(
|
|
24
|
+
(agg, [auditId, auditData]) => ({
|
|
25
|
+
...agg,
|
|
26
|
+
[auditId]: pick(auditData, ['score', 'numericValue']),
|
|
27
|
+
}),
|
|
28
|
+
{},
|
|
29
|
+
);
|
|
27
30
|
|
|
28
31
|
return {
|
|
29
32
|
...meta,
|