svelte-vitals 0.31.0 → 0.32.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/bin.js +16 -7
- package/dist/{chunk-3YO2A3YF.js → chunk-CWCO6A5B.js} +33 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/bin.js
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
readCoreVersion,
|
|
10
10
|
readPackageVersion,
|
|
11
11
|
run
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-CWCO6A5B.js";
|
|
13
13
|
|
|
14
14
|
// src/bin.ts
|
|
15
15
|
import mri3 from "mri";
|
|
@@ -341,6 +341,12 @@ function isConfigTargetId(id) {
|
|
|
341
341
|
return CONFIG_TARGETS.some((t) => t.id === id);
|
|
342
342
|
}
|
|
343
343
|
|
|
344
|
+
// src/ci/action-pin-comment.ts
|
|
345
|
+
function actionPinComment(version) {
|
|
346
|
+
return `action-v${version}`;
|
|
347
|
+
}
|
|
348
|
+
var ACTION_PIN_COMMENT_RE = /#\s*(?:action-v|@svelte-vitals\/action@)(\S+)/;
|
|
349
|
+
|
|
344
350
|
// src/ci/workflow.ts
|
|
345
351
|
var WORKFLOW_PATH = ".github/workflows/svelte-vitals.yml";
|
|
346
352
|
var CHECKOUT_SHA = "9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0";
|
|
@@ -371,7 +377,7 @@ function buildWorkflowYaml(opts) {
|
|
|
371
377
|
` - uses: actions/checkout@${CHECKOUT_SHA} # ${CHECKOUT_VERSION}`,
|
|
372
378
|
" with:",
|
|
373
379
|
" fetch-depth: 0",
|
|
374
|
-
` - uses: oekazuma/svelte-vitals/packages/action@${actionSha} #
|
|
380
|
+
` - uses: oekazuma/svelte-vitals/packages/action@${actionSha} # ${actionPinComment(actionVersion)}`,
|
|
375
381
|
" with:",
|
|
376
382
|
" diff: origin/${{ github.base_ref }}",
|
|
377
383
|
" baseline: origin/${{ github.base_ref }}",
|
|
@@ -998,8 +1004,8 @@ function readInstalledViteVersion(io) {
|
|
|
998
1004
|
}
|
|
999
1005
|
|
|
1000
1006
|
// src/ci/action-pin.generated.ts
|
|
1001
|
-
var ACTION_SHA = "
|
|
1002
|
-
var ACTION_VERSION = "0.3.
|
|
1007
|
+
var ACTION_SHA = "a3af7b5cdb026fc3f6e685b87e964b5190583960";
|
|
1008
|
+
var ACTION_VERSION = "0.3.8";
|
|
1003
1009
|
|
|
1004
1010
|
// src/install/index.ts
|
|
1005
1011
|
function detectPackageManagerNear(io, appDir) {
|
|
@@ -1572,6 +1578,7 @@ import mri2 from "mri";
|
|
|
1572
1578
|
|
|
1573
1579
|
// src/ci/upgrade.ts
|
|
1574
1580
|
var ACTION_USES_LINE = /^(?<indent>\s*-\s*uses:\s*(?:&\S+\s+)?oekazuma\/svelte-vitals\/packages\/action@)(?<ref>[^\s#]+)(?<comment>\s*#.*)?$/;
|
|
1581
|
+
var LEGACY_COMMENT = /#\s*@svelte-vitals\/action@/;
|
|
1575
1582
|
function upgradeActionPin(content, sha, version) {
|
|
1576
1583
|
const lines = content.split("\n");
|
|
1577
1584
|
let replaced = 0;
|
|
@@ -1583,13 +1590,15 @@ function upgradeActionPin(content, sha, version) {
|
|
|
1583
1590
|
if (!match || !match.groups) return line;
|
|
1584
1591
|
const { indent: indent2, ref } = match.groups;
|
|
1585
1592
|
if (indent2 === void 0 || ref === void 0) return line;
|
|
1586
|
-
|
|
1593
|
+
const comment = match.groups.comment ?? "";
|
|
1594
|
+
const commentMatch = ACTION_PIN_COMMENT_RE.exec(comment);
|
|
1595
|
+
const isCanonicalComment = commentMatch !== null && !LEGACY_COMMENT.test(comment);
|
|
1596
|
+
if (ref === sha && isCanonicalComment) return line;
|
|
1587
1597
|
if (from === void 0) {
|
|
1588
|
-
const commentMatch = /#\s*@svelte-vitals\/action@(\S+)/.exec(match.groups.comment ?? "");
|
|
1589
1598
|
from = commentMatch ? commentMatch[1] : ref.slice(0, 7);
|
|
1590
1599
|
}
|
|
1591
1600
|
replaced += 1;
|
|
1592
|
-
return `${indent2}${sha} #
|
|
1601
|
+
return `${indent2}${sha} # ${actionPinComment(version)}${eol}`;
|
|
1593
1602
|
});
|
|
1594
1603
|
if (replaced === 0) {
|
|
1595
1604
|
const hasAnyReference = lines.some((line) => ACTION_USES_LINE.test(line.endsWith("\r") ? line.slice(0, -1) : line));
|
|
@@ -63,6 +63,38 @@ var ProjectError = class extends Error {
|
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
var ROUTES_DIR = "src/routes";
|
|
66
|
+
var MIN_SVELTE_MAJOR = 5;
|
|
67
|
+
var MIN_KIT_MAJOR = 2;
|
|
68
|
+
function leadingMajor(range) {
|
|
69
|
+
const m = range ? /^(?:[\^~]|>=|<=|>|<|=)?\s*(\d+)/.exec(range.trim()) : null;
|
|
70
|
+
return m ? Number(m[1]) : void 0;
|
|
71
|
+
}
|
|
72
|
+
async function checkVersionFloor(rt, cwd) {
|
|
73
|
+
const pkgPath = rt.join(cwd, "package.json");
|
|
74
|
+
if (!await rt.exists(pkgPath)) return [];
|
|
75
|
+
let pkg;
|
|
76
|
+
try {
|
|
77
|
+
pkg = JSON.parse(await rt.readFile(pkgPath));
|
|
78
|
+
} catch {
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
const warnings = [];
|
|
82
|
+
const svelteRange = pkg.dependencies?.svelte ?? pkg.devDependencies?.svelte;
|
|
83
|
+
const svelteMajor = leadingMajor(svelteRange);
|
|
84
|
+
if (svelteMajor !== void 0 && svelteMajor < MIN_SVELTE_MAJOR) {
|
|
85
|
+
warnings.push(
|
|
86
|
+
`this project declares svelte "${svelteRange}", but rules assume Svelte ${MIN_SVELTE_MAJOR}+ (runes) \u2014 findings may miss the legacy (export let / $:) equivalent of runes-only checks.`
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
const kitRange = pkg.dependencies?.["@sveltejs/kit"] ?? pkg.devDependencies?.["@sveltejs/kit"];
|
|
90
|
+
const kitMajor = leadingMajor(kitRange);
|
|
91
|
+
if (kitMajor !== void 0 && kitMajor < MIN_KIT_MAJOR) {
|
|
92
|
+
warnings.push(
|
|
93
|
+
`this project declares @sveltejs/kit "${kitRange}", but rules assume SvelteKit ${MIN_KIT_MAJOR}+ \u2014 some checks may not apply.`
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
return warnings;
|
|
97
|
+
}
|
|
66
98
|
async function detectProject(rt, cwd) {
|
|
67
99
|
const pkgPath = rt.join(cwd, "package.json");
|
|
68
100
|
let hasKitDep = false;
|
|
@@ -1376,7 +1408,6 @@ async function analyzeProject(opts = {}) {
|
|
|
1376
1408
|
const rt = createNodeRuntime();
|
|
1377
1409
|
const loaded = await loadConfigFile(cwd);
|
|
1378
1410
|
const file = loaded?.config;
|
|
1379
|
-
const warnings = loaded?.warnings ?? [];
|
|
1380
1411
|
const weights = opts.weights ?? file?.weights;
|
|
1381
1412
|
const config = defineConfig({
|
|
1382
1413
|
treatDynamicAs: opts.treatDynamicAs ?? file?.treatDynamicAs ?? "pass",
|
|
@@ -1387,6 +1418,7 @@ async function analyzeProject(opts = {}) {
|
|
|
1387
1418
|
...file?.overrides !== void 0 ? { overrides: file.overrides } : {}
|
|
1388
1419
|
});
|
|
1389
1420
|
await detectProject(rt, cwd);
|
|
1421
|
+
const warnings = [...loaded?.warnings ?? [], ...await checkVersionFloor(rt, cwd)];
|
|
1390
1422
|
const matches = routeMatcher(opts.route);
|
|
1391
1423
|
const collected = await collectRoutes(rt, cwd, config, opts.parseCache);
|
|
1392
1424
|
const heads = collected.heads.filter((h) => matches(h.route));
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svelte-vitals",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "A SvelteKit SEO checker — not a runtime Web Vitals reporter. Static analysis of your routes' head metadata.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"smol-toml": "^1.7.0",
|
|
47
47
|
"svelte": "^5.56.6",
|
|
48
48
|
"tinyglobby": "^0.2.17",
|
|
49
|
-
"@svelte-vitals/core": "0.
|
|
49
|
+
"@svelte-vitals/core": "0.29.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/estree": "^1.0.9",
|