@svelte-vitals/core 0.51.2 → 0.54.6

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 CHANGED
@@ -1,2 +1,2 @@
1
- import { Q as formatGithubReport, Z as formatMarkdownReport, _t as RuleSettingObject, at as CATEGORIES, bt as TreatDynamicAs, ct as Detection, dt as Presence, et as Summary, gt as RuleSetting, ht as RuleOverride, it as summarize, lt as Fix, mt as RuleOptions, n as RuleEvidence, o as ScoreModel, ot as Category, pt as Result, rt as hasFailureAtOrAbove, st as Config, t as JsonReport, wt as defineConfig, xt as Value, yt as Severity } from "./json-D573DxEG.js";
1
+ import { Q as formatGithubReport, Z as formatMarkdownReport, _t as RuleSettingObject, at as CATEGORIES, bt as TreatDynamicAs, ct as Detection, dt as Presence, et as Summary, gt as RuleSetting, ht as RuleOverride, it as summarize, lt as Fix, mt as RuleOptions, n as RuleEvidence, o as ScoreModel, ot as Category, pt as Result, rt as hasFailureAtOrAbove, st as Config, t as JsonReport, wt as defineConfig, xt as Value, yt as Severity } from "./json-C2_agGeh.js";
2
2
  export { CATEGORIES, type Category, type Config, type Detection, type Fix, type JsonReport, type Presence, type Result, type RuleEvidence, type RuleOptions, type RuleOverride, type RuleSetting, type RuleSettingObject, type ScoreModel, type Severity, type Summary, type TreatDynamicAs, type Value, defineConfig, formatGithubReport, formatMarkdownReport, hasFailureAtOrAbove, summarize };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { Dr as defineConfig, br as hasFailureAtOrAbove, c as formatGithubReport, t as formatMarkdownReport, wr as CATEGORIES, xr as summarize } from "./markdown-MAU66kv0.js";
1
+ import { Dr as defineConfig, br as hasFailureAtOrAbove, c as formatGithubReport, t as formatMarkdownReport, wr as CATEGORIES, xr as summarize } from "./markdown-DJLlGb28.js";
2
2
  export { CATEGORIES, defineConfig, formatGithubReport, formatMarkdownReport, hasFailureAtOrAbove, summarize };
@@ -1,4 +1,4 @@
1
- import { $ as Classification, A as ANCESTRY_DEPENDENT_TAGS, At as SuppressionDirective, B as isTopFragment, C as formatFailedRuleWarning, Ct as defaultProject, D as KitModuleFacts, Dt as EffectFact, E as withFailedRulesOff, Et as EachBlockFact, F as NAMING_ATTRS, G as ResolvedHeadings, H as splitTokens, I as ResolvedA11y, J as HeadTag, K as ImageInfo, L as SECTIONING_TAGS, M as BranchStep, Mt as skippedFileWarnings, N as IDREF_ATTRS, Nt as Runtime, O as A11yOccurrenceInfo, Ot as OrphanEffectFact, P as LandmarkInput, Pt as withReadLimit, Q as formatGithubReport, R as decodeFragmentId, S as compileOverrides, St as defaultConfig, T as settingSeverity, Tt as ComponentFacts, U as stripTextDirective, V as resolveLandmark, W as HeadingInfo, X as isClassicScriptType, Y as ResolvedHead, Z as formatMarkdownReport, _ as isPlainObject, a as HealthResult, b as validateRuleSetting, c as ScoreResult, d as Rule, f as RuleContext, ft as Project, g as RuleOptionsSpec, h as RuleOptionSpec, i as formatJsonReport, it as summarize, j as ASIDE_DEMOTING_TAGS, jt as collectComponentFacts, k as A11ySkipCause, kt as SourceSpan, l as computeHealth, lt as Fix, m as isPenalized, nt as effectiveSeverity, ot as Category, p as docsUrlFor, pt as Result, q as ResolvedImages, r as buildJsonReport, rt as hasFailureAtOrAbove, s as ScoreOptions, st as Config, t as JsonReport, tt as classify, u as computeScore, ut as KitAlias, v as resolveRuleOptions, vt as Scope, w as selectRules, x as CompiledOverride, xt as Value, y as shouldSkipRangeCheck, yt as Severity, z as foldOccurrences } from "./json-D573DxEG.js";
1
+ import { $ as Classification, A as ANCESTRY_DEPENDENT_TAGS, At as SuppressionDirective, B as isTopFragment, C as formatFailedRuleWarning, Ct as defaultProject, D as KitModuleFacts, Dt as EffectFact, E as withFailedRulesOff, Et as EachBlockFact, F as NAMING_ATTRS, Ft as withReadLimit, G as ResolvedHeadings, H as splitTokens, I as ResolvedA11y, J as HeadTag, K as ImageInfo, L as SECTIONING_TAGS, M as BranchStep, Mt as emptyComponentFacts, N as IDREF_ATTRS, Nt as skippedFileWarnings, O as A11yOccurrenceInfo, Ot as OrphanEffectFact, P as LandmarkInput, Pt as Runtime, Q as formatGithubReport, R as decodeFragmentId, S as compileOverrides, St as defaultConfig, T as settingSeverity, Tt as ComponentFacts, U as stripTextDirective, V as resolveLandmark, W as HeadingInfo, X as isClassicScriptType, Y as ResolvedHead, Z as formatMarkdownReport, _ as isPlainObject, a as HealthResult, b as validateRuleSetting, c as ScoreResult, d as Rule, f as RuleContext, ft as Project, g as RuleOptionsSpec, h as RuleOptionSpec, i as formatJsonReport, it as summarize, j as ASIDE_DEMOTING_TAGS, jt as collectComponentFacts, k as A11ySkipCause, kt as SourceSpan, l as computeHealth, lt as Fix, m as isPenalized, nt as effectiveSeverity, ot as Category, p as docsUrlFor, pt as Result, q as ResolvedImages, r as buildJsonReport, rt as hasFailureAtOrAbove, s as ScoreOptions, st as Config, t as JsonReport, tt as classify, u as computeScore, ut as KitAlias, v as resolveRuleOptions, vt as Scope, w as selectRules, x as CompiledOverride, xt as Value, y as shouldSkipRangeCheck, yt as Severity, z as foldOccurrences } from "./json-C2_agGeh.js";
2
2
  import { AST } from "svelte/compiler";
3
3
  //#region src/component-parse.d.ts
4
4
  /** What the per-file parsers produce — `ComponentFacts` minus `file`, with `suppressions` always present. */
