@bundle-stats/utils 3.4.0-beta.0 → 4.0.0-alpha.14
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/constants.js +1 -8
- package/lib/constants.js.map +1 -1
- package/lib/index.js +0 -15
- package/lib/index.js.map +1 -1
- package/lib/jobs/create-job.js +2 -2
- package/lib/jobs/create-job.js.map +1 -1
- package/lib/jobs/create-jobs.js +2 -2
- package/lib/jobs/create-jobs.js.map +1 -1
- package/lib/report/create.js +2 -4
- package/lib/report/create.js.map +1 -1
- package/lib/utils/format.js +12 -4
- package/lib/utils/format.js.map +1 -1
- package/lib/webpack/constants.js +14 -28
- package/lib/webpack/constants.js.map +1 -1
- package/lib/webpack/extract/assets-size-total-insight.js +4 -4
- package/lib/webpack/extract/assets-size-total-insight.js.map +1 -1
- package/lib/webpack/extract/assets-size.js +4 -3
- package/lib/webpack/extract/assets-size.js.map +1 -1
- package/lib/webpack/extract/assets.js +4 -4
- package/lib/webpack/extract/assets.js.map +1 -1
- package/lib/webpack/extract/index.js +1 -26
- package/lib/webpack/extract/index.js.map +1 -1
- package/lib/webpack/extract/modules-packages-duplicate.js +3 -3
- package/lib/webpack/extract/modules-packages-duplicate.js.map +1 -1
- package/lib/webpack/extract/modules-packages.js +1 -2
- package/lib/webpack/extract/modules-packages.js.map +1 -1
- package/lib/webpack/extract/modules.js +1 -1
- package/lib/webpack/extract/modules.js.map +1 -1
- package/lib/webpack/metrics.js +18 -29
- package/lib/webpack/metrics.js.map +1 -1
- package/lib/webpack/utils.js +1 -1
- package/lib/webpack/utils.js.map +1 -1
- package/lib-esm/constants.js +0 -7
- package/lib-esm/constants.js.map +1 -1
- package/lib-esm/index.js +0 -3
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/jobs/create-job.js +2 -2
- package/lib-esm/jobs/create-job.js.map +1 -1
- package/lib-esm/jobs/create-jobs.js +2 -2
- package/lib-esm/jobs/create-jobs.js.map +1 -1
- package/lib-esm/utils/format.js +12 -4
- package/lib-esm/utils/format.js.map +1 -1
- package/lib-esm/webpack/constants.js +13 -27
- package/lib-esm/webpack/constants.js.map +1 -1
- package/lib-esm/webpack/extract/assets-size-total-insight.js +4 -4
- package/lib-esm/webpack/extract/assets-size-total-insight.js.map +1 -1
- package/lib-esm/webpack/extract/assets-size.js +4 -3
- package/lib-esm/webpack/extract/assets-size.js.map +1 -1
- package/lib-esm/webpack/extract/index.js +1 -3
- 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/lib-esm/webpack/metrics.js +18 -29
- package/lib-esm/webpack/metrics.js.map +1 -1
- package/package.json +12 -12
- package/src/constants.ts +0 -7
- package/src/index.js +0 -2
- package/src/jobs/create-job.js +2 -2
- package/src/jobs/create-jobs.js +2 -2
- package/src/utils/format.js +17 -4
- package/src/webpack/{constants.ts → constants.js} +13 -28
- package/src/webpack/extract/assets-size-total-insight.js +4 -4
- package/src/webpack/extract/assets-size.js +5 -3
- package/src/webpack/extract/index.js +5 -7
- package/src/webpack/extract/modules-packages-duplicate.js +2 -2
- package/src/webpack/{metrics.ts → metrics.js} +18 -29
- package/types/constants.d.ts +0 -6
- package/types/index.d.ts +0 -2
- package/types/jobs/create-job.d.ts +1 -1
- package/types/jobs/create-jobs.d.ts +1 -1
- package/types/report/add-row-metric-data.d.ts +1 -1
- package/types/webpack/constants.d.ts +9 -33
- package/types/webpack/extract/index.d.ts +1 -1
- package/types/webpack/extract/modules-packages-duplicate.d.ts +1 -2
- package/types/webpack/extract/modules-packages.d.ts +1 -1
- package/types/webpack/metrics.d.ts +153 -116
- package/lib/transformers/budgets-insights.js +0 -133
- package/lib/transformers/budgets-insights.js.map +0 -1
- package/lib/transformers/index.js +0 -28
- package/lib/transformers/index.js.map +0 -1
- package/lib/types.js +0 -3
- package/lib/types.js.map +0 -1
- package/lib-esm/transformers/budgets-insights.js +0 -126
- package/lib-esm/transformers/budgets-insights.js.map +0 -1
- package/lib-esm/transformers/index.js +0 -3
- package/lib-esm/transformers/index.js.map +0 -1
- package/lib-esm/types.js +0 -2
- package/lib-esm/types.js.map +0 -1
- package/src/transformers/budgets-insights.ts +0 -212
- package/src/transformers/index.ts +0 -1
- package/src/types.ts +0 -14
- package/types/transformers/budgets-insights.d.ts +0 -34
- package/types/transformers/index.d.ts +0 -1
- package/types/types.d.ts +0 -9
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
import get from 'lodash/get';
|
|
2
|
-
import template from 'lodash/template';
|
|
3
|
-
|
|
4
|
-
import * as types from '../types';
|
|
5
|
-
import { InsightType } from '../constants';
|
|
6
|
-
import { getGlobalMetricType } from '../utils';
|
|
7
|
-
|
|
8
|
-
interface OptionBudgetMetric {
|
|
9
|
-
metric: string;
|
|
10
|
-
value: number;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
interface Options {
|
|
14
|
-
budgets?: Array<OptionBudgetMetric>;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface BudgetInsightMetricData {
|
|
18
|
-
currentValue: number;
|
|
19
|
-
budgetValue: number;
|
|
20
|
-
failed: boolean;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
interface BudgetInsightMetric {
|
|
24
|
-
/** Metric budget insight type */
|
|
25
|
-
type: InsightType;
|
|
26
|
-
message: {
|
|
27
|
-
text: string;
|
|
28
|
-
md: string;
|
|
29
|
-
};
|
|
30
|
-
/** Metric budget check data */
|
|
31
|
-
data: BudgetInsightMetricData;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
interface BudgetInsight extends types.Insight {
|
|
35
|
-
data: {
|
|
36
|
-
[metricId: string]: BudgetInsightMetric;
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
interface BudgetsInsightsOutput {
|
|
41
|
-
insights: {
|
|
42
|
-
budgets: BudgetInsight;
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const resolveType = (insights: Array<[string, BudgetInsightMetric]>): InsightType => {
|
|
47
|
-
if (insights.find(([_, { type }]) => type === InsightType.ERROR)) {
|
|
48
|
-
return InsightType.ERROR;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (insights.find(([_, { type }]) => type === InsightType.WARNING)) {
|
|
52
|
-
return InsightType.WARNING;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return InsightType.SUCCESS;
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
// 3/3 budget checks passed
|
|
59
|
-
// 2/3 budget checks failed
|
|
60
|
-
// 1 failed, 1 warning, 2 success
|
|
61
|
-
|
|
62
|
-
const budgetInsightTemplate = template(
|
|
63
|
-
'<%= count %>/<%= total %> budget checks <%= status %>'
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
const resolveStatus = (failedCount: number, warningCount: number): string => {
|
|
67
|
-
if (failedCount) {
|
|
68
|
-
return 'failed';
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (warningCount) {
|
|
72
|
-
return 'warned';
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return 'passed';
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
const getMessage = (insights: Array<[string, BudgetInsightMetric]>) => {
|
|
79
|
-
const total = insights.length;
|
|
80
|
-
const failedCount = insights.filter(([___, insight]) => insight.type === InsightType.ERROR).length;
|
|
81
|
-
const warningCount = insights.filter(([___, insight]) => insight.type === InsightType.WARNING).length;
|
|
82
|
-
const count = failedCount || warningCount || total;
|
|
83
|
-
const status = resolveStatus(failedCount, warningCount);
|
|
84
|
-
|
|
85
|
-
return {
|
|
86
|
-
text: budgetInsightTemplate({
|
|
87
|
-
count,
|
|
88
|
-
total,
|
|
89
|
-
status,
|
|
90
|
-
}),
|
|
91
|
-
md: budgetInsightTemplate({
|
|
92
|
-
count: `**${count}**`,
|
|
93
|
-
total: `**${total}**`,
|
|
94
|
-
status,
|
|
95
|
-
}),
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
const budgetInsightMetricTemplate = template(
|
|
100
|
-
// Add escapes for (|) to avoid lodash.template syntax errors
|
|
101
|
-
// eslint-disable-next-line no-useless-escape
|
|
102
|
-
'<%= metricLabel %> is <%= diffLabel %> budget \(<%= currentValue %> / <%= budgetValue %>\)',
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
const resolveDiffLabel = (metricBudgetInsight: BudgetInsightMetricData): string => {
|
|
106
|
-
const { currentValue, budgetValue } = metricBudgetInsight;
|
|
107
|
-
|
|
108
|
-
if (currentValue > budgetValue) {
|
|
109
|
-
return 'above';
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (currentValue < budgetValue) {
|
|
113
|
-
return 'below';
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return 'equal with';
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
const resolveBudgetInsightMetricType = (metricBudgetInsight: BudgetInsightMetricData): InsightType => {
|
|
120
|
-
if (metricBudgetInsight.failed) {
|
|
121
|
-
return InsightType.ERROR;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if (metricBudgetInsight.currentValue === metricBudgetInsight.budgetValue) {
|
|
125
|
-
return InsightType.WARNING;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
return InsightType.SUCCESS;
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
export const getExtract =
|
|
132
|
-
(source: string) => (
|
|
133
|
-
_: unknown,
|
|
134
|
-
currentExtractedData: any,
|
|
135
|
-
__: unknown,
|
|
136
|
-
options: Options = {},
|
|
137
|
-
): BudgetsInsightsOutput | null => {
|
|
138
|
-
const { budgets: budgetsOptions } = options;
|
|
139
|
-
|
|
140
|
-
if (!budgetsOptions) {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
const insights: Array<[string, BudgetInsightMetric]> = [];
|
|
145
|
-
|
|
146
|
-
budgetsOptions.forEach((budgetOption) => {
|
|
147
|
-
const { metric: sourceMetricId, value: budgetValue } = budgetOption;
|
|
148
|
-
const currentValue = get(currentExtractedData, `metrics.${sourceMetricId}.value`);
|
|
149
|
-
const metricData = getGlobalMetricType(`${source}.${sourceMetricId}`);
|
|
150
|
-
|
|
151
|
-
if (!currentValue) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
const isValueOverBudget = currentValue > budgetValue;
|
|
156
|
-
const failed = metricData.biggerIsBetter ? !isValueOverBudget : isValueOverBudget;
|
|
157
|
-
|
|
158
|
-
const budgetInsightMetricData = {
|
|
159
|
-
currentValue,
|
|
160
|
-
budgetValue,
|
|
161
|
-
failed,
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
// Message template data
|
|
165
|
-
const diffLabel = resolveDiffLabel(budgetInsightMetricData);
|
|
166
|
-
const type = resolveBudgetInsightMetricType(budgetInsightMetricData);
|
|
167
|
-
const currentFormattedValue = metricData.formatter(currentValue);
|
|
168
|
-
const budgetFormattedValue = metricData.formatter(budgetValue);
|
|
169
|
-
|
|
170
|
-
const messageText = budgetInsightMetricTemplate({
|
|
171
|
-
metricLabel: metricData.label,
|
|
172
|
-
currentValue: currentFormattedValue,
|
|
173
|
-
diffLabel,
|
|
174
|
-
budgetValue: budgetFormattedValue,
|
|
175
|
-
});
|
|
176
|
-
const messageMd = budgetInsightMetricTemplate({
|
|
177
|
-
metricLabel: `**${metricData.label}**`,
|
|
178
|
-
currentValue: `**${currentFormattedValue}**`,
|
|
179
|
-
diffLabel,
|
|
180
|
-
budgetValue: `**${budgetFormattedValue}**`,
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
insights.push([
|
|
184
|
-
sourceMetricId,
|
|
185
|
-
{
|
|
186
|
-
type,
|
|
187
|
-
message: {
|
|
188
|
-
text: messageText,
|
|
189
|
-
md: messageMd,
|
|
190
|
-
},
|
|
191
|
-
data: budgetInsightMetricData,
|
|
192
|
-
},
|
|
193
|
-
]);
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
if (insights.length === 0) {
|
|
197
|
-
return null;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
const type = resolveType(insights);
|
|
201
|
-
const message = getMessage(insights);
|
|
202
|
-
|
|
203
|
-
return {
|
|
204
|
-
insights: {
|
|
205
|
-
budgets: {
|
|
206
|
-
type,
|
|
207
|
-
message,
|
|
208
|
-
data: Object.fromEntries(insights),
|
|
209
|
-
},
|
|
210
|
-
},
|
|
211
|
-
};
|
|
212
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * as budgetInsights from './budgets-insights';
|
package/src/types.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as constants from './constants';
|
|
2
|
-
|
|
3
|
-
/** Insight v2 structure */
|
|
4
|
-
export interface Insight {
|
|
5
|
-
type: constants.InsightType;
|
|
6
|
-
message: {
|
|
7
|
-
/** Insight message text format */
|
|
8
|
-
text: string;
|
|
9
|
-
/** Insight message markdown format */
|
|
10
|
-
md: string;
|
|
11
|
-
};
|
|
12
|
-
/** Insight specific data */
|
|
13
|
-
data: unknown;
|
|
14
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as types from '../types';
|
|
2
|
-
import { InsightType } from '../constants';
|
|
3
|
-
interface OptionBudgetMetric {
|
|
4
|
-
metric: string;
|
|
5
|
-
value: number;
|
|
6
|
-
}
|
|
7
|
-
interface Options {
|
|
8
|
-
budgets?: Array<OptionBudgetMetric>;
|
|
9
|
-
}
|
|
10
|
-
interface BudgetInsightMetricData {
|
|
11
|
-
currentValue: number;
|
|
12
|
-
budgetValue: number;
|
|
13
|
-
failed: boolean;
|
|
14
|
-
}
|
|
15
|
-
interface BudgetInsightMetric {
|
|
16
|
-
type: InsightType;
|
|
17
|
-
message: {
|
|
18
|
-
text: string;
|
|
19
|
-
md: string;
|
|
20
|
-
};
|
|
21
|
-
data: BudgetInsightMetricData;
|
|
22
|
-
}
|
|
23
|
-
interface BudgetInsight extends types.Insight {
|
|
24
|
-
data: {
|
|
25
|
-
[metricId: string]: BudgetInsightMetric;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
interface BudgetsInsightsOutput {
|
|
29
|
-
insights: {
|
|
30
|
-
budgets: BudgetInsight;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
export declare const getExtract: (source: string) => (_: unknown, currentExtractedData: any, __: unknown, options?: Options) => BudgetsInsightsOutput | null;
|
|
34
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * as budgetInsights from './budgets-insights';
|