release: WRNexusJS 0.3.0
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
export interface PerformanceBudgets {
|
||||
routeJsBytes?: number;
|
||||
routeCssBytes?: number;
|
||||
htmlBytes?: number;
|
||||
imageBytes?: number;
|
||||
hydrationMs?: number;
|
||||
serverRenderMs?: number;
|
||||
}
|
||||
|
||||
export interface PerformanceMeasurement {
|
||||
routeJsBytes?: number;
|
||||
routeCssBytes?: number;
|
||||
htmlBytes?: number;
|
||||
imageBytes?: number;
|
||||
hydrationMs?: number;
|
||||
serverRenderMs?: number;
|
||||
}
|
||||
|
||||
export interface BudgetViolation {
|
||||
metric: keyof PerformanceBudgets;
|
||||
budget: number;
|
||||
actual: number;
|
||||
overBy: number;
|
||||
}
|
||||
|
||||
export function checkPerformanceBudgets(
|
||||
budgets: PerformanceBudgets,
|
||||
measurement: PerformanceMeasurement,
|
||||
): BudgetViolation[] {
|
||||
const violations: BudgetViolation[] = [];
|
||||
for (const metric of Object.keys(budgets) as Array<keyof PerformanceBudgets>) {
|
||||
const budget = budgets[metric];
|
||||
const actual = measurement[metric];
|
||||
if (budget === undefined || actual === undefined || actual <= budget) continue;
|
||||
violations.push({ metric, budget, actual, overBy: actual - budget });
|
||||
}
|
||||
return violations;
|
||||
}
|
||||
Reference in New Issue
Block a user