@svelte-vitals/core 0.21.0 → 0.22.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/dist/index.d.ts +4 -0
- package/dist/index.js +14 -6
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -743,9 +743,13 @@ declare function escapeHtml(s: string): string;
|
|
|
743
743
|
declare function safeHref(url: string): string | null;
|
|
744
744
|
declare function buildHtmlDocument(report: JsonReport, meta: {
|
|
745
745
|
version: string;
|
|
746
|
+
coreVersion?: string;
|
|
747
|
+
}, opts?: {
|
|
748
|
+
routeBadges?: Record<string, 'measured' | 'static'>;
|
|
746
749
|
}): string;
|
|
747
750
|
declare function formatHtmlReport(results: Result[], config: Config, meta: {
|
|
748
751
|
version: string;
|
|
752
|
+
coreVersion?: string;
|
|
749
753
|
}): string;
|
|
750
754
|
|
|
751
755
|
/** Drop rules disabled via config (design §6). */
|
package/dist/index.js
CHANGED
|
@@ -2763,7 +2763,8 @@ function renderFinding(issue) {
|
|
|
2763
2763
|
}
|
|
2764
2764
|
function renderTopbar(report, meta) {
|
|
2765
2765
|
const findings = report.routes.reduce((n, r) => n + r.issues.length, 0) + report.siteIssues.length;
|
|
2766
|
-
|
|
2766
|
+
const core = meta.coreVersion ? `<span title="@svelte-vitals/core version">core v${escapeHtml(meta.coreVersion)}</span>` : "";
|
|
2767
|
+
return `<header class="topbar"><div class="brand"><span class="bolt">\u21AF</span>svelte-<span class="v">vitals</span></div><div class="meta"><span>v${escapeHtml(meta.version)}</span>` + core + `<span>${report.routes.length} routes</span><span>${findings} findings</span></div></header>`;
|
|
2767
2768
|
}
|
|
2768
2769
|
function renderHero(report) {
|
|
2769
2770
|
const C = 2 * Math.PI * 58;
|
|
@@ -2780,7 +2781,8 @@ function renderHero(report) {
|
|
|
2780
2781
|
}).join("");
|
|
2781
2782
|
return `<section class="hero"><div class="gauge"><svg width="132" height="132" viewBox="0 0 132 132" aria-hidden="true"><circle cx="66" cy="66" r="58" fill="none" stroke="#e4e7ec" stroke-width="11"></circle><circle id="arc" cx="66" cy="66" r="58" fill="none" stroke="${BAND_COLOR[hb]}" stroke-width="11" stroke-linecap="round" stroke-dasharray="${C.toFixed(1)}" stroke-dashoffset="${offset}"></circle></svg><div class="num"><strong id="hnum">${report.score}</strong><span>Health</span></div></div><div class="readout"><div class="eyebrow">SvelteKit \xB7 SEO & Performance</div><div class="tallies"><span class="tally"><span class="dot crit"></span>Critical <span class="n">${s.critical}</span></span><span class="tally"><span class="dot warn"></span>Warning <span class="n">${s.warning}</span></span><span class="tally"><span class="dot info"></span>Info <span class="n">${s.info}</span></span><span class="tally"><span class="dot pass"></span>Passed <span class="n">${s.passed}</span></span>` + dynNote + `</div><div class="cats">${cats}</div></div></section>`;
|
|
2782
2783
|
}
|
|
2783
|
-
|
|
2784
|
+
var ROUTE_BADGES = ["measured", "static"];
|
|
2785
|
+
function renderRoutes(report, routeBadges) {
|
|
2784
2786
|
if (report.routes.length === 0) return "";
|
|
2785
2787
|
const rows = report.routes.map((r) => {
|
|
2786
2788
|
const b = scoreBand(r.score);
|
|
@@ -2793,7 +2795,10 @@ function renderRoutes(report) {
|
|
|
2793
2795
|
if (info) parts.push(`${info} info`);
|
|
2794
2796
|
const sum = parts.length ? parts.join(" \xB7 ") : '<span class="none">no issues</span>';
|
|
2795
2797
|
const body = r.issues.length ? r.issues.map(renderFinding).join("") : '<p class="empty">No issues found on this route.</p>';
|
|
2796
|
-
|
|
2798
|
+
const rawBadge = routeBadges?.[r.route];
|
|
2799
|
+
const badge = rawBadge && ROUTE_BADGES.includes(rawBadge) ? rawBadge : void 0;
|
|
2800
|
+
const badgeHtml = badge ? ` <span class="badge badge-${badge}">${escapeHtml(badge)}</span>` : "";
|
|
2801
|
+
return `<details class="route" id="${slug(r.route)}" data-score="${r.score}"${r.issues.length ? " open" : ""}><summary><span class="route-name"><span class="path">${escapeHtml(r.route)}</span>${badgeHtml}</span><span class="issue-sum">${sum}</span><span class="score-chip"><span class="ring" style="background:${BAND_COLOR[b]}"></span>${r.score}</span><span class="chev">\u203A</span></summary><div class="route-body">${body}</div></details>`;
|
|
2797
2802
|
}).join("");
|
|
2798
2803
|
return `<section class="section"><h2>Routes</h2><div class="routes">${rows}</div></section>`;
|
|
2799
2804
|
}
|
|
@@ -2846,8 +2851,11 @@ body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);
|
|
|
2846
2851
|
.route>summary{display:grid;grid-template-columns:1fr auto auto auto;gap:16px;align-items:center;padding:13px 16px;cursor:pointer;list-style:none}
|
|
2847
2852
|
.route>summary::-webkit-details-marker{display:none}
|
|
2848
2853
|
.route>summary:hover{background:#fbfcfd}
|
|
2849
|
-
.route-name{font-family:var(--mono);font-size:13.5px;min-width:0}
|
|
2854
|
+
.route-name{font-family:var(--mono);font-size:13.5px;min-width:0;display:flex;align-items:center;gap:8px}
|
|
2850
2855
|
.route-name .path{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
2856
|
+
.badge{font-family:var(--sans);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:999px;flex-shrink:0}
|
|
2857
|
+
.badge-measured{background:rgba(47,169,104,.14);color:var(--good)}
|
|
2858
|
+
.badge-static{background:rgba(140,149,163,.18);color:var(--muted)}
|
|
2851
2859
|
.issue-sum{font-size:12.5px;color:var(--muted);font-family:var(--mono);white-space:nowrap}.issue-sum .none{color:var(--good)}
|
|
2852
2860
|
.score-chip{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-weight:600;font-variant-numeric:tabular-nums;font-size:14px}
|
|
2853
2861
|
.score-chip .ring{width:10px;height:10px;border-radius:50%}
|
|
@@ -2909,8 +2917,8 @@ var SCRIPT = `
|
|
|
2909
2917
|
});
|
|
2910
2918
|
})();
|
|
2911
2919
|
`;
|
|
2912
|
-
function buildHtmlDocument(report, meta) {
|
|
2913
|
-
return `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>svelte-vitals report</title><style>${STYLE}</style></head><body><div class="wrap">` + renderTopbar(report, meta) + renderHero(report) + renderFilters(report) + renderRoutes(report) + renderSiteChecks(report) + `<footer class="foot"><span>Generated by svelte-vitals \xB7 static analysis, no browser</span><span>oekazuma.github.io/svelte-vitals</span></footer></div><script>${SCRIPT}</script></body></html>`;
|
|
2920
|
+
function buildHtmlDocument(report, meta, opts) {
|
|
2921
|
+
return `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>svelte-vitals report</title><style>${STYLE}</style></head><body><div class="wrap">` + renderTopbar(report, meta) + renderHero(report) + renderFilters(report) + renderRoutes(report, opts?.routeBadges) + renderSiteChecks(report) + `<footer class="foot"><span>Generated by svelte-vitals \xB7 static analysis, no browser</span><span>oekazuma.github.io/svelte-vitals</span></footer></div><script>${SCRIPT}</script></body></html>`;
|
|
2914
2922
|
}
|
|
2915
2923
|
function formatHtmlReport(results, config, meta) {
|
|
2916
2924
|
return buildHtmlDocument(buildJsonReport(results, config, meta), meta);
|