@svelte-vitals/core 0.30.0 → 0.31.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/dist/index.d.ts +200 -14
- package/dist/index.js +774 -65
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,33 @@ interface Detection {
|
|
|
17
17
|
presence: Presence;
|
|
18
18
|
value: Value;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* One compiled SvelteKit alias entry, in the order Kit builds them (`get_config_aliases` in
|
|
22
|
+
* `@sveltejs/kit/src/exports/vite/utils.js`): `$lib` first, then `kit.alias` in declaration
|
|
23
|
+
* order. Resolution takes the FIRST matching entry, exactly as Vite's alias plugin does, so
|
|
24
|
+
* **position is precedence** — the list is never sorted and a longer `find` never wins on
|
|
25
|
+
* length alone.
|
|
26
|
+
*/
|
|
27
|
+
interface KitAlias {
|
|
28
|
+
/** The alias key, with any trailing `/*` removed. */
|
|
29
|
+
find: string;
|
|
30
|
+
/**
|
|
31
|
+
* The project-relative target: posixified, with any trailing `/*` and any trailing slashes
|
|
32
|
+
* removed. `null` when the config's value is not a string literal — such an entry still
|
|
33
|
+
* matches (holding its position and its mode) but resolves to undefined, so a specifier we
|
|
34
|
+
* cannot resolve stays unresolved instead of falling through to a later entry.
|
|
35
|
+
*/
|
|
36
|
+
replacement: string | null;
|
|
37
|
+
/**
|
|
38
|
+
* How `find` matches a specifier, mirroring Kit's three compiled entry shapes:
|
|
39
|
+
* - `prefix` — `spec === find` or `spec.startsWith(find + '/')`; a plain key.
|
|
40
|
+
* - `contents` — `spec.startsWith(find + '/')` only; from a `key/*` key, which Kit
|
|
41
|
+
* documents as matching "the contents of a directory, not the directory itself".
|
|
42
|
+
* - `exact` — `spec === find` only; a plain key whose `key/*` form is ALSO declared, which
|
|
43
|
+
* is how Kit stops the plain key from swallowing the nested specifiers.
|
|
44
|
+
*/
|
|
45
|
+
match: 'prefix' | 'contents' | 'exact';
|
|
46
|
+
}
|
|
20
47
|
/** Project-wide facts precomputed by the runtime layer for project-scope rules (design §10). */
|
|
21
48
|
interface Project {
|
|
22
49
|
hasRobotsTxt: boolean;
|
|
@@ -47,6 +74,13 @@ interface Project {
|
|
|
47
74
|
value?: string;
|
|
48
75
|
file: string;
|
|
49
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* The project's compiled SvelteKit alias entries, in Kit's own order (`$lib` first), read from
|
|
79
|
+
* `svelte.config.{js,ts}`. Absent means no config was read — resolution then falls back to
|
|
80
|
+
* `$lib` → `src/lib`, which is what this analyzer assumed unconditionally before. A collected
|
|
81
|
+
* list is never empty: `$lib` is always prepended.
|
|
82
|
+
*/
|
|
83
|
+
kitAliases?: KitAlias[];
|
|
50
84
|
}
|
|
51
85
|
declare const defaultProject: Project;
|
|
52
86
|
/** A concrete, agent-actionable remediation for a finding (design §10, issue #18). */
|
|
@@ -152,7 +186,21 @@ interface Runtime {
|
|
|
152
186
|
readFile(path: string): Promise<string>;
|
|
153
187
|
/** Whether a path exists. */
|
|
154
188
|
exists(path: string): Promise<boolean>;
|
|
155
|
-
/**
|
|
189
|
+
/**
|
|
190
|
+
* Paths matching `pattern`, relative to `cwd`.
|
|
191
|
+
*
|
|
192
|
+
* **Dot files and dot directories are excluded**, and an adapter must keep it that way: the
|
|
193
|
+
* directory-shaped Architecture rules derive their directory set from these paths, and one of them
|
|
194
|
+
* enumerates a parent's children exhaustively, so a `.server/` appearing here would be reported as
|
|
195
|
+
* an undeclared name. Both shipped adapters pass `dot: false`.
|
|
196
|
+
*
|
|
197
|
+
* **Every returned path is a file, never a directory**, and an adapter must keep that true too:
|
|
198
|
+
* `architecture/reserved-directory-names`' unit test takes a directory's immediate children from
|
|
199
|
+
* this same inventory and asks whether one of them is a file named after the directory, so an
|
|
200
|
+
* adapter that let a directory through here would let a bare `Card/Card` satisfy that test as if it
|
|
201
|
+
* were an entry file. Both shipped adapters get this for free from their glob library's default,
|
|
202
|
+
* which returns files only unless asked to include directories.
|
|
203
|
+
*/
|
|
156
204
|
glob(pattern: string, cwd: string): Promise<string[]>;
|
|
157
205
|
/** Join path segments without depending on `node:path`. */
|
|
158
206
|
join(...parts: string[]): string;
|
|
@@ -363,10 +411,17 @@ interface ComponentFacts {
|
|
|
363
411
|
propCount: number;
|
|
364
412
|
/** Module specifiers of every `import` in the instance + module scripts (performance/heavy-import). */
|
|
365
413
|
imports: string[];
|
|
366
|
-
/**
|
|
414
|
+
/**
|
|
415
|
+
* Module specifiers of every `import`, each with its source line (performance/heavy-import,
|
|
416
|
+
* architecture/route-component-import). `type` marks a declaration that contributes **no runtime
|
|
417
|
+
* value binding** — either `import type …`, or one whose every specifier is inline-typed
|
|
418
|
+
* (`import { type A } from …`). A specifier-less side-effect import is not marked: it still loads
|
|
419
|
+
* the module. Optional, so existing external constructors of `ComponentFacts` are unaffected.
|
|
420
|
+
*/
|
|
367
421
|
importSpans: {
|
|
368
422
|
source: string;
|
|
369
423
|
line: number;
|
|
424
|
+
type?: true;
|
|
370
425
|
}[];
|
|
371
426
|
/** Value `import * as X from '<bare pkg>'` namespace imports (type-only excluded) — performance/namespace-import. */
|
|
372
427
|
namespaceImports: {
|
|
@@ -448,6 +503,21 @@ declare function emptyComponentFacts(file: string): ComponentFacts;
|
|
|
448
503
|
*/
|
|
449
504
|
declare function collectComponentFacts(rt: Runtime, cwd: string): Promise<ComponentFacts[]>;
|
|
450
505
|
|
|
506
|
+
/**
|
|
507
|
+
* Every file under `src/`, as project-relative paths, sorted. Paths only — nothing is
|
|
508
|
+
* read, so this is the cheaper of the two passes over `src/` (the component collector
|
|
509
|
+
* already walks the same tree and reads every `.svelte`).
|
|
510
|
+
*
|
|
511
|
+
* Directory-shaped rules derive their directory set from these paths' ancestor prefixes
|
|
512
|
+
* rather than globbing a second time; see `architecture/unit-entry-file`. The list is
|
|
513
|
+
* sorted so anything that picks "the first file under a directory" is deterministic.
|
|
514
|
+
*
|
|
515
|
+
* Two properties of the result the directory-shaped rules depend on: a directory containing no file
|
|
516
|
+
* at any depth does not appear among these paths' ancestor prefixes and so does not exist as far as
|
|
517
|
+
* those rules are concerned, and dot directories never appear at all (see `Runtime.glob`).
|
|
518
|
+
*/
|
|
519
|
+
declare function collectSourceFiles(rt: Runtime, cwd: string): Promise<string[]>;
|
|
520
|
+
|
|
451
521
|
/**
|
|
452
522
|
* Facts parsed from one SvelteKit route/hooks file for the SSR shared-state rules
|
|
453
523
|
* (the security kit-module rules). Collected by `collectKitModuleFacts` (static/CLI + vite build mode).
|
|
@@ -514,19 +584,21 @@ interface KitModuleFacts {
|
|
|
514
584
|
|
|
515
585
|
/**
|
|
516
586
|
* Resolve an import specifier to a repo-relative `.svelte.ts`/`.svelte.js` path, or
|
|
517
|
-
* undefined when it cannot be a runes module:
|
|
518
|
-
*
|
|
587
|
+
* undefined when it cannot be a runes module: delegates to `resolveRepoLocalPath` with
|
|
588
|
+
* `aliases` (defaulting to `$lib` → `src/lib` when omitted), so a project's declared
|
|
589
|
+
* `kit.alias`/`kit.files.lib` resolve here exactly as they do at rule time; `./`/`../`
|
|
590
|
+
* resolve against the importing file's directory; bare packages, unmatched aliases, and
|
|
519
591
|
* a relative specifier whose `..` segments escape the repo root are skipped. An
|
|
520
592
|
* extensionless `…/x.svelte` specifier canonicalises to `….svelte.ts` (security/shared-state-import also
|
|
521
593
|
* tries the `.js` sibling when matching).
|
|
522
594
|
*/
|
|
523
|
-
declare function resolveRunesModuleSpecifier(spec: string, importerFile: string): string | undefined;
|
|
595
|
+
declare function resolveRunesModuleSpecifier(spec: string, importerFile: string, aliases?: readonly KitAlias[]): string | undefined;
|
|
524
596
|
/**
|
|
525
597
|
* Parse one SvelteKit route/hooks file's SSR shared-state facts (the security kit-module rules). Uses
|
|
526
598
|
* the shared wrap parser (`parseModuleProgram`), so reported lines subtract the
|
|
527
599
|
* 1-line wrap prefix; suppressions are scanned on the unwrapped source.
|
|
528
600
|
*/
|
|
529
|
-
declare function parseKitModuleFacts(source: string, filename: string): Omit<KitModuleFacts, 'file' | 'kind'>;
|
|
601
|
+
declare function parseKitModuleFacts(source: string, filename: string, aliases?: readonly KitAlias[]): Omit<KitModuleFacts, 'file' | 'kind'>;
|
|
530
602
|
|
|
531
603
|
/** Fallback facts for a Kit file that fails to read or parse (dev tooling must never throw). */
|
|
532
604
|
declare function emptyKitModuleFacts(file: string, kind: KitModuleFacts['kind']): KitModuleFacts;
|
|
@@ -536,8 +608,11 @@ declare function emptyKitModuleFacts(file: string, kind: KitModuleFacts['kind'])
|
|
|
536
608
|
* `src/hooks.server`. `src/lib/server/**` is deliberately NOT scanned — legitimate
|
|
537
609
|
* module singletons (DB connections, clients) live there (design). A file that
|
|
538
610
|
* fails to read or parse contributes empty facts instead of aborting the scan.
|
|
611
|
+
*
|
|
612
|
+
* `aliases` is the project's compiled alias list (`Project.kitAliases`); omitted,
|
|
613
|
+
* specifiers resolve through `$lib` → `src/lib` only.
|
|
539
614
|
*/
|
|
540
|
-
declare function collectKitModuleFacts(rt: Runtime, cwd: string): Promise<KitModuleFacts[]>;
|
|
615
|
+
declare function collectKitModuleFacts(rt: Runtime, cwd: string, aliases?: readonly KitAlias[]): Promise<KitModuleFacts[]>;
|
|
541
616
|
|
|
542
617
|
/**
|
|
543
618
|
* The `build: { minify: false }` override, when present as a literal: returns the
|
|
@@ -566,6 +641,44 @@ type ViteKitConfigResult =
|
|
|
566
641
|
value?: string;
|
|
567
642
|
};
|
|
568
643
|
};
|
|
644
|
+
/** `kit.alias` and `kit.files.lib` as written, before Kit compiles them into ordered entries. */
|
|
645
|
+
type RawKitAliases = {
|
|
646
|
+
/**
|
|
647
|
+
* `kit.alias` entries in declaration order, `value: null` where the config's value is not a
|
|
648
|
+
* string literal. **Undefined means the key set is unknowable** — a spread or a computed key
|
|
649
|
+
* puts an unknown key at a known position, and an unknown key could shadow anything after it,
|
|
650
|
+
* with no `find` to record that with. The caller then discards every user entry.
|
|
651
|
+
*/
|
|
652
|
+
entries?: {
|
|
653
|
+
key: string;
|
|
654
|
+
value: string | null;
|
|
655
|
+
}[];
|
|
656
|
+
/**
|
|
657
|
+
* `kit.files.lib`, in three distinct states: **absent** (`undefined`) — there is no `lib`
|
|
658
|
+
* property, or `files` itself does not resolve to an object literal; a **literal** (the
|
|
659
|
+
* string) — `files.lib` is a string literal; **present but unreadable** (`null`) — the `lib`
|
|
660
|
+
* property exists but its value is not statically a string (e.g. a computed expression). The
|
|
661
|
+
* `null` state must not collapse into "absent": the caller cannot fall back to `src/lib`
|
|
662
|
+
* without risking a wrong answer, because the project may have moved `$lib` to something this
|
|
663
|
+
* parser simply couldn't read.
|
|
664
|
+
*/
|
|
665
|
+
filesLib?: string | null;
|
|
666
|
+
};
|
|
667
|
+
/** `kit.alias` and `kit.files.lib` from a `svelte.config.{js,ts}` source. */
|
|
668
|
+
declare function findKitAliasesInSvelteConfig(source: string): RawKitAliases;
|
|
669
|
+
/**
|
|
670
|
+
* The project's compiled alias list, following SvelteKit's config precedence: options passed to
|
|
671
|
+
* the `sveltekit()` Vite plugin make `svelte.config` irrelevant (Kit logs "svelte.config.js is
|
|
672
|
+
* ignored when options are passed via your Vite config"), so aliases are read from
|
|
673
|
+
* `svelte.config` only when the Vite config carries no plugin config. Reading `kit.alias` out of
|
|
674
|
+
* a plugin config is deliberately not done — that costs reach, not correctness, and such a
|
|
675
|
+
* project keeps the resolver's default `$lib` behaviour. Undefined means "no config was read".
|
|
676
|
+
*/
|
|
677
|
+
declare function resolveKitAliases(viteConfig: {
|
|
678
|
+
source: string;
|
|
679
|
+
} | undefined, svelteConfig: {
|
|
680
|
+
source: string;
|
|
681
|
+
} | undefined): KitAlias[] | undefined;
|
|
569
682
|
/** `kit.paths.base` from a `svelte.config.{js,ts}` source. */
|
|
570
683
|
declare function findKitPathsBaseInSvelteConfig(source: string): {
|
|
571
684
|
value?: string;
|
|
@@ -716,6 +829,23 @@ declare function intOption(options: RuleOptions, key: string, fallback?: number)
|
|
|
716
829
|
declare function listOption(options: RuleOptions, key: string): string[];
|
|
717
830
|
/** As `intOption`, for a `string-map` option. */
|
|
718
831
|
declare function mapOption(options: RuleOptions, key: string): Record<string, string>;
|
|
832
|
+
/**
|
|
833
|
+
* Whether any config layer so much as mentions `ruleId` — its `rules` entry, or any `overrides`
|
|
834
|
+
* entry's.
|
|
835
|
+
*
|
|
836
|
+
* A rule that is inert until declared can return early on `false` instead of resolving options once
|
|
837
|
+
* per target and discarding the result. That waste is not hypothetical: the three directory-shaped
|
|
838
|
+
* Architecture rules resolve per directory, so an unconfigured project pays it for every directory
|
|
839
|
+
* under `src/` three times over, on every dev-server save. Measured 2026-07-30 over a synthetic tree
|
|
840
|
+
* of 1,523 directories: 5.4 ms per analysis, for rules that are off by default and therefore produce
|
|
841
|
+
* nothing.
|
|
842
|
+
*
|
|
843
|
+
* Deliberately conservative. It asks only whether the rule is *mentioned*, not whether the mention
|
|
844
|
+
* resolves to a non-empty value, so a `'off'` severity with no options still answers `true` and the
|
|
845
|
+
* caller does its normal work. A cheaper-but-wrong version of this would make a rule skip work it
|
|
846
|
+
* owed; this one can only ever fail to save time.
|
|
847
|
+
*/
|
|
848
|
+
declare function isMentionedAnywhere(config: Config, ruleId: string): boolean;
|
|
719
849
|
/**
|
|
720
850
|
* Effective options for a rule at a target: built-in defaults, then
|
|
721
851
|
* `config.rules[ruleId].options`, then every matching `config.overrides` entry
|
|
@@ -799,6 +929,12 @@ interface RuleContext {
|
|
|
799
929
|
components?: ComponentFacts[];
|
|
800
930
|
/** Per-file SvelteKit route/hooks facts for the SSR shared-state rules (static/CLI + vite build mode only). */
|
|
801
931
|
kitModules?: KitModuleFacts[];
|
|
932
|
+
/**
|
|
933
|
+
* Every file under `src/`, as project-relative paths, for directory-shaped Architecture rules
|
|
934
|
+
* (static/CLI + vite build mode only). Sorted — see `collectSourceFiles`, which is what both
|
|
935
|
+
* adapters use to build it.
|
|
936
|
+
*/
|
|
937
|
+
sourceFiles?: string[];
|
|
802
938
|
project: Project;
|
|
803
939
|
config: Config;
|
|
804
940
|
}
|
|
@@ -810,9 +946,9 @@ interface Rule {
|
|
|
810
946
|
severity: Severity;
|
|
811
947
|
/** 'route' = evaluated per route, 'project' = site-wide (design §10, §12). */
|
|
812
948
|
scope: Scope;
|
|
813
|
-
/** Why this rule matters — one or two sentences, surfaced by
|
|
949
|
+
/** Why this rule matters — one or two sentences, surfaced by `svelte-vitals explain` (issue #24). */
|
|
814
950
|
rationale: string;
|
|
815
|
-
/** Canonical remediation template, shared by findings and
|
|
951
|
+
/** Canonical remediation template, shared by findings and `svelte-vitals explain` (issue #24). */
|
|
816
952
|
fix?: Fix;
|
|
817
953
|
/** Configurable options for this rule; absent means the rule takes none. */
|
|
818
954
|
options?: RuleOptionsSpec;
|
|
@@ -1073,6 +1209,49 @@ declare const architecturePropCount: Rule;
|
|
|
1073
1209
|
*/
|
|
1074
1210
|
declare const architecturePrivateScopeImport: Rule;
|
|
1075
1211
|
|
|
1212
|
+
/**
|
|
1213
|
+
* architecture/unit-entry-file — a directory declared to be a unit must contain a file named
|
|
1214
|
+
* after it (design 2026-07-28). L3: the declarations come from the project's own `units`,
|
|
1215
|
+
* `pascalCaseUnits` and `exclude` options and are never inferred, so the rule is inert until then.
|
|
1216
|
+
*
|
|
1217
|
+
* The directory set is every ancestor path prefix of every file, so a directory holding only
|
|
1218
|
+
* subdirectories is checked too. Violations report at a file inside the directory rather than at
|
|
1219
|
+
* the directory, because `filterToChangedFiles` keeps only locations git lists as changed.
|
|
1220
|
+
*/
|
|
1221
|
+
declare const architectureUnitEntryFile: Rule;
|
|
1222
|
+
|
|
1223
|
+
/**
|
|
1224
|
+
* architecture/directory-naming — a directory must be named in the casing its location declares
|
|
1225
|
+
* (design 2026-07-29). L3: the declarations come from the project's own `directories` and `exclude`
|
|
1226
|
+
* options and are never inferred, so the rule is inert until then.
|
|
1227
|
+
*
|
|
1228
|
+
* Violations report at a file inside the directory rather than at the directory, because
|
|
1229
|
+
* `filterToChangedFiles` keeps only locations git lists as changed and git never lists a directory.
|
|
1230
|
+
*
|
|
1231
|
+
* There are no pass results. `architecture/unit-entry-file` emits one per conforming unit and can
|
|
1232
|
+
* afford to, because it keys the pass on the unit's entry file — a `.svelte` path already present as
|
|
1233
|
+
* a score key. This rule's subject is the directory itself, with no such pre-existing key, and
|
|
1234
|
+
* `computeScore` seeds every distinct `route` at 100 and averages: a pass per directory would add
|
|
1235
|
+
* hundreds of 100s from one `'src/routes/**'` declaration and dilute every real finding.
|
|
1236
|
+
*/
|
|
1237
|
+
declare const architectureDirectoryNaming: Rule;
|
|
1238
|
+
|
|
1239
|
+
/**
|
|
1240
|
+
* architecture/reserved-directory-names — a directory's immediate subdirectories may only take names
|
|
1241
|
+
* the project declared for that position (design 2026-07-29). L3: inert until a scope is declared.
|
|
1242
|
+
*
|
|
1243
|
+
* Two option maps, differing in what their key names. A `scopes` key names the parent directly. A
|
|
1244
|
+
* `unitScopes` key names a root, and the rule governs the children of whichever directories beneath
|
|
1245
|
+
* it are units — the shape a glob cannot reach, because units nest to arbitrary depth.
|
|
1246
|
+
*
|
|
1247
|
+
* There are no pass results. `computeScore` seeds every distinct `route` at 100 and averages, and the
|
|
1248
|
+
* subject here is a directory with no pre-existing score key, so a pass per directory would add
|
|
1249
|
+
* hundreds of 100s from one broad declaration and dilute every real finding.
|
|
1250
|
+
*/
|
|
1251
|
+
declare const architectureReservedDirectoryNames: Rule;
|
|
1252
|
+
|
|
1253
|
+
declare const architectureRouteComponentImport: Rule;
|
|
1254
|
+
|
|
1076
1255
|
declare const performanceHeavyImport: Rule;
|
|
1077
1256
|
|
|
1078
1257
|
declare const performanceNamespaceImport: Rule;
|
|
@@ -1111,7 +1290,7 @@ declare const performanceStateRaw: Rule;
|
|
|
1111
1290
|
|
|
1112
1291
|
declare const allRules: Rule[];
|
|
1113
1292
|
|
|
1114
|
-
/** One configurable option of a rule, flattened for
|
|
1293
|
+
/** One configurable option of a rule, flattened for `svelte-vitals explain`'s output. */
|
|
1115
1294
|
interface RuleOptionInfo {
|
|
1116
1295
|
name: string;
|
|
1117
1296
|
/** `integer` replaces the default; `string-list`/`string-map` are ADDED to it. */
|
|
@@ -1135,7 +1314,7 @@ interface RuleInfo {
|
|
|
1135
1314
|
*/
|
|
1136
1315
|
options?: RuleOptionInfo[];
|
|
1137
1316
|
}
|
|
1138
|
-
/** Look up a rule's static metadata
|
|
1317
|
+
/** Look up a rule's static metadata, as `svelte-vitals explain` renders it (issue #24). Rule ids are matched exactly (case-sensitive, e.g. "seo/ssr-disabled"). */
|
|
1139
1318
|
declare function explainRule(id: string): RuleInfo | undefined;
|
|
1140
1319
|
|
|
1141
1320
|
interface HeadTagRuleOptions {
|
|
@@ -1147,7 +1326,7 @@ interface HeadTagRuleOptions {
|
|
|
1147
1326
|
/** Short human label, e.g. 'description'. */
|
|
1148
1327
|
label: string;
|
|
1149
1328
|
recommendation: string;
|
|
1150
|
-
/** Why this rule matters — surfaced by
|
|
1329
|
+
/** Why this rule matters — surfaced by `svelte-vitals explain` (issue #24). */
|
|
1151
1330
|
rationale: string;
|
|
1152
1331
|
/** Agent-actionable remediation attached to every finding (issue #18). */
|
|
1153
1332
|
fix?: Fix;
|
|
@@ -1253,7 +1432,14 @@ interface ScoreModel {
|
|
|
1253
1432
|
criticalCap: number | null;
|
|
1254
1433
|
}
|
|
1255
1434
|
interface ScoreResult {
|
|
1435
|
+
/** The score as displayed: `Math.floor(rawScore)`, so 100 means the deduction was exactly zero. */
|
|
1256
1436
|
score: number;
|
|
1437
|
+
/**
|
|
1438
|
+
* The same score before flooring, after `sitePenalty` and the cap, clamped to `[0, 100]`. Exposed so
|
|
1439
|
+
* `computeHealth` can average unrounded values and floor once — averaging the displayed scores would
|
|
1440
|
+
* compose two roundings and move Health by up to two points.
|
|
1441
|
+
*/
|
|
1442
|
+
rawScore: number;
|
|
1257
1443
|
scoreModel: ScoreModel;
|
|
1258
1444
|
}
|
|
1259
1445
|
interface ScoreOptions {
|
|
@@ -1303,7 +1489,7 @@ interface JsonReport {
|
|
|
1303
1489
|
}>;
|
|
1304
1490
|
siteIssues: JsonIssue[];
|
|
1305
1491
|
}
|
|
1306
|
-
/** Build the structured JSON report object (design §7).
|
|
1492
|
+
/** Build the structured JSON report object (design §7). The shape the `json` reporter emits (issue #24). */
|
|
1307
1493
|
declare function buildJsonReport(results: Result[], config: Config, meta: {
|
|
1308
1494
|
version: string;
|
|
1309
1495
|
}): JsonReport;
|
|
@@ -1402,4 +1588,4 @@ declare function escapeHtml(s: string): string;
|
|
|
1402
1588
|
*/
|
|
1403
1589
|
declare function safeHref(url: string): string | null;
|
|
1404
1590
|
|
|
1405
|
-
export { APP_SCRIPT, APP_STYLE, type AppSnapshot, BAND_COLOR, CATEGORIES, CHILD_NODE_KEYS, type Category, type Classification, type CompiledOverride, type ComponentFacts, type Config, type ConsoleReportOptions, type Detection, type EachBlockFact, type EffectFact, type Fix, type HeadProvider, type HeadTag, type HeadingInfo, type HealthResult, type ImageInfo, type JsonReport, type KitModuleFacts, type OrphanEffectFact, type Palette, type Presence, type Project, ROBOTS_SOURCE_PATHS, type ResolvedHead, type ResolvedHeadings, type ResolvedImages, type Result, type RouteBadge, type Rule, type RuleContext, type RuleInfo, type RuleOptionInfo, type RuleOptionSpec, type RuleOptions, type RuleOptionsSpec, type RuleOverride, type RuleSetting, type RuleSettingObject, type Runtime, SITEMAP_SOURCE_PATHS, SVELTE_CONFIG_FILES, type Scope, type ScoreModel, type ScoreOptions, type ScoreResult, type Severity, type SourceSpan, type Summary, type SuppressionDirective, type TreatDynamicAs, VITE_CONFIG_FILES, type Value, type ViteKitConfigResult, allRules, applyOverrides, applyRuleSeverities, architectureComponentSize, architecturePrivateScopeImport, architecturePropCount, attrText, attrTextOf, attrValue, attrValueOf, buildHtmlDocument, buildJsonReport, classify, collectComponentFacts, collectKitModuleFacts, compileOverrides, computeHealth, computeScore, correctnessBasePathNavigation, correctnessCheckableBindValue, correctnessEachIndexKey, correctnessEachKey, correctnessEffectAsDerived, correctnessEffectAsOnMount, correctnessInstanceBrowserGlobal, correctnessNonreactiveBuiltinState, correctnessOrphanEffect, correctnessOrphanLifecycle, correctnessPropMutation, correctnessServerBrowserGlobal, correctnessStalePropDerivation, correctnessUnmutatedState, defaultConfig, defaultProject, defineConfig, docsUrlFor, effectiveSeverity, emptyComponentFacts, emptyKitModuleFacts, escapeHtml, explainRule, findAttr, findKitPathsBaseInSvelteConfig, findKitPathsBaseInViteConfig, findMinifyDisabled, formatAgentReport, formatConsoleReport, formatGithubReport, formatHtmlReport, formatJsonReport, formatMarkdownReport, formatSarifReport, hasFailureAtOrAbove, headTagRule, imageRule, intOption, isPenalized, lineOf, linkRule, listOption, mapOption, noColorPalette, overrideMatches, parseComponentFacts, parseKitModuleFacts, performanceFontPreloadCrossorigin, performanceHeavyImport, performanceImageDimensions, performanceImageLoadingHint, performanceLcpImage, performanceLoadWaterfall, performanceMinifyDisabled, performanceNamespaceImport, performancePreconnect, performancePreloadMissingAs, performanceRenderBlockingScript, performanceResponsiveImage, performanceSequentialAwaits, performanceStateRaw, renderAppShell, resolveKitPathsBase, resolveRuleOptions, resolveRunesModuleSpecifier, runRules, safeHref, scoreBand, scoreColor, scoresByCategory, securityHandlerStateWrite, securityJavascriptUrl, securityRawHtml, securityServerModuleState, securitySharedStateImport, selectRules, seoCanonicalUrl, seoCharset, seoDescriptionLength, seoDescriptionPresence, seoDuplicateDescription, seoDuplicateTitle, seoHeadingLevelSkip, seoHreflang, seoHtmlLang, seoImageAlt, seoIndexability, seoJsonLd, seoJsonLdDateFormat, seoJsonLdDeprecatedType, seoJsonLdPlaceholder, seoJsonLdRelativeUrl, seoJsonLdRequiredProps, seoJsonLdValidity, seoOgDescription, seoOgImage, seoOgTitle, seoOgUrl, seoRobotsTxt, seoSingleH1, seoSitemapInRobots, seoSitemapXml, seoSsrDisabled, seoTitleLength, seoTitlePresence, seoTwitterCard, seoViewport, settingOptions, settingSeverity, shouldSkipRangeCheck, summarize, textFromNodes, validateRuleOptions, validateRuleSetting, valueFromNodes };
|
|
1591
|
+
export { APP_SCRIPT, APP_STYLE, type AppSnapshot, BAND_COLOR, CATEGORIES, CHILD_NODE_KEYS, type Category, type Classification, type CompiledOverride, type ComponentFacts, type Config, type ConsoleReportOptions, type Detection, type EachBlockFact, type EffectFact, type Fix, type HeadProvider, type HeadTag, type HeadingInfo, type HealthResult, type ImageInfo, type JsonReport, type KitAlias, type KitModuleFacts, type OrphanEffectFact, type Palette, type Presence, type Project, ROBOTS_SOURCE_PATHS, type RawKitAliases, type ResolvedHead, type ResolvedHeadings, type ResolvedImages, type Result, type RouteBadge, type Rule, type RuleContext, type RuleInfo, type RuleOptionInfo, type RuleOptionSpec, type RuleOptions, type RuleOptionsSpec, type RuleOverride, type RuleSetting, type RuleSettingObject, type Runtime, SITEMAP_SOURCE_PATHS, SVELTE_CONFIG_FILES, type Scope, type ScoreModel, type ScoreOptions, type ScoreResult, type Severity, type SourceSpan, type Summary, type SuppressionDirective, type TreatDynamicAs, VITE_CONFIG_FILES, type Value, type ViteKitConfigResult, allRules, applyOverrides, applyRuleSeverities, architectureComponentSize, architectureDirectoryNaming, architecturePrivateScopeImport, architecturePropCount, architectureReservedDirectoryNames, architectureRouteComponentImport, architectureUnitEntryFile, attrText, attrTextOf, attrValue, attrValueOf, buildHtmlDocument, buildJsonReport, classify, collectComponentFacts, collectKitModuleFacts, collectSourceFiles, compileOverrides, computeHealth, computeScore, correctnessBasePathNavigation, correctnessCheckableBindValue, correctnessEachIndexKey, correctnessEachKey, correctnessEffectAsDerived, correctnessEffectAsOnMount, correctnessInstanceBrowserGlobal, correctnessNonreactiveBuiltinState, correctnessOrphanEffect, correctnessOrphanLifecycle, correctnessPropMutation, correctnessServerBrowserGlobal, correctnessStalePropDerivation, correctnessUnmutatedState, defaultConfig, defaultProject, defineConfig, docsUrlFor, effectiveSeverity, emptyComponentFacts, emptyKitModuleFacts, escapeHtml, explainRule, findAttr, findKitAliasesInSvelteConfig, findKitPathsBaseInSvelteConfig, findKitPathsBaseInViteConfig, findMinifyDisabled, formatAgentReport, formatConsoleReport, formatGithubReport, formatHtmlReport, formatJsonReport, formatMarkdownReport, formatSarifReport, hasFailureAtOrAbove, headTagRule, imageRule, intOption, isMentionedAnywhere, isPenalized, lineOf, linkRule, listOption, mapOption, noColorPalette, overrideMatches, parseComponentFacts, parseKitModuleFacts, performanceFontPreloadCrossorigin, performanceHeavyImport, performanceImageDimensions, performanceImageLoadingHint, performanceLcpImage, performanceLoadWaterfall, performanceMinifyDisabled, performanceNamespaceImport, performancePreconnect, performancePreloadMissingAs, performanceRenderBlockingScript, performanceResponsiveImage, performanceSequentialAwaits, performanceStateRaw, renderAppShell, resolveKitAliases, resolveKitPathsBase, resolveRuleOptions, resolveRunesModuleSpecifier, runRules, safeHref, scoreBand, scoreColor, scoresByCategory, securityHandlerStateWrite, securityJavascriptUrl, securityRawHtml, securityServerModuleState, securitySharedStateImport, selectRules, seoCanonicalUrl, seoCharset, seoDescriptionLength, seoDescriptionPresence, seoDuplicateDescription, seoDuplicateTitle, seoHeadingLevelSkip, seoHreflang, seoHtmlLang, seoImageAlt, seoIndexability, seoJsonLd, seoJsonLdDateFormat, seoJsonLdDeprecatedType, seoJsonLdPlaceholder, seoJsonLdRelativeUrl, seoJsonLdRequiredProps, seoJsonLdValidity, seoOgDescription, seoOgImage, seoOgTitle, seoOgUrl, seoRobotsTxt, seoSingleH1, seoSitemapInRobots, seoSitemapXml, seoSsrDisabled, seoTitleLength, seoTitlePresence, seoTwitterCard, seoViewport, settingOptions, settingSeverity, shouldSkipRangeCheck, summarize, textFromNodes, validateRuleOptions, validateRuleSetting, valueFromNodes };
|