@@ -10,7 +10,7 @@ type ParsedFacts = Omit<ComponentFacts, 'file' | 'suppressions'> & {
10
10
  * reactivity/correctness + security + architecture facts, or a `.svelte.ts`/`.svelte.js`
11
11
  * runes module's orphan-$effect facts (correctness/orphan-effect).
12
12
  */
13
- declare function parseComponentFacts(source: string, filename: string): ParsedFacts;
13
+ export declare function parseComponentFacts(source: string, filename: string): ParsedFacts;
14
14
  //#endregion
15
15
  //#region src/module-ast.d.ts
16
16
  /**
@@ -19,7 +19,7 @@ declare function parseComponentFacts(source: string, filename: string): ParsedFa
19
19
  * directive must be the entire content of its line; the suppressed line is directive-line + 1.
20
20
  * Shared with the Kit-module parser (the security kit-module rules).
21
21
  */
22
- declare function collectSuppressions(source: string): SuppressionDirective[];
22
+ export declare function collectSuppressions(source: string): SuppressionDirective[];
23
23
  //#endregion
24
24
  //#region src/inline-directives.d.ts
25
25
  /** File-relative-path → the inline directives collected from that file. */
@@ -29,7 +29,7 @@ type DirectiveIndex = ReadonlyMap<string, readonly SuppressionDirective[]>;
29
29
  * config when its minify flag was read. The one home for the union both pipelines apply, so a new
30
30
  * fact family that carries suppressions is wired into inline directives in a single place.
31
31
  */
32
- declare function addFactsDirectives(index: Map<string, readonly SuppressionDirective[]>, facts: {
32
+ export declare function addFactsDirectives(index: Map<string, readonly SuppressionDirective[]>, facts: {
33
33
  components?: readonly ComponentFacts[];
34
34
  kitModules?: readonly KitModuleFacts[];
35
35
  viteMinifyDisabled?: Project['viteMinifyDisabled'];
@@ -42,7 +42,7 @@ declare function addFactsDirectives(index: Map<string, readonly SuppressionDirec
42
42
  * Compared against every registered rule, not the selected ones: disabling a rule in config must
43
43
  * not turn its directives into errors.
44
44
  */
45
- declare function unknownDirectiveIds(index: DirectiveIndex, rules: readonly Rule[]): string[];
45
+ export declare function unknownDirectiveIds(index: DirectiveIndex, rules: readonly Rule[]): string[];
46
46
  //#endregion
47
47
  //#region src/source-files.d.ts
48
48
  /**
@@ -58,7 +58,7 @@ declare function unknownDirectiveIds(index: DirectiveIndex, rules: readonly Rule
58
58
  * at any depth does not appear among these paths' ancestor prefixes and so does not exist as far as
59
59
  * those rules are concerned, and dot directories never appear at all (see `Runtime.glob`).
60
60
  */
61
- declare function collectSourceFiles(rt: Runtime, cwd: string): Promise<string[]>;
61
+ export declare function collectSourceFiles(rt: Runtime, cwd: string): Promise<string[]>;
62
62
  //#endregion
63
63
  //#region src/kit-module-parse.d.ts
64
64
  /**
@@ -83,7 +83,7 @@ declare function collectSourceFiles(rt: Runtime, cwd: string): Promise<string[]>
83
83
  * mapping here too, rather than duplicating it. This is the single site for every
84
84
  * repo-local specifier resolution in the repo.
85
85
  */
86
- declare function resolveRepoLocalPath(spec: string, importerFile: string, aliases?: readonly KitAlias[]): string | undefined;
86
+ export declare function resolveRepoLocalPath(spec: string, importerFile: string, aliases?: readonly KitAlias[]): string | undefined;
87
87
  //#endregion
88
88
  //#region src/kit-module-collect.d.ts
89
89
  /**
@@ -96,7 +96,7 @@ declare function resolveRepoLocalPath(spec: string, importerFile: string, aliase
96
96
  * `aliases` is the project's compiled alias list (`Project.kitAliases`); omitted,
97
97
  * specifiers resolve through `$lib` → `src/lib` only.
98
98
  */
99
- declare function collectKitModuleFacts(rt: Runtime, cwd: string, aliases?: readonly KitAlias[]): Promise<KitModuleFacts[]>;
99
+ export declare function collectKitModuleFacts(rt: Runtime, cwd: string, aliases?: readonly KitAlias[]): Promise<KitModuleFacts[]>;
100
100
  //#endregion
101
101
  //#region src/vite-config-parse.d.ts
102
102
  /**
@@ -104,7 +104,7 @@ declare function collectKitModuleFacts(rt: Runtime, cwd: string, aliases?: reado
104
104
  * `minify` property's 1-based line in the ORIGINAL source. Undefined for clean,
105
105
  * dynamic, or unparsable configs (never throws).
106
106
  */
107
- declare function findMinifyDisabled(source: string): {
107
+ export declare function findMinifyDisabled(source: string): {
108
108
  line: number;
109
109
  } | undefined;
110
110
  //#endregion
@@ -117,7 +117,7 @@ declare function findMinifyDisabled(source: string): {
117
117
  * a plugin config is deliberately not done — that costs reach, not correctness, and such a
118
118
  * project keeps the resolver's default `$lib` behaviour. Undefined means "no config was read".
119
119
  */
120
- declare function resolveKitAliases(viteConfig: {
120
+ export declare function resolveKitAliases(viteConfig: {
121
121
  source: string;
122
122
  } | undefined, svelteConfig: {
123
123
  source: string;
@@ -127,7 +127,7 @@ declare function resolveKitAliases(viteConfig: {
127
127
  * plugin config when it carries one, otherwise `svelte.config`. `file` is the config the base
128
128
  * came from (as passed in by the caller). Undefined means "no base path" — the gate stays shut.
129
129
  */
130
- declare function resolveKitPathsBase(viteConfig: {
130
+ export declare function resolveKitPathsBase(viteConfig: {
131
131
  file: string;
132
132
  source: string;
133
133
  } | undefined, svelteConfig: {
@@ -151,7 +151,7 @@ declare function resolveKitPathsBase(viteConfig: {
151
151
  * the text scan's imprecision cannot reach it. A file that does not parse is already a hard failure,
152
152
  * which the retry can only improve on.
153
153
  */
154
- declare function parseSvelte(source: string, filename: string): AST.Root;
154
+ export declare function parseSvelte(source: string, filename: string): AST.Root;
155
155
  /** A template fragment's child node relevant to value classification: literal text or a `{expr}`. */
156
156
  type TextOrExpr = AST.Text | AST.ExpressionTag;
157
157
  /**
@@ -159,15 +159,15 @@ type TextOrExpr = AST.Text | AST.ExpressionTag;
159
159
  * Covers if/each/await blocks (pending/then/catch/fallback) as well as
160
160
  * the standard fragment, nodes, consequent, alternate, and body keys.
161
161
  */
162
- declare const CHILD_NODE_KEYS: string[];
163
- declare function valueFromNodes(nodes: TextOrExpr[]): Value;
162
+ export declare const CHILD_NODE_KEYS: string[];
163
+ export declare function valueFromNodes(nodes: TextOrExpr[]): Value;
164
164
  /** The literal text of a node list when fully static (no ExpressionTag), else undefined. */
165
- declare function textFromNodes(nodes: TextOrExpr[]): string | undefined;
165
+ export declare function textFromNodes(nodes: TextOrExpr[]): string | undefined;
166
166
  /** Static string of an attribute (e.g. name="description"), or undefined if dynamic/absent. */
167
- declare function attrText(attributes: AST.Attribute[], name: string): string | undefined;
167
+ export declare function attrText(attributes: AST.Attribute[], name: string): string | undefined;
168
168
  /** Value kind of an attribute's content (e.g. the `content` of a <meta>). */
169
- declare function attrValue(attributes: AST.Attribute[], name: string): Value;
170
- declare function lineOf(source: string, offset: unknown): number;
169
+ export declare function attrValue(attributes: AST.Attribute[], name: string): Value;
170
+ export declare function lineOf(source: string, offset: unknown): number;
171
171
  /**
172
172
  * An element's attribute by name, matched **case-insensitively**: HTML attribute names are, so
173
173
  * `ARIA-LABEL` and `Type` are the same attributes as `aria-label` and `type` once the document is
@@ -177,11 +177,11 @@ declare function lineOf(source: string, offset: unknown): number;
177
177
  * (`<Foo titleTemplate>` is not `<Foo titletemplate>`) and are read through the adapters' own
178
178
  * lookup, which must stay exact.
179
179
  */
180
- declare function findAttr(attributes: AST.Attribute[], name: string): AST.Attribute | undefined;
180
+ export declare function findAttr(attributes: AST.Attribute[], name: string): AST.Attribute | undefined;
181
181
  /** Value kind of a single attribute (e.g. a component prop). */
182
- declare function attrValueOf(attr: AST.Attribute): Value;
182
+ export declare function attrValueOf(attr: AST.Attribute): Value;
183
183
  /** Literal static text of a single attribute node (e.g. a component prop), or undefined if dynamic/absent. */
184
- declare function attrTextOf(attr: AST.Attribute): string | undefined;
184
+ export declare function attrTextOf(attr: AST.Attribute): string | undefined;
185
185
  //#endregion
186
186
  //#region src/project-paths.d.ts
187
187
  /**
@@ -190,13 +190,13 @@ declare function attrTextOf(attr: AST.Attribute): string | undefined;
190
190
  * module is pure data: no I/O, no `node:` imports (design §8).
191
191
  */
192
192
  /** Locations that satisfy the robots.txt project rule (seo/robots-txt). */
193
- declare const ROBOTS_SOURCE_PATHS: readonly ["static/robots.txt", "src/routes/robots.txt/+server.ts", "src/routes/robots.txt/+server.js"];
193
+ export declare const ROBOTS_SOURCE_PATHS: readonly ["static/robots.txt", "src/routes/robots.txt/+server.ts", "src/routes/robots.txt/+server.js"];
194
194
  /** Locations that satisfy the sitemap.xml project rule (seo/sitemap-xml). */
195
- declare const SITEMAP_SOURCE_PATHS: readonly ["static/sitemap.xml", "src/routes/sitemap.xml/+server.ts", "src/routes/sitemap.xml/+server.js"];
195
+ export declare const SITEMAP_SOURCE_PATHS: readonly ["static/sitemap.xml", "src/routes/sitemap.xml/+server.ts", "src/routes/sitemap.xml/+server.js"];
196
196
  /** Vite's own config resolution order — only the first existing file is the one Vite loads. */
197
- declare const VITE_CONFIG_FILES: readonly ["vite.config.js", "vite.config.mjs", "vite.config.ts", "vite.config.cjs", "vite.config.mts", "vite.config.cts"];
197
+ export declare const VITE_CONFIG_FILES: readonly ["vite.config.js", "vite.config.mjs", "vite.config.ts", "vite.config.cjs", "vite.config.mts", "vite.config.cts"];
198
198
  /** SvelteKit's config resolution order (`@sveltejs/kit` checks js before ts). */
199
- declare const SVELTE_CONFIG_FILES: readonly ["svelte.config.js", "svelte.config.ts"];
199
+ export declare const SVELTE_CONFIG_FILES: readonly ["svelte.config.js", "svelte.config.ts"];
200
200
  //#endregion
201
201
  //#region src/engine.d.ts
202
202
  interface FailedRule {
@@ -210,7 +210,7 @@ interface FailedRule {
210
210
  * no results instead of taking the whole run down with it — dev tooling must
211
211
  * never throw — and is reported in `failedRules` instead.
212
212
  */
213
- declare function runRules(rules: Rule[], ctx: RuleContext): Promise<{
213
+ export declare function runRules(rules: Rule[], ctx: RuleContext): Promise<{
214
214
  results: Result[];
215
215
  examined: Record<string, Record<string, number>>;
216
216
  failedRules: FailedRule[];
@@ -223,7 +223,7 @@ declare function runRules(rules: Rule[], ctx: RuleContext): Promise<{
223
223
  * A caller with no directive sources passes an empty index, which makes the directive pass
224
224
  * identity; the severity and override passes are config-governed and run regardless.
225
225
  */
226
- declare function runAnalysis(rules: Rule[], ctx: RuleContext, directives: DirectiveIndex): Promise<{
226
+ export declare function runAnalysis(rules: Rule[], ctx: RuleContext, directives: DirectiveIndex): Promise<{
227
227
  results: Result[];
228
228
  examined: Record<string, Record<string, number>>;
229
229
  failedRules: FailedRule[];
@@ -237,46 +237,46 @@ declare function runAnalysis(rules: Rule[], ctx: RuleContext, directives: Direct
237
237
  * A dynamic title (`{data.title}`) is the most common correct pattern and must
238
238
  * never be flagged as missing; it surfaces as value 'dynamic' (design §4).
239
239
  */
240
- declare const seoTitlePresence: Rule;
240
+ export declare const seoTitlePresence: Rule;
241
241
  //#endregion
242
242
  //#region src/rules/seo/description-presence.d.ts
243
- declare const seoDescriptionPresence: Rule;
243
+ export declare const seoDescriptionPresence: Rule;
244
244
  //#endregion
245
245
  //#region src/rules/seo/canonical-url.d.ts
246
- declare const seoCanonicalUrl: Rule;
246
+ export declare const seoCanonicalUrl: Rule;
247
247
  //#endregion
248
248
  //#region src/rules/seo/og-image.d.ts
249
- declare const seoOgImage: Rule;
249
+ export declare const seoOgImage: Rule;
250
250
  //#endregion
251
251
  //#region src/rules/seo/og-title.d.ts
252
- declare const seoOgTitle: Rule;
252
+ export declare const seoOgTitle: Rule;
253
253
  //#endregion
254
254
  //#region src/rules/seo/json-ld.d.ts
255
- declare const seoJsonLd: Rule;
255
+ export declare const seoJsonLd: Rule;
256
256
  //#endregion
257
257
  //#region src/rules/seo/robots-txt.d.ts
258
- declare const seoRobotsTxt: Rule;
258
+ export declare const seoRobotsTxt: Rule;
259
259
  //#endregion
260
260
  //#region src/rules/seo/sitemap-xml.d.ts
261
- declare const seoSitemapXml: Rule;
261
+ export declare const seoSitemapXml: Rule;
262
262
  //#endregion
263
263
  //#region src/rules/seo/html-lang.d.ts
264
- declare const seoHtmlLang: Rule;
264
+ export declare const seoHtmlLang: Rule;
265
265
  //#endregion
266
266
  //#region src/rules/perf/image-dimensions.d.ts
267
- declare const performanceImageDimensions: Rule;
267
+ export declare const performanceImageDimensions: Rule;
268
268
  //#endregion
269
269
  //#region src/rules/perf/image-loading-hint.d.ts
270
- declare const performanceImageLoadingHint: Rule;
270
+ export declare const performanceImageLoadingHint: Rule;
271
271
  //#endregion
272
272
  //#region src/rules/perf/responsive-image.d.ts
273
- declare const performanceResponsiveImage: Rule;
273
+ export declare const performanceResponsiveImage: Rule;
274
274
  //#endregion
275
275
  //#region src/rules/perf/preload-missing-as.d.ts
276
- declare const performancePreloadMissingAs: Rule;
276
+ export declare const performancePreloadMissingAs: Rule;
277
277
  //#endregion
278
278
  //#region src/rules/perf/font-preload-crossorigin.d.ts
279
- declare const performanceFontPreloadCrossorigin: Rule;
279
+ export declare const performanceFontPreloadCrossorigin: Rule;
280
280
  //#endregion
281
281
  //#region src/rules/perf/lcp-image.d.ts
282
282
  /**
@@ -285,7 +285,7 @@ declare const performanceFontPreloadCrossorigin: Rule;
285
285
  * order for the route; if that image is loading="lazy", flag it. Runs in both
286
286
  * static (CLI) and rendered (vite) mode, since both providers collect <img>.
287
287
  */
288
- declare const performanceLcpImage: Rule;
288
+ export declare const performanceLcpImage: Rule;
289
289
  //#endregion
290
290
  //#region src/rules/perf/render-blocking-script.d.ts
291
291
  /**
@@ -295,7 +295,7 @@ declare const performanceLcpImage: Rule;
295
295
  * (rendered mode) or in <svelte:head> (static mode). A head with no <script>
296
296
  * emits nothing (no signal), like the image rules.
297
297
  */
298
- declare const performanceRenderBlockingScript: Rule;
298
+ export declare const performanceRenderBlockingScript: Rule;
299
299
  //#endregion
300
300
  //#region src/rules/perf/preconnect.d.ts
301
301
  /**
@@ -304,49 +304,49 @@ declare const performanceRenderBlockingScript: Rule;
304
304
  * connection-setup round-trip. Opt-in by construction: only origins in the
305
305
  * allowlist are checked; routes referencing none emit nothing.
306
306
  */
307
- declare const performancePreconnect: Rule;
307
+ export declare const performancePreconnect: Rule;
308
308
  //#endregion
309
309
  //#region src/rules/seo/indexability.d.ts
310
- declare const seoIndexability: Rule;
310
+ export declare const seoIndexability: Rule;
311
311
  //#endregion
312
312
  //#region src/rules/seo/twitter-card.d.ts
313
- declare const seoTwitterCard: Rule;
313
+ export declare const seoTwitterCard: Rule;
314
314
  //#endregion
315
315
  //#region src/rules/seo/og-description.d.ts
316
- declare const seoOgDescription: Rule;
316
+ export declare const seoOgDescription: Rule;
317
317
  //#endregion
318
318
  //#region src/rules/seo/og-url.d.ts
319
- declare const seoOgUrl: Rule;
319
+ export declare const seoOgUrl: Rule;
320
320
  //#endregion
321
321
  //#region src/rules/seo/viewport.d.ts
322
- declare const seoViewport: Rule;
322
+ export declare const seoViewport: Rule;
323
323
  //#endregion
324
324
  //#region src/rules/seo/sitemap-in-robots.d.ts
325
- declare const seoSitemapInRobots: Rule;
325
+ export declare const seoSitemapInRobots: Rule;
326
326
  //#endregion
327
327
  //#region src/rules/seo/json-ld-validity.d.ts
328
- declare const seoJsonLdValidity: Rule;
328
+ export declare const seoJsonLdValidity: Rule;
329
329
  //#endregion
330
330
  //#region src/rules/seo/json-ld-deprecated-type.d.ts
331
- declare const seoJsonLdDeprecatedType: Rule;
331
+ export declare const seoJsonLdDeprecatedType: Rule;
332
332
  //#endregion
333
333
  //#region src/rules/seo/json-ld-relative-url.d.ts
334
- declare const seoJsonLdRelativeUrl: Rule;
334
+ export declare const seoJsonLdRelativeUrl: Rule;
335
335
  //#endregion
336
336
  //#region src/rules/seo/json-ld-date-format.d.ts
337
- declare const seoJsonLdDateFormat: Rule;
337
+ export declare const seoJsonLdDateFormat: Rule;
338
338
  //#endregion
339
339
  //#region src/rules/seo/json-ld-placeholder.d.ts
340
- declare const seoJsonLdPlaceholder: Rule;
340
+ export declare const seoJsonLdPlaceholder: Rule;
341
341
  //#endregion
342
342
  //#region src/rules/seo/json-ld-required-props.d.ts
343
- declare const seoJsonLdRequiredProps: Rule;
343
+ export declare const seoJsonLdRequiredProps: Rule;
344
344
  //#endregion
345
345
  //#region src/rules/seo/title-length.d.ts
346
- declare const seoTitleLength: Rule;
346
+ export declare const seoTitleLength: Rule;
347
347
  //#endregion
348
348
  //#region src/rules/seo/description-length.d.ts
349
- declare const seoDescriptionLength: Rule;
349
+ export declare const seoDescriptionLength: Rule;
350
350
  //#endregion
351
351
  //#region src/rules/seo/charset.d.ts
352
352
  /**
@@ -354,7 +354,7 @@ declare const seoDescriptionLength: Rule;
354
354
  * only visible to rendered analysis (`appliesTo: rendered`), exactly like seo/viewport
355
355
  * (viewport). Static route analysis emits nothing instead of false-flagging it.
356
356
  */
357
- declare const seoCharset: Rule;
357
+ export declare const seoCharset: Rule;
358
358
  //#endregion
359
359
  //#region src/rules/seo/image-alt.d.ts
360
360
  /**
@@ -363,7 +363,7 @@ declare const seoCharset: Rule;
363
363
  * Presence only: an explicit empty `alt=""` is a valid decorative-image signal and
364
364
  * passes; a spread `{...rest}` may supply alt, so it is not flagged.
365
365
  */
366
- declare const seoImageAlt: Rule;
366
+ export declare const seoImageAlt: Rule;
367
367
  //#endregion
368
368
  //#region src/rules/seo/hreflang.d.ts
369
369
  /**
@@ -372,7 +372,7 @@ declare const seoImageAlt: Rule;
372
372
  * flagged). When alternates exist, every code must be well-formed and a set of
373
373
  * two or more must declare an x-default. Works in both modes.
374
374
  */
375
- declare const seoHreflang: Rule;
375
+ export declare const seoHreflang: Rule;
376
376
  //#endregion
377
377
  //#region src/rules/seo/single-h1.d.ts
378
378
  /**
@@ -387,13 +387,13 @@ declare const seoHreflang: Rule;
387
387
  * global `rules: { 'seo/single-h1': <severity> }` override flattens both arms to one
388
388
  * severity (design, `applyRuleSeverities`).
389
389
  */
390
- declare const seoSingleH1: Rule;
390
+ export declare const seoSingleH1: Rule;
391
391
  //#endregion
392
392
  //#region src/rules/seo/duplicate-title.d.ts
393
- declare const seoDuplicateTitle: Rule;
393
+ export declare const seoDuplicateTitle: Rule;
394
394
  //#endregion
395
395
  //#region src/rules/seo/duplicate-description.d.ts
396
- declare const seoDuplicateDescription: Rule;
396
+ export declare const seoDuplicateDescription: Rule;
397
397
  //#endregion
398
398
  //#region src/rules/seo/heading-level-skip.d.ts
399
399
  /**
@@ -402,25 +402,25 @@ declare const seoDuplicateDescription: Rule;
402
402
  * h2 → h4) breaks the outline. The first heading has no predecessor (missing/multiple
403
403
  * <h1> stays seo/single-h1's concern). A route with no headings emits nothing.
404
404
  */
405
- declare const seoHeadingLevelSkip: Rule;
405
+ export declare const seoHeadingLevelSkip: Rule;
406
406
  //#endregion
407
407
  //#region src/rules/seo/ssr-disabled.d.ts
408
- declare const seoSsrDisabled: Rule;
408
+ export declare const seoSsrDisabled: Rule;
409
409
  //#endregion
410
410
  //#region src/rules/correctness/each-key.d.ts
411
- declare const correctnessEachKey: Rule;
411
+ export declare const correctnessEachKey: Rule;
412
412
  //#endregion
413
413
  //#region src/rules/correctness/each-index-key.d.ts
414
- declare const correctnessEachIndexKey: Rule;
414
+ export declare const correctnessEachIndexKey: Rule;
415
415
  //#endregion
416
416
  //#region src/rules/correctness/effect-as-derived.d.ts
417
- declare const correctnessEffectAsDerived: Rule;
417
+ export declare const correctnessEffectAsDerived: Rule;
418
418
  //#endregion
419
419
  //#region src/rules/correctness/effect-as-onmount.d.ts
420
- declare const correctnessEffectAsOnMount: Rule;
420
+ export declare const correctnessEffectAsOnMount: Rule;
421
421
  //#endregion
422
422
  //#region src/rules/correctness/unmutated-state.d.ts
423
- declare const correctnessUnmutatedState: Rule;
423
+ export declare const correctnessUnmutatedState: Rule;
424
424
  //#endregion
425
425
  //#region src/rules/correctness/prop-mutation.d.ts
426
426
  /**
@@ -431,7 +431,7 @@ declare const correctnessUnmutatedState: Rule;
431
431
  * reassignment. The two modes can't be mixed in one component, so a given finding is always
432
432
  * exactly one or the other — see `legacy` on `ComponentFacts.mutatedProps` (component-parse.ts).
433
433
  */
434
- declare const correctnessPropMutation: Rule;
434
+ export declare const correctnessPropMutation: Rule;
435
435
  //#endregion
436
436
  //#region src/rules/correctness/stale-prop-derivation.d.ts
437
437
  /**
@@ -441,7 +441,7 @@ declare const correctnessPropMutation: Rule;
441
441
  * be mixed in one component, so a given finding is always exactly one or the other — see
442
442
  * `legacy` on `ComponentFacts.stalePropDerivations` (component-parse.ts).
443
443
  */
444
- declare const correctnessStalePropDerivation: Rule;
444
+ export declare const correctnessStalePropDerivation: Rule;
445
445
  //#endregion
446
446
  //#region src/rules/correctness/nonreactive-builtin-state.d.ts
447
447
  /**
@@ -451,7 +451,7 @@ declare const correctnessStalePropDerivation: Rule;
451
451
  * the template: the UI silently stops updating. svelte/reactivity ships
452
452
  * drop-in reactive equivalents for exactly this.
453
453
  */
454
- declare const correctnessNonreactiveBuiltinState: Rule;
454
+ export declare const correctnessNonreactiveBuiltinState: Rule;
455
455
  //#endregion
456
456
  //#region src/rules/correctness/checkable-bind-value.d.ts
457
457
  /**
@@ -462,7 +462,7 @@ declare const correctnessNonreactiveBuiltinState: Rule;
462
462
  * bind:checked (single checkbox) / bind:group (checkbox list, radio group) are the correct
463
463
  * bindings.
464
464
  */
465
- declare const correctnessCheckableBindValue: Rule;
465
+ export declare const correctnessCheckableBindValue: Rule;
466
466
  //#endregion
467
467
  //#region src/rules/correctness/autoplay-muted.d.ts
468
468
  /**
@@ -473,10 +473,10 @@ declare const correctnessCheckableBindValue: Rule;
473
473
  * `bind:muted`, spread) passes — expression values are not evaluated, per issue #580's scope —
474
474
  * and only a literal `autoplay` counts.
475
475
  */
476
- declare const correctnessAutoplayMuted: Rule;
476
+ export declare const correctnessAutoplayMuted: Rule;
477
477
  //#endregion
478
478
  //#region src/rules/correctness/orphan-effect.d.ts
479
- declare const correctnessOrphanEffect: Rule;
479
+ export declare const correctnessOrphanEffect: Rule;
480
480
  //#endregion
481
481
  //#region src/rules/correctness/orphan-lifecycle.d.ts
482
482
  /**
@@ -485,7 +485,7 @@ declare const correctnessOrphanEffect: Rule;
485
485
  * a module-scope-instantiated class, and Kit load/handler/`init` bodies. A custom check
486
486
  * because the facts live on BOTH the component channel and the Kit-module channel.
487
487
  */
488
- declare const correctnessOrphanLifecycle: Rule;
488
+ export declare const correctnessOrphanLifecycle: Rule;
489
489
  //#endregion
490
490
  //#region src/rules/correctness/base-path-navigation.d.ts
491
491
  /**
@@ -494,7 +494,7 @@ declare const correctnessOrphanLifecycle: Rule;
494
494
  * on BOTH the component channel (`<a href>`, `goto()`) and the Kit-module channel (`redirect()`).
495
495
  * With no base path configured the rule emits nothing at all — the gate is the whole point.
496
496
  */
497
- declare const correctnessBasePathNavigation: Rule;
497
+ export declare const correctnessBasePathNavigation: Rule;
498
498
  //#endregion
499
499
  //#region src/rules/correctness/server-browser-global.d.ts
500
500
  /**
@@ -504,31 +504,31 @@ declare const correctnessBasePathNavigation: Rule;
504
504
  * exist — SSR crashes with a ReferenceError. Instance-script reads are correctness/instance-browser-global's
505
505
  * (warning) territory. A custom check because the facts live on both channels.
506
506
  */
507
- declare const correctnessServerBrowserGlobal: Rule;
507
+ export declare const correctnessServerBrowserGlobal: Rule;
508
508
  //#endregion
509
509
  //#region src/rules/correctness/instance-browser-global.d.ts
510
- declare const correctnessInstanceBrowserGlobal: Rule;
510
+ export declare const correctnessInstanceBrowserGlobal: Rule;
511
511
  //#endregion
512
512
  //#region src/rules/security/raw-html.d.ts
513
- declare const securityRawHtml: Rule;
513
+ export declare const securityRawHtml: Rule;
514
514
  //#endregion
515
515
  //#region src/rules/security/javascript-url.d.ts
516
- declare const securityJavascriptUrl: Rule;
516
+ export declare const securityJavascriptUrl: Rule;
517
517
  //#endregion
518
518
  //#region src/rules/security/handler-state-write.d.ts
519
- declare const securityHandlerStateWrite: Rule;
519
+ export declare const securityHandlerStateWrite: Rule;
520
520
  //#endregion
521
521
  //#region src/rules/security/server-module-state.d.ts
522
- declare const securityServerModuleState: Rule;
522
+ export declare const securityServerModuleState: Rule;
523
523
  //#endregion
524
524
  //#region src/rules/security/shared-state-import.d.ts
525
- declare const securitySharedStateImport: Rule;
525
+ export declare const securitySharedStateImport: Rule;
526
526
  //#endregion
527
527
  //#region src/rules/architecture/component-size.d.ts
528
- declare const architectureComponentSize: Rule;
528
+ export declare const architectureComponentSize: Rule;
529
529
  //#endregion
530
530
  //#region src/rules/architecture/prop-count.d.ts
531
- declare const architecturePropCount: Rule;
531
+ export declare const architecturePropCount: Rule;
532
532
  //#endregion
533
533
  //#region src/rules/architecture/private-scope-import.d.ts
534
534
  /**
@@ -539,7 +539,7 @@ declare const architecturePropCount: Rule;
539
539
  * Findings are reported at the import site, not at the imported unit: `--diff` filters
540
540
  * results to the files that changed, and the author of the violation edited the importer.
541
541
  */
542
- declare const architecturePrivateScopeImport: Rule;
542
+ export declare const architecturePrivateScopeImport: Rule;
543
543
  //#endregion
544
544
  //#region src/rules/architecture/unit-entry-file.d.ts
545
545
  /**
@@ -551,7 +551,7 @@ declare const architecturePrivateScopeImport: Rule;
551
551
  * subdirectories is checked too. Violations report at a file inside the directory rather than at
552
552
  * the directory, because `filterToChangedFiles` keeps only locations git lists as changed.
553
553
  */
554
- declare const architectureUnitEntryFile: Rule;
554
+ export declare const architectureUnitEntryFile: Rule;
555
555
  //#endregion
556
556
  //#region src/rules/architecture/directory-naming.d.ts
557
557
  /**
@@ -568,7 +568,7 @@ declare const architectureUnitEntryFile: Rule;
568
568
  * `computeScore` seeds every distinct `route` at 100 and averages: a pass per directory would add
569
569
  * hundreds of 100s from one `'src/routes/**'` declaration and dilute every real finding.
570
570
  */
571
- declare const architectureDirectoryNaming: Rule;
571
+ export declare const architectureDirectoryNaming: Rule;
572
572
  //#endregion
573
573
  //#region src/rules/architecture/reserved-directory-names.d.ts
574
574
  /**
@@ -591,7 +591,7 @@ declare const architectureDirectoryNaming: Rule;
591
591
  * subject here is a directory with no pre-existing score key, so a pass per directory would add
592
592
  * hundreds of 100s from one broad declaration and dilute every real finding.
593
593
  */
594
- declare const architectureReservedDirectoryNames: Rule;
594
+ export declare const architectureReservedDirectoryNames: Rule;
595
595
  //#endregion
596
596
  //#region src/rules/architecture/reserved-name-placement.d.ts
597
597
  /**
@@ -610,19 +610,19 @@ declare const architectureReservedDirectoryNames: Rule;
610
610
  * There are no pass results, for the reason the sibling records: `computeScore` seeds every distinct
611
611
  * `route` at 100 and averages, and a directory has no pre-existing score key.
612
612
  */
613
- declare const architectureReservedNamePlacement: Rule;
613
+ export declare const architectureReservedNamePlacement: Rule;
614
614
  //#endregion
615
615
  //#region src/rules/architecture/route-component-import.d.ts
616
- declare const architectureRouteComponentImport: Rule;
616
+ export declare const architectureRouteComponentImport: Rule;
617
617
  //#endregion
618
618
  //#region src/rules/architecture/doc-link-target.d.ts
619
- declare const architectureDocLinkTarget: Rule;
619
+ export declare const architectureDocLinkTarget: Rule;
620
620
  //#endregion
621
621
  //#region src/rules/perf/heavy-import.d.ts
622
- declare const performanceHeavyImport: Rule;
622
+ export declare const performanceHeavyImport: Rule;
623
623
  //#endregion
624
624
  //#region src/rules/perf/namespace-import.d.ts
625
- declare const performanceNamespaceImport: Rule;
625
+ export declare const performanceNamespaceImport: Rule;
626
626
  //#endregion
627
627
  //#region src/rules/perf/minify-disabled.d.ts
628
628
  /**
@@ -631,7 +631,7 @@ declare const performanceNamespaceImport: Rule;
631
631
  * of vite.config.* (literal-only) or by the Vite plugin's resolved config
632
632
  * (exact). Emits a finding only when the fact is set — no pass result.
633
633
  */
634
- declare const performanceMinifyDisabled: Rule;
634
+ export declare const performanceMinifyDisabled: Rule;
635
635
  //#endregion
636
636
  //#region src/rules/perf/load-waterfall.d.ts
637
637
  /**
@@ -640,7 +640,7 @@ declare const performanceMinifyDisabled: Rule;
640
640
  * placement to suggest. csr = false files are exempt too — without a client
641
641
  * runtime the universal load only runs during SSR.
642
642
  */
643
- declare const performanceLoadWaterfall: Rule;
643
+ export declare const performanceLoadWaterfall: Rule;
644
644
  //#endregion
645
645
  //#region src/rules/perf/sequential-awaits.d.ts
646
646
  /**
@@ -648,7 +648,7 @@ declare const performanceLoadWaterfall: Rule;
648
648
  * data flow cannot see side-effect ordering (e.g. a setup call an API relies
649
649
  * on), so the parallelize suggestion stays advisory.
650
650
  */
651
- declare const performanceSequentialAwaits: Rule;
651
+ export declare const performanceSequentialAwaits: Rule;
652
652
  //#endregion
653
653
  //#region src/rules/perf/state-raw.d.ts
654
654
  /**
@@ -658,45 +658,45 @@ declare const performanceSequentialAwaits: Rule;
658
658
  * "Large" is not statically knowable, so a non-primitive literal initializer is
659
659
  * the proxy condition.
660
660
  */
661
- declare const performanceStateRaw: Rule;
661
+ export declare const performanceStateRaw: Rule;
662
662
  //#endregion
663
663
  //#region src/rules/perf/iframe-loading.d.ts
664
664
  /** Any literal `loading` value passes (the author made a choice); an expression value is
665
665
  * unknowable and passes; a spread could supply `loading` and passes. */
666
- declare const performanceIframeLoading: Rule;
666
+ export declare const performanceIframeLoading: Rule;
667
667
  //#endregion
668
668
  //#region src/rules/a11y/invalid-role.d.ts
669
- declare const a11yInvalidRole: Rule;
669
+ export declare const a11yInvalidRole: Rule;
670
670
  //#endregion
671
671
  //#region src/rules/a11y/unknown-aria-attribute.d.ts
672
- declare const a11yUnknownAriaAttribute: Rule;
672
+ export declare const a11yUnknownAriaAttribute: Rule;
673
673
  //#endregion
674
674
  //#region src/rules/a11y/required-aria-props.d.ts
675
- declare const a11yRequiredAriaProps: Rule;
675
+ export declare const a11yRequiredAriaProps: Rule;
676
676
  //#endregion
677
677
  //#region src/rules/a11y/invalid-aria-value.d.ts
678
- declare const a11yInvalidAriaValue: Rule;
678
+ export declare const a11yInvalidAriaValue: Rule;
679
679
  //#endregion
680
680
  //#region src/rules/a11y/interactive-nesting.d.ts
681
- declare const a11yInteractiveNesting: Rule;
681
+ export declare const a11yInteractiveNesting: Rule;
682
682
  //#endregion
683
683
  //#region src/rules/a11y/aria-hidden-focus.d.ts
684
- declare const a11yAriaHiddenFocus: Rule;
684
+ export declare const a11yAriaHiddenFocus: Rule;
685
685
  //#endregion
686
686
  //#region src/rules/a11y/accessible-name.d.ts
687
- declare const a11yAccessibleName: Rule;
687
+ export declare const a11yAccessibleName: Rule;
688
688
  //#endregion
689
689
  //#region src/rules/a11y/label-has-control.d.ts
690
- declare const a11yLabelHasControl: Rule;
690
+ export declare const a11yLabelHasControl: Rule;
691
691
  //#endregion
692
692
  //#region src/rules/a11y/use-list.d.ts
693
- declare const a11yUseList: Rule;
693
+ export declare const a11yUseList: Rule;
694
694
  //#endregion
695
695
  //#region src/rules/a11y/placeholder-label-option.d.ts
696
- declare const a11yPlaceholderLabelOption: Rule;
696
+ export declare const a11yPlaceholderLabelOption: Rule;
697
697
  //#endregion
698
698
  //#region src/rules/a11y/require-datetime.d.ts
699
- declare const a11yRequireDatetime: Rule;
699
+ export declare const a11yRequireDatetime: Rule;
700
700
  //#endregion
701
701
  //#region src/rules/a11y/positive-tabindex.d.ts
702
702
  /**
@@ -708,7 +708,7 @@ declare const a11yRequireDatetime: Rule;
708
708
  * deprecated-* rules' `!inSvg` filter: SVG2 honours `tabindex` with identical focus-order
709
709
  * semantics.
710
710
  */
711
- declare const a11yPositiveTabindex: Rule;
711
+ export declare const a11yPositiveTabindex: Rule;
712
712
  //#endregion
713
713
  //#region src/rules/a11y/no-accesskey.d.ts
714
714
  /**
@@ -718,7 +718,7 @@ declare const a11yPositiveTabindex: Rule;
718
718
  * SVG elements are judged along with HTML — `accesskey` is meaningless there, which makes its
719
719
  * presence wrong in both namespaces.
720
720
  */
721
- declare const a11yNoAccesskey: Rule;
721
+ export declare const a11yNoAccesskey: Rule;
722
722
  //#endregion
723
723
  //#region src/rules/a11y/no-autofocus.d.ts
724
724
  /**
@@ -731,7 +731,7 @@ declare const a11yNoAccesskey: Rule;
731
731
  * hatch. SVG elements are judged along with HTML: SVG2 honours `autofocus` with the same
732
732
  * page-load focus semantics.
733
733
  */
734
- declare const a11yNoAutofocus: Rule;
734
+ export declare const a11yNoAutofocus: Rule;
735
735
  //#endregion
736
736
  //#region src/rules/a11y/no-duplicate-dt.d.ts
737
737
  /**
@@ -739,28 +739,28 @@ declare const a11yNoAutofocus: Rule;
739
739
  * `<dl>`, fully-static names only, whitespace-normalized, case-sensitive) lives in the
740
740
  * collector; see `collectDuplicateDts` in component-parse.ts for the exemption rationale.
741
741
  */
742
- declare const a11yNoDuplicateDt: Rule;
742
+ export declare const a11yNoDuplicateDt: Rule;
743
743
  //#endregion
744
744
  //#region src/rules/a11y/abbr-title.d.ts
745
- declare const a11yAbbrTitle: Rule;
745
+ export declare const a11yAbbrTitle: Rule;
746
746
  //#endregion
747
747
  //#region src/rules/a11y/pattern-title.d.ts
748
- declare const a11yPatternTitle: Rule;
748
+ export declare const a11yPatternTitle: Rule;
749
749
  //#endregion
750
750
  //#region src/rules/a11y/deprecated-element.d.ts
751
- declare const a11yDeprecatedElement: Rule;
751
+ export declare const a11yDeprecatedElement: Rule;
752
752
  //#endregion
753
753
  //#region src/rules/a11y/deprecated-attr.d.ts
754
- declare const a11yDeprecatedAttr: Rule;
754
+ export declare const a11yDeprecatedAttr: Rule;
755
755
  //#endregion
756
756
  //#region src/rules/a11y/disallowed-aria-props.d.ts
757
- declare const a11yDisallowedAriaProps: Rule;
757
+ export declare const a11yDisallowedAriaProps: Rule;
758
758
  //#endregion
759
759
  //#region src/rules/a11y/deprecated-aria.d.ts
760
- declare const a11yDeprecatedAria: Rule;
760
+ export declare const a11yDeprecatedAria: Rule;
761
761
  //#endregion
762
762
  //#region src/rules/a11y/disallowed-element.d.ts
763
- declare const a11yDisallowedElement: Rule;
763
+ export declare const a11yDisallowedElement: Rule;
764
764
  //#endregion
765
765
  //#region src/rules/a11y/permitted-contents.d.ts
766
766
  /**
@@ -769,7 +769,7 @@ declare const a11yDisallowedElement: Rule;
769
769
  * 2026-08-20-permitted-contents-measured.md). Broken structure (closed containers, headings,
770
770
  * structure-bound children) is `warning`; category mismatches are `info`.
771
771
  */
772
- declare const a11yPermittedContents: Rule;
772
+ export declare const a11yPermittedContents: Rule;
773
773
  //#endregion
774
774
  //#region src/rules/a11y/required-element.d.ts
775
775
  /**
@@ -783,10 +783,10 @@ declare const a11yPermittedContents: Rule;
783
783
  * elements (`elementsClosed`), which spreads and expression ids do not disturb; a route missing a
784
784
  * declared tag with the world open emits nothing.
785
785
  */
786
- declare const a11yRequiredElement: Rule;
786
+ export declare const a11yRequiredElement: Rule;
787
787
  //#endregion
788
788
  //#region src/rules/a11y/doctype.d.ts
789
- declare const a11yDoctype: Rule;
789
+ export declare const a11yDoctype: Rule;
790
790
  //#endregion
791
791
  //#region src/rules/a11y/duplicate-landmark.d.ts
792
792
  /**
@@ -795,7 +795,7 @@ declare const a11yDoctype: Rule;
795
795
  * branch-aware-folded representatives, so this rule only counts them per kind, in the
796
796
  * fixed KINDS order (it decides emission order and the PASS anchor).
797
797
  */
798
- declare const a11yDuplicateLandmark: Rule;
798
+ export declare const a11yDuplicateLandmark: Rule;
799
799
  //#endregion
800
800
  //#region src/rules/a11y/top-level-landmark.d.ts
801
801
  /**
@@ -803,14 +803,14 @@ declare const a11yDuplicateLandmark: Rule;
803
803
  * composition places inside another landmark. `ctx.a11y[].nestedLandmarks` already carries one
804
804
  * entry per nested occurrence, so this rule only reports them.
805
805
  */
806
- declare const a11yTopLevelLandmark: Rule;
806
+ export declare const a11yTopLevelLandmark: Rule;
807
807
  //#endregion
808
808
  //#region src/rules/a11y/id-duplication.d.ts
809
809
  /**
810
810
  * a11y/id-duplication — a literal id repeated within a composed route. `ctx.a11y[].ids`
811
811
  * already holds the branch-aware-folded representatives per id, so this rule only counts them.
812
812
  */
813
- declare const a11yIdDuplication: Rule;
813
+ export declare const a11yIdDuplication: Rule;
814
814
  //#endregion
815
815
  //#region src/rules/a11y/no-missing-id-ref.d.ts
816
816
  /**
@@ -819,15 +819,15 @@ declare const a11yIdDuplication: Rule;
819
819
  * `href="#…"` referencing an `id` absent from the composed route. Universal ("no element anywhere defines this id") needs a closed world, so this rule
820
820
  * runs only on routes `ctx.a11y[].fullyResolved` marks fully resolved — see the rule docs.
821
821
  */
822
- declare const a11yNoMissingIdRef: Rule;
822
+ export declare const a11yNoMissingIdRef: Rule;
823
823
  //#endregion
824
824
  //#region src/rules/a11y/unverified-id-ref.d.ts
825
- declare const a11yUnverifiedIdRef: Rule;
825
+ export declare const a11yUnverifiedIdRef: Rule;
826
826
  //#endregion
827
827
  //#region src/rules/index.d.ts
828
- declare const allRules: Rule[];
828
+ export declare const allRules: Rule[];
829
829
  /** One configurable option of a rule, flattened for `svelte-vitals explain`'s output. */
830
- interface RuleOptionInfo {
830
+ export interface RuleOptionInfo {
831
831
  name: string;
832
832
  /** `integer` replaces the default; `string-list`/`string-map` are ADDED to it. */
833
833
  kind: RuleOptionSpec['kind'];
@@ -837,7 +837,7 @@ interface RuleOptionInfo {
837
837
  /** For a `string-list` with a reserved grammar: what each entry must be, in words (the regex stays out of `explain --json`). */
838
838
  pattern?: string;
839
839
  }
840
- interface RuleInfo {
840
+ export interface RuleInfo {
841
841
  id: string;
842
842
  title: string;
843
843
  category: Category;
@@ -853,7 +853,7 @@ interface RuleInfo {
853
853
  options?: RuleOptionInfo[];
854
854
  }
855
855
  /** 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"). */
856
- declare function explainRule(id: string): RuleInfo | undefined;
856
+ export declare function explainRule(id: string): RuleInfo | undefined;
857
857
  //#endregion
858
858
  //#region src/reporter/palette.d.ts
859
859
  /** String decorators for the console reporter. Injected so core stays pure/dep-free. */
@@ -866,9 +866,9 @@ interface Palette {
866
866
  cyan: (s: string) => string;
867
867
  }
868
868
  /** Default: no decoration (identity) — output is byte-identical to plain text. */
869
- declare const noColorPalette: Palette;
869
+ export declare const noColorPalette: Palette;
870
870
  /** Green ≥ 90, yellow ≥ 70, red otherwise — for a 0–100 score. */
871
- declare function scoreColor(p: Palette, score: number): (s: string) => string;
871
+ export declare function scoreColor(p: Palette, score: number): (s: string) => string;
872
872
  //#endregion
873
873
  //#region src/reporter/console.d.ts
874
874
  interface ConsoleReportOptions {
@@ -887,7 +887,7 @@ interface ConsoleReportOptions {
887
887
  * the caller is responsible for printing. Prepends a score header; when byRoute is
888
888
  * set, adds a per-route score tree.
889
889
  */
890
- declare function formatConsoleReport(results: Result[], config: Config, options?: ConsoleReportOptions): string;
890
+ export declare function formatConsoleReport(results: Result[], config: Config, options?: ConsoleReportOptions): string;
891
891
  //#endregion
892
892
  //#region src/reporter/sanitize.d.ts
893
893
  /**
@@ -908,20 +908,20 @@ declare function formatConsoleReport(results: Result[], config: Config, options?
908
908
  * Doesn't special-case every Fe escape form; broaden the CSI/OSC patterns if a
909
909
  * concrete non-CSI/OSC sequence turns out to matter.
910
910
  */
911
- declare function terminalSafe(text: string): string;
911
+ export declare function terminalSafe(text: string): string;
912
912
  //#endregion
913
913
  //#region src/reporter/agent.d.ts
914
914
  /** Render failing findings as an agent-actionable Markdown remediation document (issue #18). */
915
- declare function formatAgentReport(results: Result[], config: Config): string;
915
+ export declare function formatAgentReport(results: Result[], config: Config): string;
916
916
  //#endregion
917
917
  //#region src/reporter/sarif.d.ts
918
918
  /** Render penalized findings as a SARIF 2.1.0 log string (issue #18, design slice 5). */
919
- declare function formatSarifReport(results: Result[], config: Config, meta: {
919
+ export declare function formatSarifReport(results: Result[], config: Config, meta: {
920
920
  version: string;
921
921
  }): string;
922
922
  //#endregion
923
923
  //#region src/reporter/app-shell.d.ts
924
- declare function escapeHtml(s: string): string;
924
+ export declare function escapeHtml(s: string): string;
925
925
  /**
926
926
  * Return the URL only when it uses a safe http/https scheme, else null.
927
927
  * Guards a finding's `docsUrl` against `javascript:`/`data:` hrefs — escapeHtml
@@ -931,7 +931,7 @@ declare function escapeHtml(s: string): string;
931
931
  * plainly http(s):// afterward is rejected. Pure string work — no `URL` global,
932
932
  * keeping core runtime-agnostic and lib-minimal.
933
933
  */
934
- declare function safeHref(url: string): string | null;
934
+ export declare function safeHref(url: string): string | null;
935
935
  /** Provenance of a route's findings: real rendered page vs. source-only analysis. */
936
936
  type RouteBadge = 'measured' | 'static';
937
937
  interface AppSnapshot {
@@ -956,22 +956,22 @@ interface AppSnapshot {
956
956
  * auto-reconnect, since EventSource replays no missed events) — discarding any
957
957
  * response whose `sequence` isn't newer than what's already rendered.
958
958
  */
959
- declare const APP_SCRIPT: string;
959
+ export declare const APP_SCRIPT: string;
960
960
  /** The shell HTML: empty sidebar/detail/topbar containers, the stylesheet, the
961
961
  * client script, and the snapshot embedded as JSON for the client's first paint. */
962
- declare function renderAppShell(snapshot: AppSnapshot): string;
962
+ export declare function renderAppShell(snapshot: AppSnapshot): string;
963
963
  /**
964
964
  * Static (non-live) document over a prebuilt JsonReport — kept as the public name the
965
965
  * html reporter has always exported.
966
966
  */
967
- declare function buildHtmlDocument(report: JsonReport, meta: {
967
+ export declare function buildHtmlDocument(report: JsonReport, meta: {
968
968
  version: string;
969
969
  coreVersion?: string;
970
970
  }): string;
971
971
  /** Render results as the self-contained HTML report (the CLI's `--reporter html`). */
972
- declare function formatHtmlReport(results: Result[], config: Config, meta: {
972
+ export declare function formatHtmlReport(results: Result[], config: Config, meta: {
973
973
  version: string;
974
974
  coreVersion?: string;
975
975
  }): string;
976
976
  //#endregion
977
- export { type A11yOccurrenceInfo, type A11ySkipCause, ANCESTRY_DEPENDENT_TAGS, APP_SCRIPT, ASIDE_DEMOTING_TAGS, type AppSnapshot, type BranchStep, CHILD_NODE_KEYS, type Classification, type CompiledOverride, type ComponentFacts, type ConsoleReportOptions, type DirectiveIndex, type EachBlockFact, type EffectFact, type FailedRule, type HeadTag, type HeadingInfo, type HealthResult, IDREF_ATTRS, type ImageInfo, type KitAlias, type KitModuleFacts, type LandmarkInput, NAMING_ATTRS, type OrphanEffectFact, type Palette, type Project, ROBOTS_SOURCE_PATHS, type ResolvedA11y, type ResolvedHead, type ResolvedHeadings, type ResolvedImages, type RouteBadge, type Rule, type RuleContext, RuleInfo, RuleOptionInfo, type RuleOptionSpec, type RuleOptionsSpec, type Runtime, SECTIONING_TAGS, SITEMAP_SOURCE_PATHS, SVELTE_CONFIG_FILES, type Scope, type ScoreOptions, type ScoreResult, type SourceSpan, type SuppressionDirective, VITE_CONFIG_FILES, a11yAbbrTitle, a11yAccessibleName, a11yAriaHiddenFocus, a11yDeprecatedAria, a11yDeprecatedAttr, a11yDeprecatedElement, a11yDisallowedAriaProps, a11yDisallowedElement, a11yDoctype, a11yDuplicateLandmark, a11yIdDuplication, a11yInteractiveNesting, a11yInvalidAriaValue, a11yInvalidRole, a11yLabelHasControl, a11yNoAccesskey, a11yNoAutofocus, a11yNoDuplicateDt, a11yNoMissingIdRef, a11yPatternTitle, a11yPermittedContents, a11yPlaceholderLabelOption, a11yPositiveTabindex, a11yRequireDatetime, a11yRequiredAriaProps, a11yRequiredElement, a11yTopLevelLandmark, a11yUnknownAriaAttribute, a11yUnverifiedIdRef, a11yUseList, addFactsDirectives, allRules, architectureComponentSize, architectureDirectoryNaming, architectureDocLinkTarget, architecturePrivateScopeImport, architecturePropCount, architectureReservedDirectoryNames, architectureReservedNamePlacement, architectureRouteComponentImport, architectureUnitEntryFile, attrText, attrTextOf, attrValue, attrValueOf, buildHtmlDocument, buildJsonReport, classify, collectComponentFacts, collectKitModuleFacts, collectSourceFiles, collectSuppressions, compileOverrides, computeHealth, computeScore, correctnessAutoplayMuted, correctnessBasePathNavigation, correctnessCheckableBindValue, correctnessEachIndexKey, correctnessEachKey, correctnessEffectAsDerived, correctnessEffectAsOnMount, correctnessInstanceBrowserGlobal, correctnessNonreactiveBuiltinState, correctnessOrphanEffect, correctnessOrphanLifecycle, correctnessPropMutation, correctnessServerBrowserGlobal, correctnessStalePropDerivation, correctnessUnmutatedState, decodeFragmentId, defaultConfig, defaultProject, docsUrlFor, effectiveSeverity, escapeHtml, explainRule, findAttr, findMinifyDisabled, foldOccurrences, formatAgentReport, formatConsoleReport, formatFailedRuleWarning, formatGithubReport, formatHtmlReport, formatJsonReport, formatMarkdownReport, formatSarifReport, hasFailureAtOrAbove, isClassicScriptType, isPenalized, isPlainObject, isTopFragment, lineOf, noColorPalette, parseComponentFacts, parseSvelte, performanceFontPreloadCrossorigin, performanceHeavyImport, performanceIframeLoading, performanceImageDimensions, performanceImageLoadingHint, performanceLcpImage, performanceLoadWaterfall, performanceMinifyDisabled, performanceNamespaceImport, performancePreconnect, performancePreloadMissingAs, performanceRenderBlockingScript, performanceResponsiveImage, performanceSequentialAwaits, performanceStateRaw, renderAppShell, resolveKitAliases, resolveKitPathsBase, resolveLandmark, resolveRepoLocalPath, resolveRuleOptions, runAnalysis, runRules, safeHref, scoreColor, 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, settingSeverity, shouldSkipRangeCheck, skippedFileWarnings, splitTokens, stripTextDirective, summarize, terminalSafe, textFromNodes, unknownDirectiveIds, validateRuleSetting, valueFromNodes, withFailedRulesOff, withReadLimit };
977
+ export { type A11yOccurrenceInfo, type A11ySkipCause, ANCESTRY_DEPENDENT_TAGS, ASIDE_DEMOTING_TAGS, type AppSnapshot, type BranchStep, type Classification, type CompiledOverride, type ComponentFacts, type ConsoleReportOptions, type DirectiveIndex, type EachBlockFact, type EffectFact, type FailedRule, type HeadTag, type HeadingInfo, type HealthResult, IDREF_ATTRS, type ImageInfo, type KitAlias, type KitModuleFacts, type LandmarkInput, NAMING_ATTRS, type OrphanEffectFact, type Palette, type Project, type ResolvedA11y, type ResolvedHead, type ResolvedHeadings, type ResolvedImages, type RouteBadge, type Rule, type RuleContext, type RuleOptionSpec, type RuleOptionsSpec, type Runtime, SECTIONING_TAGS, type Scope, type ScoreOptions, type ScoreResult, type SourceSpan, type SuppressionDirective, buildJsonReport, classify, collectComponentFacts, compileOverrides, computeHealth, computeScore, decodeFragmentId, defaultConfig, defaultProject, docsUrlFor, effectiveSeverity, emptyComponentFacts, foldOccurrences, formatFailedRuleWarning, formatGithubReport, formatJsonReport, formatMarkdownReport, hasFailureAtOrAbove, isClassicScriptType, isPenalized, isPlainObject, isTopFragment, resolveLandmark, resolveRuleOptions, selectRules, settingSeverity, shouldSkipRangeCheck, skippedFileWarnings, splitTokens, stripTextDirective, summarize, validateRuleSetting, withFailedRulesOff, withReadLimit };
package/dist/internal.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as SECTIONING_TAGS, $n as selectRules, $t as valueFromNodes, A as a11yAbbrTitle, An as seoDescriptionLength, At as collectDerivedGuardBindings, B as a11yUseList, Bn as seoOgUrl, Bt as unwrapTs, C as a11yDisallowedElement, Cn as seoHeadingLevelSkip, Cr as isPenalized, Ct as parseKitModuleFacts, D as a11yDeprecatedElement, Dn as seoHreflang, Dt as addBoundNames, E as a11yDeprecatedAttr, En as seoSingleH1, Er as defaultProject, Et as WALK_IGNORED_KEYS, F as isInteractiveContainer, Fn as seoJsonLdRelativeUrl, Ft as matchLifecycleCall, G as a11yInvalidAriaValue, Gn as isPlainObject, Gt as attrText, H as a11yAccessibleName, Hn as seoTwitterCard, Ht as walkEvalScope, I as isInteractiveElement, In as seoJsonLdDeprecatedType, It as parseModuleProgram, J as a11yInvalidRole, Jn as validateRuleSetting, Jt as attrValueOf, K as a11yRequiredAriaProps, Kn as resolveRuleOptions, Kt as attrTextOf, L as literalTabindexValue, Ln as seoJsonLdValidity, Lt as rootObjectName, M as a11yNoAutofocus, Mn as seoJsonLdRequiredProps, Mt as collectProgramBindings, N as a11yNoAccesskey, Nn as seoJsonLdPlaceholder, Nt as collectSuppressions, O as HTML_SPEC, On as seoImageAlt, Ot as collectBrowserGlobalRefs, P as a11yPositiveTabindex, Pn as seoJsonLdDateFormat, Pt as collectSvelteLifecycleImports, Q as NAMING_ATTRS, Qn as formatFailedRuleWarning, Qt as textFromNodes, R as a11yRequireDatetime, Rn as seoSitemapInRobots, Rt as scopeIntroducedNames, S as a11yPermittedContents, Sn as seoSsrDisabled, Sr as docsUrlFor, St as parseInMemoryExports, T as a11yDisallowedAriaProps, Tn as seoDuplicateTitle, Tr as defaultConfig, Tt as isRootRelativePath, U as a11yAriaHiddenFocus, Un as seoIndexability, Ut as walkScoped, V as a11yLabelHasControl, Vn as seoOgDescription, Vt as walkEstree, W as a11yInteractiveNesting, Wn as performancePreconnect, Wt as CHILD_NODE_KEYS, X as ASIDE_DEMOTING_TAGS, Xn as applyRuleSeverities, Xt as lineOf, Y as ANCESTRY_DEPENDENT_TAGS, Yn as applyOverrides, Yt as findAttr, Z as IDREF_ATTRS, Zn as compileOverrides, Zt as parseSvelte, _ as a11yIdDuplication, _n as correctnessUnmutatedState, _r as seoTitlePresence, _t as architectureReservedDirectoryNames, a as formatJsonReport, an as securityJavascriptUrl, ar as performancePreloadMissingAs, at as stripTextDirective, b as a11yDoctype, bn as correctnessEachIndexKey, br as hasFailureAtOrAbove, bt as architecturePrivateScopeImport, c as formatGithubReport, cn as correctnessServerBrowserGlobal, cr as performanceImageDimensions, ct as performanceStateRaw, d as ruleMetaById, dn as correctnessOrphanEffect, dr as seoRobotsTxt, dt as performanceMinifyDisabled, en as architecturePropCount, er as settingSeverity, et as decodeFragmentId, f as severityToSarifLevel, fn as correctnessAutoplayMuted, fr as seoJsonLd, ft as performanceNamespaceImport, g as a11yNoMissingIdRef, gn as correctnessPropMutation, gr as seoDescriptionPresence, gt as architectureReservedNamePlacement, h as a11yUnverifiedIdRef, hn as correctnessStalePropDerivation, hr as seoCanonicalUrl, ht as architectureRouteComponentImport, i as buildJsonReport, in as securityHandlerStateWrite, ir as performanceFontPreloadCrossorigin, it as splitTokens, j as a11yNoDuplicateDt, jn as seoTitleLength, jt as collectNamedImportAliases, k as a11yPatternTitle, kn as seoCharset, kt as collectBrowserGuardImports, l as SEVERITY_RANK, ln as correctnessBasePathNavigation, lr as seoHtmlLang, lt as performanceSequentialAwaits, m as explainRule, mn as correctnessNonreactiveBuiltinState, mr as seoOgImage, mt as architectureDocLinkTarget, n as mdEscape, nn as securitySharedStateImport, nr as performanceRenderBlockingScript, nt as isTopFragment, o as computeHealth, on as securityRawHtml, or as performanceResponsiveImage, ot as resolveRole, p as allRules, pn as correctnessCheckableBindValue, pr as seoOgTitle, pt as performanceHeavyImport, q as a11yUnknownAriaAttribute, qn as shouldSkipRangeCheck, qt as attrValue, r as terminalSafe, rn as securityServerModuleState, rr as performanceLcpImage, rt as resolveLandmark, s as computeScore, sn as correctnessInstanceBrowserGlobal, sr as performanceImageLoadingHint, st as performanceIframeLoading, t as formatMarkdownReport, tn as architectureComponentSize, tr as withFailedRulesOff, tt as foldOccurrences, u as messageText, un as correctnessOrphanLifecycle, ur as seoSitemapXml, ut as performanceLoadWaterfall, v as a11yTopLevelLandmark, vn as correctnessEffectAsOnMount, vr as classify, vt as architectureDirectoryNaming, w as a11yDeprecatedAria, wn as seoDuplicateDescription, wt as resolveRepoLocalPath, x as a11yRequiredElement, xn as correctnessEachKey, xr as summarize, xt as collectTopLevelBindings, y as a11yDuplicateLandmark, yn as correctnessEffectAsDerived, yr as effectiveSeverity, yt as architectureUnitEntryFile, z as a11yPlaceholderLabelOption, zn as seoViewport, zt as unwrapExport } from "./markdown-MAU66kv0.js";
1
+ import { $ as SECTIONING_TAGS, $n as selectRules, $t as valueFromNodes, A as a11yAbbrTitle, An as seoDescriptionLength, At as collectDerivedGuardBindings, B as a11yUseList, Bn as seoOgUrl, Bt as unwrapTs, C as a11yDisallowedElement, Cn as seoHeadingLevelSkip, Cr as isPenalized, Ct as parseKitModuleFacts, D as a11yDeprecatedElement, Dn as seoHreflang, Dt as addBoundNames, E as a11yDeprecatedAttr, En as seoSingleH1, Er as defaultProject, Et as WALK_IGNORED_KEYS, F as isInteractiveContainer, Fn as seoJsonLdRelativeUrl, Ft as matchLifecycleCall, G as a11yInvalidAriaValue, Gn as isPlainObject, Gt as attrText, H as a11yAccessibleName, Hn as seoTwitterCard, Ht as walkEvalScope, I as isInteractiveElement, In as seoJsonLdDeprecatedType, It as parseModuleProgram, J as a11yInvalidRole, Jn as validateRuleSetting, Jt as attrValueOf, K as a11yRequiredAriaProps, Kn as resolveRuleOptions, Kt as attrTextOf, L as literalTabindexValue, Ln as seoJsonLdValidity, Lt as rootObjectName, M as a11yNoAutofocus, Mn as seoJsonLdRequiredProps, Mt as collectProgramBindings, N as a11yNoAccesskey, Nn as seoJsonLdPlaceholder, Nt as collectSuppressions, O as HTML_SPEC, On as seoImageAlt, Ot as collectBrowserGlobalRefs, P as a11yPositiveTabindex, Pn as seoJsonLdDateFormat, Pt as collectSvelteLifecycleImports, Q as NAMING_ATTRS, Qn as formatFailedRuleWarning, Qt as textFromNodes, R as a11yRequireDatetime, Rn as seoSitemapInRobots, Rt as scopeIntroducedNames, S as a11yPermittedContents, Sn as seoSsrDisabled, Sr as docsUrlFor, St as parseInMemoryExports, T as a11yDisallowedAriaProps, Tn as seoDuplicateTitle, Tr as defaultConfig, Tt as isRootRelativePath, U as a11yAriaHiddenFocus, Un as seoIndexability, Ut as walkScoped, V as a11yLabelHasControl, Vn as seoOgDescription, Vt as walkEstree, W as a11yInteractiveNesting, Wn as performancePreconnect, Wt as CHILD_NODE_KEYS, X as ASIDE_DEMOTING_TAGS, Xn as applyRuleSeverities, Xt as lineOf, Y as ANCESTRY_DEPENDENT_TAGS, Yn as applyOverrides, Yt as findAttr, Z as IDREF_ATTRS, Zn as compileOverrides, Zt as parseSvelte, _ as a11yIdDuplication, _n as correctnessUnmutatedState, _r as seoTitlePresence, _t as architectureReservedDirectoryNames, a as formatJsonReport, an as securityJavascriptUrl, ar as performancePreloadMissingAs, at as stripTextDirective, b as a11yDoctype, bn as correctnessEachIndexKey, br as hasFailureAtOrAbove, bt as architecturePrivateScopeImport, c as formatGithubReport, cn as correctnessServerBrowserGlobal, cr as performanceImageDimensions, ct as performanceStateRaw, d as ruleMetaById, dn as correctnessOrphanEffect, dr as seoRobotsTxt, dt as performanceMinifyDisabled, en as architecturePropCount, er as settingSeverity, et as decodeFragmentId, f as severityToSarifLevel, fn as correctnessAutoplayMuted, fr as seoJsonLd, ft as performanceNamespaceImport, g as a11yNoMissingIdRef, gn as correctnessPropMutation, gr as seoDescriptionPresence, gt as architectureReservedNamePlacement, h as a11yUnverifiedIdRef, hn as correctnessStalePropDerivation, hr as seoCanonicalUrl, ht as architectureRouteComponentImport, i as buildJsonReport, in as securityHandlerStateWrite, ir as performanceFontPreloadCrossorigin, it as splitTokens, j as a11yNoDuplicateDt, jn as seoTitleLength, jt as collectNamedImportAliases, k as a11yPatternTitle, kn as seoCharset, kt as collectBrowserGuardImports, l as SEVERITY_RANK, ln as correctnessBasePathNavigation, lr as seoHtmlLang, lt as performanceSequentialAwaits, m as explainRule, mn as correctnessNonreactiveBuiltinState, mr as seoOgImage, mt as architectureDocLinkTarget, n as mdEscape, nn as securitySharedStateImport, nr as performanceRenderBlockingScript, nt as isTopFragment, o as computeHealth, on as securityRawHtml, or as performanceResponsiveImage, ot as resolveRole, p as allRules, pn as correctnessCheckableBindValue, pr as seoOgTitle, pt as performanceHeavyImport, q as a11yUnknownAriaAttribute, qn as shouldSkipRangeCheck, qt as attrValue, r as terminalSafe, rn as securityServerModuleState, rr as performanceLcpImage, rt as resolveLandmark, s as computeScore, sn as correctnessInstanceBrowserGlobal, sr as performanceImageLoadingHint, st as performanceIframeLoading, t as formatMarkdownReport, tn as architectureComponentSize, tr as withFailedRulesOff, tt as foldOccurrences, u as messageText, un as correctnessOrphanLifecycle, ur as seoSitemapXml, ut as performanceLoadWaterfall, v as a11yTopLevelLandmark, vn as correctnessEffectAsOnMount, vr as classify, vt as architectureDirectoryNaming, w as a11yDeprecatedAria, wn as seoDuplicateDescription, wt as resolveRepoLocalPath, x as a11yRequiredElement, xn as correctnessEachKey, xr as summarize, xt as collectTopLevelBindings, y as a11yDuplicateLandmark, yn as correctnessEffectAsDerived, yr as effectiveSeverity, yt as architectureUnitEntryFile, z as a11yPlaceholderLabelOption, zn as seoViewport, zt as unwrapExport } from "./markdown-DJLlGb28.js";
2
2
  //#region src/head.ts
3
3
  const JS_MIME_TYPES = /* @__PURE__ */ new Set([
4
4
  "application/ecmascript",
@@ -175,13 +175,14 @@ function collectStateWrites(root, stateNames, acc, kinds) {
175
175
  addBoundNames(n.left, bound);
176
176
  for (const name of bound) if (stateNames.has(name) && !shadowed(name)) record(name, "reassign");
177
177
  }
178
- } else if (n?.type === "UpdateExpression") if (n.argument?.type === "Identifier") {
179
- if (stateNames.has(n.argument.name) && !shadowed(n.argument.name)) record(n.argument.name, "reassign");
180
- } else {
181
- const r = rootObjectName(n.argument);
182
- if (r && stateNames.has(r) && !shadowed(r)) record(r, "mutate");
183
- }
184
- else if (n?.type === "UnaryExpression" && n.operator === "delete") {
178
+ } else if (n?.type === "UpdateExpression") {
179
+ if (n.argument?.type === "Identifier") {
180
+ if (stateNames.has(n.argument.name) && !shadowed(n.argument.name)) record(n.argument.name, "reassign");
181
+ } else {
182
+ const r = rootObjectName(n.argument);
183
+ if (r && stateNames.has(r) && !shadowed(r)) record(r, "mutate");
184
+ }
185
+ } else if (n?.type === "UnaryExpression" && n.operator === "delete") {
185
186
  const r = rootObjectName(n.argument);
186
187
  if (r && stateNames.has(r) && !shadowed(r)) record(r, "mutate");
187
188
  } else if (n?.type === "CallExpression") {
@@ -1112,17 +1113,19 @@ function collectUnnamedInteractive(node, source, acc, labels) {
1112
1113
  const hasSpread = node.attributes.some((a) => a?.type === "SpreadAttribute");
1113
1114
  const id = attrText(node.attributes, "id");
1114
1115
  const namedByLabel = target !== "a" && (labels.nodes.has(node) || id !== void 0 && labels.ids.has(id.trim()));
1115
- if (target && !hasSpread && !namedByLabel) if (target === "input") {
1116
- if (!hasNamingAttr(node.attributes) && !hasNamingValue(node.attributes, "alt")) acc.push({
1117
- tag: node.name,
1118
- line: lineOf(source, node.start)
1119
- });
1120
- } else {
1121
- const scan = scanAccessibleNameSubtree(node);
1122
- if (!hasNamingAttr(node.attributes) && !scan.named && !scan.unknowable) acc.push({
1123
- tag: node.name,
1124
- line: lineOf(source, node.start)
1125
- });
1116
+ if (target && !hasSpread && !namedByLabel) {
1117
+ if (target === "input") {
1118
+ if (!hasNamingAttr(node.attributes) && !hasNamingValue(node.attributes, "alt")) acc.push({
1119
+ tag: node.name,
1120
+ line: lineOf(source, node.start)
1121
+ });
1122
+ } else {
1123
+ const scan = scanAccessibleNameSubtree(node);
1124
+ if (!hasNamingAttr(node.attributes) && !scan.named && !scan.unknowable) acc.push({
1125
+ tag: node.name,
1126
+ line: lineOf(source, node.start)
1127
+ });
1128
+ }
1126
1129
  }
1127
1130
  }
1128
1131
  for (const key of CHILD_NODE_KEYS) if (key in node) collectUnnamedInteractive(node[key], source, acc, labels);
@@ -3989,4 +3992,4 @@ function formatHtmlReport(results, config, meta) {
3989
3992
  return buildHtmlDocument(buildJsonReport(results, config, meta), meta);
3990
3993
  }
3991
3994
  //#endregion
3992
- export { ANCESTRY_DEPENDENT_TAGS, APP_SCRIPT, ASIDE_DEMOTING_TAGS, CHILD_NODE_KEYS, IDREF_ATTRS, NAMING_ATTRS, ROBOTS_SOURCE_PATHS, SECTIONING_TAGS, SITEMAP_SOURCE_PATHS, SVELTE_CONFIG_FILES, VITE_CONFIG_FILES, a11yAbbrTitle, a11yAccessibleName, a11yAriaHiddenFocus, a11yDeprecatedAria, a11yDeprecatedAttr, a11yDeprecatedElement, a11yDisallowedAriaProps, a11yDisallowedElement, a11yDoctype, a11yDuplicateLandmark, a11yIdDuplication, a11yInteractiveNesting, a11yInvalidAriaValue, a11yInvalidRole, a11yLabelHasControl, a11yNoAccesskey, a11yNoAutofocus, a11yNoDuplicateDt, a11yNoMissingIdRef, a11yPatternTitle, a11yPermittedContents, a11yPlaceholderLabelOption, a11yPositiveTabindex, a11yRequireDatetime, a11yRequiredAriaProps, a11yRequiredElement, a11yTopLevelLandmark, a11yUnknownAriaAttribute, a11yUnverifiedIdRef, a11yUseList, addFactsDirectives, allRules, architectureComponentSize, architectureDirectoryNaming, architectureDocLinkTarget, architecturePrivateScopeImport, architecturePropCount, architectureReservedDirectoryNames, architectureReservedNamePlacement, architectureRouteComponentImport, architectureUnitEntryFile, attrText, attrTextOf, attrValue, attrValueOf, buildHtmlDocument, buildJsonReport, classify, collectComponentFacts, collectKitModuleFacts, collectSourceFiles, collectSuppressions, compileOverrides, computeHealth, computeScore, correctnessAutoplayMuted, correctnessBasePathNavigation, correctnessCheckableBindValue, correctnessEachIndexKey, correctnessEachKey, correctnessEffectAsDerived, correctnessEffectAsOnMount, correctnessInstanceBrowserGlobal, correctnessNonreactiveBuiltinState, correctnessOrphanEffect, correctnessOrphanLifecycle, correctnessPropMutation, correctnessServerBrowserGlobal, correctnessStalePropDerivation, correctnessUnmutatedState, decodeFragmentId, defaultConfig, defaultProject, docsUrlFor, effectiveSeverity, escapeHtml, explainRule, findAttr, findMinifyDisabled, foldOccurrences, formatAgentReport, formatConsoleReport, formatFailedRuleWarning, formatGithubReport, formatHtmlReport, formatJsonReport, formatMarkdownReport, formatSarifReport, hasFailureAtOrAbove, isClassicScriptType, isPenalized, isPlainObject, isTopFragment, lineOf, noColorPalette, parseComponentFacts, parseSvelte, performanceFontPreloadCrossorigin, performanceHeavyImport, performanceIframeLoading, performanceImageDimensions, performanceImageLoadingHint, performanceLcpImage, performanceLoadWaterfall, performanceMinifyDisabled, performanceNamespaceImport, performancePreconnect, performancePreloadMissingAs, performanceRenderBlockingScript, performanceResponsiveImage, performanceSequentialAwaits, performanceStateRaw, renderAppShell, resolveKitAliases, resolveKitPathsBase, resolveLandmark, resolveRepoLocalPath, resolveRuleOptions, runAnalysis, runRules, safeHref, scoreColor, 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, settingSeverity, shouldSkipRangeCheck, skippedFileWarnings, splitTokens, stripTextDirective, summarize, terminalSafe, textFromNodes, unknownDirectiveIds, validateRuleSetting, valueFromNodes, withFailedRulesOff, withReadLimit };
3995
+ export { ANCESTRY_DEPENDENT_TAGS, APP_SCRIPT, ASIDE_DEMOTING_TAGS, CHILD_NODE_KEYS, IDREF_ATTRS, NAMING_ATTRS, ROBOTS_SOURCE_PATHS, SECTIONING_TAGS, SITEMAP_SOURCE_PATHS, SVELTE_CONFIG_FILES, VITE_CONFIG_FILES, a11yAbbrTitle, a11yAccessibleName, a11yAriaHiddenFocus, a11yDeprecatedAria, a11yDeprecatedAttr, a11yDeprecatedElement, a11yDisallowedAriaProps, a11yDisallowedElement, a11yDoctype, a11yDuplicateLandmark, a11yIdDuplication, a11yInteractiveNesting, a11yInvalidAriaValue, a11yInvalidRole, a11yLabelHasControl, a11yNoAccesskey, a11yNoAutofocus, a11yNoDuplicateDt, a11yNoMissingIdRef, a11yPatternTitle, a11yPermittedContents, a11yPlaceholderLabelOption, a11yPositiveTabindex, a11yRequireDatetime, a11yRequiredAriaProps, a11yRequiredElement, a11yTopLevelLandmark, a11yUnknownAriaAttribute, a11yUnverifiedIdRef, a11yUseList, addFactsDirectives, allRules, architectureComponentSize, architectureDirectoryNaming, architectureDocLinkTarget, architecturePrivateScopeImport, architecturePropCount, architectureReservedDirectoryNames, architectureReservedNamePlacement, architectureRouteComponentImport, architectureUnitEntryFile, attrText, attrTextOf, attrValue, attrValueOf, buildHtmlDocument, buildJsonReport, classify, collectComponentFacts, collectKitModuleFacts, collectSourceFiles, collectSuppressions, compileOverrides, computeHealth, computeScore, correctnessAutoplayMuted, correctnessBasePathNavigation, correctnessCheckableBindValue, correctnessEachIndexKey, correctnessEachKey, correctnessEffectAsDerived, correctnessEffectAsOnMount, correctnessInstanceBrowserGlobal, correctnessNonreactiveBuiltinState, correctnessOrphanEffect, correctnessOrphanLifecycle, correctnessPropMutation, correctnessServerBrowserGlobal, correctnessStalePropDerivation, correctnessUnmutatedState, decodeFragmentId, defaultConfig, defaultProject, docsUrlFor, effectiveSeverity, emptyComponentFacts, escapeHtml, explainRule, findAttr, findMinifyDisabled, foldOccurrences, formatAgentReport, formatConsoleReport, formatFailedRuleWarning, formatGithubReport, formatHtmlReport, formatJsonReport, formatMarkdownReport, formatSarifReport, hasFailureAtOrAbove, isClassicScriptType, isPenalized, isPlainObject, isTopFragment, lineOf, noColorPalette, parseComponentFacts, parseSvelte, performanceFontPreloadCrossorigin, performanceHeavyImport, performanceIframeLoading, performanceImageDimensions, performanceImageLoadingHint, performanceLcpImage, performanceLoadWaterfall, performanceMinifyDisabled, performanceNamespaceImport, performancePreconnect, performancePreloadMissingAs, performanceRenderBlockingScript, performanceResponsiveImage, performanceSequentialAwaits, performanceStateRaw, renderAppShell, resolveKitAliases, resolveKitPathsBase, resolveLandmark, resolveRepoLocalPath, resolveRuleOptions, runAnalysis, runRules, safeHref, scoreColor, 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, settingSeverity, shouldSkipRangeCheck, skippedFileWarnings, splitTokens, stripTextDirective, summarize, terminalSafe, textFromNodes, unknownDirectiveIds, validateRuleSetting, valueFromNodes, withFailedRulesOff, withReadLimit };
@@ -358,6 +358,13 @@ declare function skippedFileWarnings(facts: readonly {
358
358
  parseFailed?: true;
359
359
  readFailed?: true;
360
360
  }[]): string[];
361
+ /**
362
+ * Fallback facts for a file that fails to read or parse (dev tooling must never
363
+ * throw). This is the single source of truth for the empty-facts shape — add new
364
+ * `ComponentFacts` fields HERE so TypeScript catches every call site that still
365
+ * needs updating.
366
+ */
367
+ declare function emptyComponentFacts(file: string): ComponentFacts;
361
368
  /**
362
369
  * Scan every `.svelte` component and `.svelte.ts`/`.svelte.js` runes module under `src/`
363
370
  * for Correctness/Security/Architecture/Bundle-Performance/Accessibility facts. Independent
@@ -1254,4 +1261,4 @@ declare function formatJsonReport(results: Result[], config: Config, meta: {
1254
1261
  version: string;
1255
1262
  }, ruleIds?: readonly string[], examined?: Record<string, Record<string, number>>, skipped?: JsonReport['skipped']): string;
1256
1263
  //#endregion
1257
- export { Classification as $, ANCESTRY_DEPENDENT_TAGS as A, SuppressionDirective as At, isTopFragment as B, formatFailedRuleWarning as C, defaultProject as Ct, KitModuleFacts as D, EffectFact as Dt, withFailedRulesOff as E, EachBlockFact as Et, NAMING_ATTRS as F, ResolvedHeadings as G, splitTokens as H, ResolvedA11y as I, HeadTag as J, ImageInfo as K, SECTIONING_TAGS as L, BranchStep as M, skippedFileWarnings as Mt, IDREF_ATTRS as N, Runtime as Nt, A11yOccurrenceInfo as O, OrphanEffectFact as Ot, LandmarkInput as P, withReadLimit as Pt, formatGithubReport as Q, decodeFragmentId as R, compileOverrides as S, defaultConfig as St, settingSeverity as T, ComponentFacts as Tt, stripTextDirective as U, resolveLandmark as V, HeadingInfo as W, isClassicScriptType as X, ResolvedHead as Y, formatMarkdownReport as Z, isPlainObject as _, RuleSettingObject as _t, HealthResult as a, CATEGORIES as at, validateRuleSetting as b, TreatDynamicAs as bt, ScoreResult as c, Detection as ct, Rule as d, Presence as dt, Summary as et, RuleContext as f, Project as ft, RuleOptionsSpec as g, RuleSetting as gt, RuleOptionSpec as h, RuleOverride as ht, formatJsonReport as i, summarize as it, ASIDE_DEMOTING_TAGS as j, collectComponentFacts as jt, A11ySkipCause as k, SourceSpan as kt, computeHealth as l, Fix as lt, isPenalized as m, RuleOptions as mt, RuleEvidence as n, effectiveSeverity as nt, ScoreModel as o, Category as ot, docsUrlFor as p, Result as pt, ResolvedImages as q, buildJsonReport as r, hasFailureAtOrAbove as rt, ScoreOptions as s, Config as st, JsonReport as t, classify as tt, computeScore as u, KitAlias as ut, resolveRuleOptions as v, Scope as vt, selectRules as w, defineConfig as wt, CompiledOverride as x, Value as xt, shouldSkipRangeCheck as y, Severity as yt, foldOccurrences as z };
1264
+ export { Classification as $, ANCESTRY_DEPENDENT_TAGS as A, SuppressionDirective as At, isTopFragment as B, formatFailedRuleWarning as C, defaultProject as Ct, KitModuleFacts as D, EffectFact as Dt, withFailedRulesOff as E, EachBlockFact as Et, NAMING_ATTRS as F, withReadLimit as Ft, ResolvedHeadings as G, splitTokens as H, ResolvedA11y as I, HeadTag as J, ImageInfo as K, SECTIONING_TAGS as L, BranchStep as M, emptyComponentFacts as Mt, IDREF_ATTRS as N, skippedFileWarnings as Nt, A11yOccurrenceInfo as O, OrphanEffectFact as Ot, LandmarkInput as P, Runtime as Pt, formatGithubReport as Q, decodeFragmentId as R, compileOverrides as S, defaultConfig as St, settingSeverity as T, ComponentFacts as Tt, stripTextDirective as U, resolveLandmark as V, HeadingInfo as W, isClassicScriptType as X, ResolvedHead as Y, formatMarkdownReport as Z, isPlainObject as _, RuleSettingObject as _t, HealthResult as a, CATEGORIES as at, validateRuleSetting as b, TreatDynamicAs as bt, ScoreResult as c, Detection as ct, Rule as d, Presence as dt, Summary as et, RuleContext as f, Project as ft, RuleOptionsSpec as g, RuleSetting as gt, RuleOptionSpec as h, RuleOverride as ht, formatJsonReport as i, summarize as it, ASIDE_DEMOTING_TAGS as j, collectComponentFacts as jt, A11ySkipCause as k, SourceSpan as kt, computeHealth as l, Fix as lt, isPenalized as m, RuleOptions as mt, RuleEvidence as n, effectiveSeverity as nt, ScoreModel as o, Category as ot, docsUrlFor as p, Result as pt, ResolvedImages as q, buildJsonReport as r, hasFailureAtOrAbove as rt, ScoreOptions as s, Config as st, JsonReport as t, classify as tt, computeScore as u, KitAlias as ut, resolveRuleOptions as v, Scope as vt, selectRules as w, defineConfig as wt, CompiledOverride as x, Value as xt, shouldSkipRangeCheck as y, Severity as yt, foldOccurrences as z };
@@ -4271,18 +4271,20 @@ function parseKitModuleFacts(source, filename, aliases) {
4271
4271
  if (method === "set" || method === "update") {
4272
4272
  const r = importedRoot(n.callee.object);
4273
4273
  const spec = r ? importedSpecifiers.get(r) : void 0;
4274
- if (r && spec !== void 0) if (isLocalStateSpecifier(spec, filename, aliases)) write = {
4275
- name: r,
4276
- via: "set-call"
4277
- };
4278
- else {
4279
- const resolved = serverRootRelativePath(spec, filename, aliases);
4280
- if (resolved !== void 0 && inHandler) pendingServerStoreWrites.push({
4274
+ if (r && spec !== void 0) {
4275
+ if (isLocalStateSpecifier(spec, filename, aliases)) write = {
4281
4276
  name: r,
4282
- imported: importedNames.get(r) ?? r,
4283
- resolved,
4284
- line: line(n.start)
4285
- });
4277
+ via: "set-call"
4278
+ };
4279
+ else {
4280
+ const resolved = serverRootRelativePath(spec, filename, aliases);
4281
+ if (resolved !== void 0 && inHandler) pendingServerStoreWrites.push({
4282
+ name: r,
4283
+ imported: importedNames.get(r) ?? r,
4284
+ resolved,
4285
+ line: line(n.start)
4286
+ });
4287
+ }
4286
4288
  }
4287
4289
  }
4288
4290
  } else if (n.type === "AssignmentExpression" && (n.left?.type === "ObjectPattern" || n.left?.type === "ArrayPattern")) {
@@ -4303,14 +4305,16 @@ function parseKitModuleFacts(source, filename, aliases) {
4303
4305
  };
4304
4306
  scanPatternTargets(n.left);
4305
4307
  }
4306
- if (write) if (inHandler) importedStateWrites.push({
4307
- ...write,
4308
- line: line(n.start)
4309
- });
4310
- else importedStateWritesOutsideHandlers.push({
4311
- name: write.name,
4312
- line: line(n.start)
4313
- });
4308
+ if (write) {
4309
+ if (inHandler) importedStateWrites.push({
4310
+ ...write,
4311
+ line: line(n.start)
4312
+ });
4313
+ else importedStateWritesOutsideHandlers.push({
4314
+ name: write.name,
4315
+ line: line(n.start)
4316
+ });
4317
+ }
4314
4318
  if (n.type === "CallExpression" && (!inFunction || inHandler || inStartup)) {
4315
4319
  const m = matchLifecycleCall(n, svelteImports);
4316
4320
  if (m && !shadowed.has(m.local)) lifecycleCalls.push({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@svelte-vitals/core",
3
- "version": "0.51.2",
3
+ "version": "0.54.6",
4
4
  "description": "Shared, runtime-agnostic core for svelte-vitals (types, rule engine, scorer, reporter).",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -32,7 +32,7 @@
32
32
  "@markuplint/html-spec": "4.18.0",
33
33
  "@types/aria-query": "^5.0.4",
34
34
  "@types/estree": "^1.0.9",
35
- "@types/node": "^24.13.3",
35
+ "@types/node": "^24.13.4",
36
36
  "schema-dts": "^2.0.0"
37
37
  },
38
38
  "exports": {