@bundle-stats/utils 3.3.0-alpha.0 → 3.3.0-alpha.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.
- package/CHANGELOG.md +17 -0
- package/lib/constants.js +8 -1
- package/lib/constants.js.map +1 -1
- package/lib/index.js +15 -0
- package/lib/index.js.map +1 -1
- package/lib/transformers/budgets-insights.js +85 -0
- package/lib/transformers/budgets-insights.js.map +1 -0
- package/lib/transformers/index.js +24 -0
- package/lib/transformers/index.js.map +1 -0
- package/lib/webpack/extract/index.js +21 -2
- package/lib/webpack/extract/index.js.map +1 -1
- package/lib/webpack/extract/modules-packages-duplicate.js +2 -2
- package/lib/webpack/extract/modules-packages-duplicate.js.map +1 -1
- package/lib-esm/constants.js +7 -0
- package/lib-esm/constants.js.map +1 -1
- package/lib-esm/index.js +3 -0
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/transformers/budgets-insights.js +77 -0
- package/lib-esm/transformers/budgets-insights.js.map +1 -0
- package/lib-esm/transformers/index.js +3 -0
- package/lib-esm/transformers/index.js.map +1 -0
- package/lib-esm/webpack/extract/index.js +2 -2
- package/lib-esm/webpack/extract/index.js.map +1 -1
- package/lib-esm/webpack/extract/modules-packages-duplicate.js +2 -2
- package/lib-esm/webpack/extract/modules-packages-duplicate.js.map +1 -1
- package/package.json +4 -4
- package/src/constants.ts +7 -0
- package/src/index.js +2 -0
- package/src/transformers/budgets-insights.ts +143 -0
- package/src/transformers/index.ts +1 -0
- package/src/webpack/extract/index.js +6 -9
- package/src/webpack/extract/modules-packages-duplicate.js +2 -2
- package/types/constants.d.ts +6 -0
- package/types/index.d.ts +2 -0
- package/types/transformers/budgets-insights.d.ts +36 -0
- package/types/transformers/index.d.ts +1 -0
- package/types/webpack/extract/modules-packages-duplicate.d.ts +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [3.3.0-alpha.1](https://github.com/relative-ci/bundle-stats/compare/v3.3.0-alpha.0...v3.3.0-alpha.1) (2021-12-19)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **utils:** Budgets - take biggerIsBetter in consideration ([3df8abc](https://github.com/relative-ci/bundle-stats/commit/3df8abc2bcd27c8e56d62412749c6c9f2c02feba))
|
|
12
|
+
* **utils:** Export constants ([e65ecc1](https://github.com/relative-ci/bundle-stats/commit/e65ecc1df145af0b292f4a1104c69a03fe89b902))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **utils:** BudgetsInsights - add getInfo ([7bd6763](https://github.com/relative-ci/bundle-stats/commit/7bd6763263e209de6c85e7b0e37ccdd36aa52080))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
6
23
|
# [3.3.0-alpha.0](https://github.com/relative-ci/bundle-stats/compare/v3.2.2...v3.3.0-alpha.0) (2021-12-17)
|
|
7
24
|
|
|
8
25
|
|
package/lib/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MetricRunInfoDeltaType = exports.MetricTypeType = void 0;
|
|
3
|
+
exports.InsightType = exports.MetricRunInfoDeltaType = exports.MetricTypeType = void 0;
|
|
4
4
|
var MetricTypeType;
|
|
5
5
|
(function (MetricTypeType) {
|
|
6
6
|
MetricTypeType[MetricTypeType["METRIC_TYPE_NUMERIC"] = 0] = "METRIC_TYPE_NUMERIC";
|
|
@@ -19,4 +19,11 @@ var MetricRunInfoDeltaType;
|
|
|
19
19
|
MetricRunInfoDeltaType[MetricRunInfoDeltaType["POSITIVE"] = 5] = "POSITIVE";
|
|
20
20
|
MetricRunInfoDeltaType[MetricRunInfoDeltaType["HIGH_POSITIVE"] = 6] = "HIGH_POSITIVE";
|
|
21
21
|
})(MetricRunInfoDeltaType = exports.MetricRunInfoDeltaType || (exports.MetricRunInfoDeltaType = {}));
|
|
22
|
+
var InsightType;
|
|
23
|
+
(function (InsightType) {
|
|
24
|
+
InsightType["ERROR"] = "ERROR";
|
|
25
|
+
InsightType["WARNING"] = "WARNING";
|
|
26
|
+
InsightType["INFO"] = "INFO";
|
|
27
|
+
InsightType["SUCCESS"] = "SUCCESS";
|
|
28
|
+
})(InsightType = exports.InsightType || (exports.InsightType = {}));
|
|
22
29
|
//# sourceMappingURL=constants.js.map
|
package/lib/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,iFAAqB,CAAA;IACrB,6EAAmB,CAAA;IACnB,qFAAuB,CAAA;IACvB,mFAAsB,CAAA;IACtB,uFAAwB,CAAA;AAC1B,CAAC,EANW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAMzB;AAaD,IAAY,sBAQX;AARD,WAAY,sBAAsB;IAChC,qFAAe,CAAA;IACf,2EAAU,CAAA;IACV,mFAAc,CAAA;IACd,6EAAW,CAAA;IACX,mFAAc,CAAA;IACd,2EAAU,CAAA;IACV,qFAAe,CAAA;AACjB,CAAC,EARW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAQjC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,iFAAqB,CAAA;IACrB,6EAAmB,CAAA;IACnB,qFAAuB,CAAA;IACvB,mFAAsB,CAAA;IACtB,uFAAwB,CAAA;AAC1B,CAAC,EANW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAMzB;AAaD,IAAY,sBAQX;AARD,WAAY,sBAAsB;IAChC,qFAAe,CAAA;IACf,2EAAU,CAAA;IACV,mFAAc,CAAA;IACd,6EAAW,CAAA;IACX,mFAAc,CAAA;IACd,2EAAU,CAAA;IACV,qFAAe,CAAA;AACjB,CAAC,EARW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAQjC;AA0ID,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,4BAAa,CAAA;IACb,kCAAmB,CAAA;AACrB,CAAC,EALW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAKtB"}
|
package/lib/index.js
CHANGED
|
@@ -6,13 +6,28 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
6
6
|
if (k2 === undefined) k2 = k;
|
|
7
7
|
o[k2] = m[k];
|
|
8
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
|
+
});
|
|
9
14
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
15
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
16
|
};
|
|
17
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
18
|
+
if (mod && mod.__esModule) return mod;
|
|
19
|
+
var result = {};
|
|
20
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
21
|
+
__setModuleDefault(result, mod);
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
12
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.transformers = void 0;
|
|
13
26
|
__exportStar(require("./browsertime"), exports);
|
|
14
27
|
__exportStar(require("./config"), exports);
|
|
28
|
+
__exportStar(require("./constants"), exports);
|
|
15
29
|
__exportStar(require("./jobs"), exports);
|
|
16
30
|
__exportStar(require("./report"), exports);
|
|
17
31
|
__exportStar(require("./utils"), exports);
|
|
32
|
+
exports.transformers = __importStar(require("./transformers"));
|
|
18
33
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,2CAAyB;AACzB,8CAA4B;AAE5B,yCAAuB;AACvB,2CAAyB;AACzB,0CAAwB;AACxB,+DAA+C"}
|
|
@@ -0,0 +1,85 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgets-insights.js","sourceRoot":"","sources":["../../src/transformers/budgets-insights.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAqD"}
|
|
@@ -1,10 +1,30 @@
|
|
|
1
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
|
+
};
|
|
2
21
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
23
|
};
|
|
5
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
25
|
exports.extract = void 0;
|
|
7
26
|
const merge_1 = __importDefault(require("lodash/merge"));
|
|
27
|
+
const budgetsInsights = __importStar(require("../../transformers/budgets-insights"));
|
|
8
28
|
const assets_1 = require("./assets");
|
|
9
29
|
const assets_cache_invalidation_1 = require("./assets-cache-invalidation");
|
|
10
30
|
const assets_chunk_count_1 = require("./assets-chunk-count");
|
|
@@ -17,7 +37,6 @@ const modules_count_1 = require("./modules-count");
|
|
|
17
37
|
const modules_packages_1 = require("./modules-packages");
|
|
18
38
|
const modules_packages_count_1 = require("./modules-packages-count");
|
|
19
39
|
const modules_packages_duplicate_1 = require("./modules-packages-duplicate");
|
|
20
|
-
const budgets_insights_1 = __importDefault(require("./budgets-insights"));
|
|
21
40
|
const extractFns = [
|
|
22
41
|
assets_1.extractAssets,
|
|
23
42
|
assets_cache_invalidation_1.extractAssetsCacheInvalidation,
|
|
@@ -31,7 +50,7 @@ const extractFns = [
|
|
|
31
50
|
modules_packages_1.extractModulesPackages,
|
|
32
51
|
modules_packages_count_1.extractModulesPackagesCount,
|
|
33
52
|
modules_packages_duplicate_1.extractModulesPackagesDuplicate,
|
|
34
|
-
|
|
53
|
+
budgetsInsights.getExtract('webpack'),
|
|
35
54
|
];
|
|
36
55
|
const extract = (webpackStats, baseline, options) => extractFns.reduce((agg, extractFn) => (0, merge_1.default)({}, agg, extractFn(webpackStats, agg, baseline, options)), {});
|
|
37
56
|
exports.extract = extract;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webpack/extract/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webpack/extract/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAiC;AAEjC,qFAAuE;AACvE,qCAAyC;AACzC,2EAA6E;AAC7E,6DAA+D;AAC/D,iDAAoD;AACpD,+CAAkD;AAClD,2EAA4E;AAC5E,iCAAqC;AACrC,uCAA2C;AAC3C,mDAAsD;AACtD,yDAA4D;AAC5D,qEAAuE;AACvE,6EAA+E;AAE/E,MAAM,UAAU,GAAG;IACjB,sBAAa;IACb,0DAA8B;IAC9B,4CAAuB;IACvB,iCAAkB;IAClB,+BAAiB;IACjB,yDAA6B;IAC7B,kBAAW;IACX,wBAAc;IACd,mCAAmB;IACnB,yCAAsB;IACtB,oDAA2B;IAC3B,4DAA+B;IAC/B,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC;CACtC,CAAC;AAEK,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CACzD,UAAU,CAAC,MAAM,CACf,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,IAAA,eAAK,EAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,EACnF,EAAE,CACH,CAAC;AAJS,QAAA,OAAO,WAIhB"}
|
|
@@ -8,7 +8,7 @@ const get_1 = __importDefault(require("lodash/get"));
|
|
|
8
8
|
const map_1 = __importDefault(require("lodash/map"));
|
|
9
9
|
const orderBy_1 = __importDefault(require("lodash/orderBy"));
|
|
10
10
|
const sum_1 = __importDefault(require("lodash/sum"));
|
|
11
|
-
const
|
|
11
|
+
const constants_1 = require("../../constants");
|
|
12
12
|
const extractModulesPackagesDuplicate = (webpackStats, currentExtractedData) => {
|
|
13
13
|
const source = (0, get_1.default)(currentExtractedData, 'metrics.packages', {});
|
|
14
14
|
const packagesByName = Object.entries(source).reduce((agg, [packageId, packageData]) => {
|
|
@@ -68,7 +68,7 @@ const extractModulesPackagesDuplicate = (webpackStats, currentExtractedData) =>
|
|
|
68
68
|
return {
|
|
69
69
|
insights: {
|
|
70
70
|
duplicatePackages: {
|
|
71
|
-
type:
|
|
71
|
+
type: constants_1.InsightType.WARNING,
|
|
72
72
|
data,
|
|
73
73
|
},
|
|
74
74
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules-packages-duplicate.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-duplicate.js"],"names":[],"mappings":";;;;;;AAAA,qDAA6B;AAC7B,qDAA6B;AAC7B,6DAAqC;AACrC,qDAA6B;AAE7B
|
|
1
|
+
{"version":3,"file":"modules-packages-duplicate.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-duplicate.js"],"names":[],"mappings":"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"}
|
package/lib-esm/constants.js
CHANGED
|
@@ -16,4 +16,11 @@ export var MetricRunInfoDeltaType;
|
|
|
16
16
|
MetricRunInfoDeltaType[MetricRunInfoDeltaType["POSITIVE"] = 5] = "POSITIVE";
|
|
17
17
|
MetricRunInfoDeltaType[MetricRunInfoDeltaType["HIGH_POSITIVE"] = 6] = "HIGH_POSITIVE";
|
|
18
18
|
})(MetricRunInfoDeltaType || (MetricRunInfoDeltaType = {}));
|
|
19
|
+
export var InsightType;
|
|
20
|
+
(function (InsightType) {
|
|
21
|
+
InsightType["ERROR"] = "ERROR";
|
|
22
|
+
InsightType["WARNING"] = "WARNING";
|
|
23
|
+
InsightType["INFO"] = "INFO";
|
|
24
|
+
InsightType["SUCCESS"] = "SUCCESS";
|
|
25
|
+
})(InsightType || (InsightType = {}));
|
|
19
26
|
//# sourceMappingURL=constants.js.map
|
package/lib-esm/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,iFAAqB,CAAA;IACrB,6EAAmB,CAAA;IACnB,qFAAuB,CAAA;IACvB,mFAAsB,CAAA;IACtB,uFAAwB,CAAA;AAC1B,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AAaD,MAAM,CAAN,IAAY,sBAQX;AARD,WAAY,sBAAsB;IAChC,qFAAe,CAAA;IACf,2EAAU,CAAA;IACV,mFAAc,CAAA;IACd,6EAAW,CAAA;IACX,mFAAc,CAAA;IACd,2EAAU,CAAA;IACV,qFAAe,CAAA;AACjB,CAAC,EARW,sBAAsB,KAAtB,sBAAsB,QAQjC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,iFAAqB,CAAA;IACrB,6EAAmB,CAAA;IACnB,qFAAuB,CAAA;IACvB,mFAAsB,CAAA;IACtB,uFAAwB,CAAA;AAC1B,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AAaD,MAAM,CAAN,IAAY,sBAQX;AARD,WAAY,sBAAsB;IAChC,qFAAe,CAAA;IACf,2EAAU,CAAA;IACV,mFAAc,CAAA;IACd,6EAAW,CAAA;IACX,mFAAc,CAAA;IACd,2EAAU,CAAA;IACV,qFAAe,CAAA;AACjB,CAAC,EARW,sBAAsB,KAAtB,sBAAsB,QAQjC;AA0ID,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,4BAAa,CAAA;IACb,kCAAmB,CAAA;AACrB,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB"}
|
package/lib-esm/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export * from './browsertime';
|
|
2
2
|
export * from './config';
|
|
3
|
+
export * from './constants';
|
|
3
4
|
export * from './jobs';
|
|
4
5
|
export * from './report';
|
|
5
6
|
export * from './utils';
|
|
7
|
+
import * as transformers_1 from './transformers';
|
|
8
|
+
export { transformers_1 as transformers };
|
|
6
9
|
//# sourceMappingURL=index.js.map
|
package/lib-esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAE5B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;gCACM,gBAAgB;2BAAlC,YAAY"}
|
|
@@ -0,0 +1,77 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgets-insights.js","sourceRoot":"","sources":["../../src/transformers/budgets-insights.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":"kCAAgC,oBAAoB;6BAAxC,cAAc"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import merge from 'lodash/merge';
|
|
2
|
+
import * as budgetsInsights from '../../transformers/budgets-insights';
|
|
2
3
|
import { extractAssets } from './assets';
|
|
3
4
|
import { extractAssetsCacheInvalidation } from './assets-cache-invalidation';
|
|
4
5
|
import { extractAssetsChunkCount } from './assets-chunk-count';
|
|
@@ -11,7 +12,6 @@ import { extractModulesCount } from './modules-count';
|
|
|
11
12
|
import { extractModulesPackages } from './modules-packages';
|
|
12
13
|
import { extractModulesPackagesCount } from './modules-packages-count';
|
|
13
14
|
import { extractModulesPackagesDuplicate } from './modules-packages-duplicate';
|
|
14
|
-
import extractBudgetsInsights from './budgets-insights';
|
|
15
15
|
const extractFns = [
|
|
16
16
|
extractAssets,
|
|
17
17
|
extractAssetsCacheInvalidation,
|
|
@@ -25,7 +25,7 @@ const extractFns = [
|
|
|
25
25
|
extractModulesPackages,
|
|
26
26
|
extractModulesPackagesCount,
|
|
27
27
|
extractModulesPackagesDuplicate,
|
|
28
|
-
|
|
28
|
+
budgetsInsights.getExtract('webpack'),
|
|
29
29
|
];
|
|
30
30
|
export const extract = (webpackStats, baseline, options) => extractFns.reduce((agg, extractFn) => merge({}, agg, extractFn(webpackStats, agg, baseline, options)), {});
|
|
31
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webpack/extract/index.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webpack/extract/index.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAE/E,MAAM,UAAU,GAAG;IACjB,aAAa;IACb,8BAA8B;IAC9B,uBAAuB;IACvB,kBAAkB;IAClB,iBAAiB;IACjB,6BAA6B;IAC7B,WAAW;IACX,cAAc;IACd,mBAAmB;IACnB,sBAAsB;IACtB,2BAA2B;IAC3B,+BAA+B;IAC/B,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CACzD,UAAU,CAAC,MAAM,CACf,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,EACnF,EAAE,CACH,CAAC"}
|
|
@@ -2,7 +2,7 @@ import get from 'lodash/get';
|
|
|
2
2
|
import map from 'lodash/map';
|
|
3
3
|
import orderBy from 'lodash/orderBy';
|
|
4
4
|
import sum from 'lodash/sum';
|
|
5
|
-
import {
|
|
5
|
+
import { InsightType } from '../../constants';
|
|
6
6
|
export const extractModulesPackagesDuplicate = (webpackStats, currentExtractedData) => {
|
|
7
7
|
const source = get(currentExtractedData, 'metrics.packages', {});
|
|
8
8
|
const packagesByName = Object.entries(source).reduce((agg, [packageId, packageData]) => {
|
|
@@ -62,7 +62,7 @@ export const extractModulesPackagesDuplicate = (webpackStats, currentExtractedDa
|
|
|
62
62
|
return {
|
|
63
63
|
insights: {
|
|
64
64
|
duplicatePackages: {
|
|
65
|
-
type:
|
|
65
|
+
type: InsightType.WARNING,
|
|
66
66
|
data,
|
|
67
67
|
},
|
|
68
68
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules-packages-duplicate.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-duplicate.js"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"modules-packages-duplicate.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-duplicate.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": "3.3.0-alpha.
|
|
3
|
+
"version": "3.3.0-alpha.1",
|
|
4
4
|
"description": "BundleStats utils",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-esm/index.js",
|
|
@@ -35,8 +35,8 @@
|
|
|
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": "^3.
|
|
39
|
-
"@bundle-stats/plugin-webpack-validate": "^3.
|
|
38
|
+
"@bundle-stats/plugin-webpack-filter": "^3.3.0-alpha.1",
|
|
39
|
+
"@bundle-stats/plugin-webpack-validate": "^3.3.0-alpha.1",
|
|
40
40
|
"convert-units": "^3.0.0-beta.2",
|
|
41
41
|
"query-string": "^7.0.0",
|
|
42
42
|
"serialize-query-params": "^1.3.3"
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"core-js": "^3.16.2",
|
|
59
59
|
"lodash": "^4.17.21"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "b510975b373ee38b66899a990c7341d1a29a69e2"
|
|
62
62
|
}
|
package/src/constants.ts
CHANGED
package/src/index.js
CHANGED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import get from 'lodash/get';
|
|
2
|
+
|
|
3
|
+
import { InsightType } from '../constants';
|
|
4
|
+
import { getGlobalMetricType } from '../utils';
|
|
5
|
+
|
|
6
|
+
interface OptionBudgetMetric {
|
|
7
|
+
metric: string;
|
|
8
|
+
value: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface Options {
|
|
12
|
+
budgets?: Array<OptionBudgetMetric>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface BudgetInsight {
|
|
16
|
+
currentValue: number;
|
|
17
|
+
budgetValue: number;
|
|
18
|
+
failed: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface BudgetInsightInfo {
|
|
22
|
+
type: InsightType;
|
|
23
|
+
message: {
|
|
24
|
+
template: string;
|
|
25
|
+
data: Record<string, unknown>;
|
|
26
|
+
};
|
|
27
|
+
source: {
|
|
28
|
+
metricId: string;
|
|
29
|
+
budgetInsight: BudgetInsight;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
interface BudgetInsights {
|
|
34
|
+
[metricId: string]: BudgetInsight;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
interface BudgetsInsightsOutput {
|
|
38
|
+
insights: {
|
|
39
|
+
budgets: BudgetInsights;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const getExtract =
|
|
44
|
+
(source: string) => (
|
|
45
|
+
_: unknown,
|
|
46
|
+
currentExtractedData: any,
|
|
47
|
+
__: unknown,
|
|
48
|
+
options: Options = {},
|
|
49
|
+
): BudgetsInsightsOutput | null => {
|
|
50
|
+
const { budgets: budgetsOptions } = options;
|
|
51
|
+
|
|
52
|
+
if (!budgetsOptions) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const insights: Array<[string, BudgetInsight]> = [];
|
|
57
|
+
|
|
58
|
+
budgetsOptions.forEach((budgetOption) => {
|
|
59
|
+
const { metric: budgetMetricId, value: budgetValue } = budgetOption;
|
|
60
|
+
const currentValue = get(currentExtractedData, `metrics.${budgetMetricId}.value`);
|
|
61
|
+
const metric = getGlobalMetricType(`${source}.${budgetMetricId}`);
|
|
62
|
+
|
|
63
|
+
if (!currentValue) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const isValueOverBudget = currentValue > budgetValue;
|
|
68
|
+
|
|
69
|
+
const budgetInsight = {
|
|
70
|
+
currentValue,
|
|
71
|
+
budgetValue,
|
|
72
|
+
failed: metric.biggerIsBetter ? !isValueOverBudget : isValueOverBudget,
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
insights.push([budgetMetricId, budgetInsight]);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
if (insights.length === 0) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
insights: {
|
|
84
|
+
budgets: Object.fromEntries(insights),
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const resolveDiffLabel = (budgetInsight: BudgetInsight): string => {
|
|
90
|
+
const { currentValue, budgetValue } = budgetInsight;
|
|
91
|
+
|
|
92
|
+
if (currentValue > budgetValue) {
|
|
93
|
+
return 'over';
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (currentValue < budgetValue) {
|
|
97
|
+
return 'under';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return 'equal with';
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const resolveType = (budgetInsight: BudgetInsight): InsightType => {
|
|
104
|
+
if (budgetInsight.failed) {
|
|
105
|
+
return InsightType.ERROR;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (budgetInsight.currentValue === budgetInsight.budgetValue) {
|
|
109
|
+
return InsightType.WARNING;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return InsightType.SUCCESS;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// Add escapes for (|) to avoid lodash.template syntax errors
|
|
116
|
+
// eslint-disable-next-line no-useless-escape
|
|
117
|
+
export const INFO_MESSAGE_TEMPLATE = '<%= metricLabel %> value \(<%= currentValue %>\) is <%= diffLabel %> <%= budgetValue %> budget';
|
|
118
|
+
|
|
119
|
+
export const getInfo = (globalMetricId: string, budgetInsight: BudgetInsight): BudgetInsightInfo => {
|
|
120
|
+
const metric = getGlobalMetricType(globalMetricId);
|
|
121
|
+
|
|
122
|
+
const diffLabel = resolveDiffLabel(budgetInsight);
|
|
123
|
+
const type = resolveType(budgetInsight);
|
|
124
|
+
const currentValue = metric.formatter(budgetInsight.currentValue);
|
|
125
|
+
const budgetValue = metric.formatter(budgetInsight.budgetValue);
|
|
126
|
+
|
|
127
|
+
return {
|
|
128
|
+
type,
|
|
129
|
+
message: {
|
|
130
|
+
template: INFO_MESSAGE_TEMPLATE,
|
|
131
|
+
data: {
|
|
132
|
+
metricLabel: metric.label,
|
|
133
|
+
diffLabel,
|
|
134
|
+
currentValue,
|
|
135
|
+
budgetValue,
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
source: {
|
|
139
|
+
metricId: globalMetricId,
|
|
140
|
+
budgetInsight,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as budgetInsights from './budgets-insights';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import merge from 'lodash/merge';
|
|
2
2
|
|
|
3
|
+
import * as budgetsInsights from '../../transformers/budgets-insights';
|
|
3
4
|
import { extractAssets } from './assets';
|
|
4
5
|
import { extractAssetsCacheInvalidation } from './assets-cache-invalidation';
|
|
5
6
|
import { extractAssetsChunkCount } from './assets-chunk-count';
|
|
@@ -12,7 +13,6 @@ import { extractModulesCount } from './modules-count';
|
|
|
12
13
|
import { extractModulesPackages } from './modules-packages';
|
|
13
14
|
import { extractModulesPackagesCount } from './modules-packages-count';
|
|
14
15
|
import { extractModulesPackagesDuplicate } from './modules-packages-duplicate';
|
|
15
|
-
import extractBudgetsInsights from './budgets-insights';
|
|
16
16
|
|
|
17
17
|
const extractFns = [
|
|
18
18
|
extractAssets,
|
|
@@ -27,14 +27,11 @@ const extractFns = [
|
|
|
27
27
|
extractModulesPackages,
|
|
28
28
|
extractModulesPackagesCount,
|
|
29
29
|
extractModulesPackagesDuplicate,
|
|
30
|
-
|
|
30
|
+
budgetsInsights.getExtract('webpack'),
|
|
31
31
|
];
|
|
32
32
|
|
|
33
|
-
export const extract = (webpackStats, baseline, options) =>
|
|
34
|
-
(
|
|
33
|
+
export const extract = (webpackStats, baseline, options) =>
|
|
34
|
+
extractFns.reduce(
|
|
35
|
+
(agg, extractFn) => merge({}, agg, extractFn(webpackStats, agg, baseline, options)),
|
|
35
36
|
{},
|
|
36
|
-
|
|
37
|
-
extractFn(webpackStats, agg, baseline, options),
|
|
38
|
-
),
|
|
39
|
-
{}
|
|
40
|
-
);
|
|
37
|
+
);
|
|
@@ -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 {
|
|
6
|
+
import { InsightType } from '../../constants';
|
|
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:
|
|
92
|
+
type: InsightType.WARNING,
|
|
93
93
|
data,
|
|
94
94
|
},
|
|
95
95
|
},
|
package/types/constants.d.ts
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { InsightType } from '../constants';
|
|
2
|
+
interface OptionBudgetMetric {
|
|
3
|
+
metric: string;
|
|
4
|
+
value: number;
|
|
5
|
+
}
|
|
6
|
+
interface Options {
|
|
7
|
+
budgets?: Array<OptionBudgetMetric>;
|
|
8
|
+
}
|
|
9
|
+
interface BudgetInsight {
|
|
10
|
+
currentValue: number;
|
|
11
|
+
budgetValue: number;
|
|
12
|
+
failed: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface BudgetInsightInfo {
|
|
15
|
+
type: InsightType;
|
|
16
|
+
message: {
|
|
17
|
+
template: string;
|
|
18
|
+
data: Record<string, unknown>;
|
|
19
|
+
};
|
|
20
|
+
source: {
|
|
21
|
+
metricId: string;
|
|
22
|
+
budgetInsight: BudgetInsight;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
interface BudgetInsights {
|
|
26
|
+
[metricId: string]: BudgetInsight;
|
|
27
|
+
}
|
|
28
|
+
interface BudgetsInsightsOutput {
|
|
29
|
+
insights: {
|
|
30
|
+
budgets: BudgetInsights;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export declare const getExtract: (source: string) => (_: unknown, currentExtractedData: any, __: unknown, options?: Options) => BudgetsInsightsOutput | null;
|
|
34
|
+
export declare const INFO_MESSAGE_TEMPLATE = "<%= metricLabel %> value (<%= currentValue %>) is <%= diffLabel %> <%= budgetValue %> budget";
|
|
35
|
+
export declare const getInfo: (globalMetricId: string, budgetInsight: BudgetInsight) => BudgetInsightInfo;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as budgetInsights from './budgets-insights';
|
|
@@ -8,7 +8,7 @@ export function extractModulesPackagesDuplicate(webpackStats: any, currentExtrac
|
|
|
8
8
|
} | {
|
|
9
9
|
insights: {
|
|
10
10
|
duplicatePackages: {
|
|
11
|
-
type:
|
|
11
|
+
type: InsightType;
|
|
12
12
|
data: {};
|
|
13
13
|
};
|
|
14
14
|
};
|
|
@@ -18,3 +18,4 @@ export function extractModulesPackagesDuplicate(webpackStats: any, currentExtrac
|
|
|
18
18
|
};
|
|
19
19
|
};
|
|
20
20
|
};
|
|
21
|
+
import { InsightType } from "../../constants";
|