@svelte-vitals/core 0.41.1 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![npm](https://img.shields.io/npm/v/@svelte-vitals/core)](https://www.npmjs.com/package/@svelte-vitals/core)
4
4
  [![MIT](https://img.shields.io/npm/l/@svelte-vitals/core)](https://opensource.org/licenses/MIT)
5
5
 
6
- Runtime-agnostic core for [svelte-vitals](https://github.com/oekazuma/svelte-vitals): shared types, the rule engine, scorer, and reporters, plus the full rule set across five categories — SEO, Performance, Correctness, Security, Architecture.
6
+ Runtime-agnostic core for [svelte-vitals](https://github.com/oekazuma/svelte-vitals): shared types, the rule engine, scorer, and reporters, plus the full rule set across six categories — SEO, Performance, Correctness, Security, Architecture, Accessibility.
7
7
 
8
8
  This package is **mode-independent** and contains no I/O — it operates on a normalized `ResolvedHead[]` intermediate representation, so the same rules run unchanged whether heads come from static source analysis (the `svelte-vitals` CLI) or from prerendered HTML (the `@svelte-vitals/vite` plugin). It has zero runtime dependencies and no `node:` imports.
9
9
 
package/dist/index.d.ts CHANGED
@@ -81,6 +81,18 @@ interface Project {
81
81
  * list is never empty: `$lib` is always prepended.
82
82
  */
83
83
  kitAliases?: KitAlias[];
84
+ /**
85
+ * Whether `src/app.html` opens with `<!doctype html>` (a11y/doctype). Set from the same read
86
+ * as `htmlLang`; absent when the file wasn't read (missing or unreadable) — the rule stays
87
+ * silent then, like `viteMinifyDisabled`'s absent convention.
88
+ */
89
+ appHtmlDoctype?: boolean;
90
+ /**
91
+ * Literal `id` attributes in `src/app.html`, from the same read as `htmlLang`. The shell is part
92
+ * of every rendered document, so its ids satisfy a route's id references (a11y/no-missing-id-ref);
93
+ * absent when the file wasn't read.
94
+ */
95
+ appHtmlIds?: string[];
84
96
  }
85
97
  declare const defaultProject: Project;
86
98
  /** A concrete, agent-actionable remediation for a finding (design §10, issue #18). */
@@ -113,7 +125,7 @@ interface Result {
113
125
  line?: number;
114
126
  }
115
127
  type Scope = 'route' | 'project' | 'component';
116
- type Category = 'seo' | 'performance' | 'correctness' | 'security' | 'architecture';
128
+ type Category = 'seo' | 'performance' | 'correctness' | 'security' | 'architecture' | 'a11y';
117
129
  /**
118
130
  * Every category, as a runtime list — for validating a user-supplied category
119
131
  * name and naming the known ones in the error. One definition so a category
@@ -318,6 +330,81 @@ interface ResolvedHeadings {
318
330
  componentHeadings?: HeadingInfo[];
319
331
  }
320
332
 
333
+ /** One step of a template branch address: which exclusive block, and which arm of it. */
334
+ interface BranchStep {
335
+ /** index of the {#if}/{#await} block among its file's blocks (document order) */
336
+ group: number;
337
+ /** branch index within the group (if: 0..n consequent→else; await: 0=pending,1=then,2=catch) */
338
+ branch: number;
339
+ }
340
+ /** Where a folded occurrence sits, for the finding location. */
341
+ interface A11yOccurrenceInfo {
342
+ file: string;
343
+ line: number;
344
+ }
345
+ /**
346
+ * Route-scoped a11y facts, the mode-independent boundary for the landmark/id rules
347
+ * (mirrors headings.ts). Source mode composes the layout chain plus its resolved
348
+ * components; rendered mode reads the prerendered document.
349
+ */
350
+ interface ResolvedA11y {
351
+ route: string;
352
+ /** representatives per landmark kind after the branch-aware fold ('main' | 'banner' | 'contentinfo' | 'complementary') */
353
+ landmarks: Record<string, A11yOccurrenceInfo[]>;
354
+ /** landmark occurrences nested inside another landmark after composition */
355
+ nestedLandmarks: {
356
+ kind: string;
357
+ within: string;
358
+ file: string;
359
+ line: number;
360
+ }[];
361
+ /** representatives per literal id */
362
+ ids: Record<string, A11yOccurrenceInfo[]>;
363
+ /** literal id references */
364
+ idRefs: {
365
+ id: string;
366
+ attr: string;
367
+ file: string;
368
+ line: number;
369
+ }[];
370
+ /** optimistic candidates: every literal id anywhere (all branches, each/snippet bodies, components, app.html) */
371
+ idCandidates: string[];
372
+ /** closed world holds: every component resolved, no depth truncation, no {@html}/spread, no dynamic id */
373
+ fullyResolved: boolean;
374
+ }
375
+ type Foldable = {
376
+ key: string;
377
+ path: BranchStep[];
378
+ repeatable: boolean;
379
+ };
380
+ /**
381
+ * Branch-aware occurrence fold (design "Control-flow semantics"): within a branch
382
+ * occurrences sum, across the arms of one exclusive block the arm with the most
383
+ * occurrences wins (tie → lowest branch index) and ITS occurrences are the group's
384
+ * representatives — so a caller's count is always `list.length`, with a location per
385
+ * representative. `{#each}`/`{#snippet}` occurrences render 0..N times and drop out.
386
+ * The max is per key: there is no scalar total to maximize.
387
+ */
388
+ declare function foldOccurrences<T extends Foldable>(nodes: T[]): Map<string, T[]>;
389
+ /**
390
+ * Decode a fragment identifier the way navigation does before matching an element id
391
+ * (`href="#caf%C3%A9"` targets `id="café"`). Malformed escapes are kept verbatim —
392
+ * the browser would also fail to decode them, so the raw text is the comparable form.
393
+ */
394
+ declare function decodeFragmentId(fragment: string): string;
395
+ /** Whitespace-split tokens of a (possibly undefined) literal attribute value. */
396
+ declare function splitTokens(value: string | undefined): string[];
397
+ /** Explicit `role` values that map to the landmark kinds the route rules inspect. */
398
+ declare const LANDMARK_ROLES: ReadonlySet<string>;
399
+ /** Attributes whose (whitespace-tokenized) values reference element ids. */
400
+ declare const IDREF_ATTRS: readonly string[];
401
+ /**
402
+ * Whether a decoded URL fragment is HTML's "top of the document" indicator: `#top` (ASCII
403
+ * case-insensitive) scrolls to the top when no element has that id, so it is never a missing
404
+ * reference. Compare AFTER percent-decoding — `#%74op` navigates identically to `#top`.
405
+ */
406
+ declare function isTopFragment(id: string): boolean;
407
+
321
408
  /**
322
409
  * Component-body facts for the Correctness category — the source-analysis boundary
323
410
  * (mirrors images.ts / headings.ts). Collected by the static (CLI) provider only;
@@ -402,6 +489,43 @@ interface BasePathLinkFact {
402
489
  /** 1-based source line, or 0 if unknown. */
403
490
  line: number;
404
491
  }
492
+ /** An interactive element (e.g. `<button>`) found nested inside another interactive
493
+ * container (e.g. `<a href>`) (a11y/interactive-nesting). */
494
+ interface InteractiveNestingFact {
495
+ containerTag: string;
496
+ descendantTag: string;
497
+ /** 1-based source line of the descendant, or 0 if unknown. */
498
+ line: number;
499
+ }
500
+ /** A `button`/`a href`/`input type="image"` with no computable accessible name (a11y/accessible-name). */
501
+ interface UnnamedInteractiveFact {
502
+ tag: string;
503
+ /** 1-based source line, or 0 if unknown. */
504
+ line: number;
505
+ }
506
+ /** An element carrying a `role` and/or `aria-*` attribute(s) (a11y ARIA rules). */
507
+ interface AriaElementFact {
508
+ tag: string;
509
+ /** 1-based source line, or 0 if unknown. */
510
+ line: number;
511
+ /** literal role value; undefined = no role attr; { expression: true } = dynamic */
512
+ role?: {
513
+ literal?: string;
514
+ expression?: boolean;
515
+ };
516
+ /** every aria-* attribute on the element */
517
+ aria: {
518
+ name: string;
519
+ literal?: string;
520
+ expression?: boolean;
521
+ line: number;
522
+ }[];
523
+ /** literal `type` of an `<input>`, lowercased; undefined for non-inputs or a dynamic type */
524
+ inputType?: string;
525
+ /** Set when the element also carries a spread attribute — its full attribute set is
526
+ * unknowable, so required-prop presence checks must treat it as satisfied (a11y/required-aria-props). */
527
+ hasSpread?: true;
528
+ }
405
529
  /** Reactivity/correctness + security + architecture facts parsed from one `.svelte` component. */
406
530
  interface ComponentFacts {
407
531
  /** Source file the component came from. */
@@ -486,6 +610,31 @@ interface ComponentFacts {
486
610
  url: string;
487
611
  line: number;
488
612
  }[];
613
+ /** Elements carrying a role or any aria-* attribute (a11y ARIA rules). */
614
+ ariaElements?: AriaElementFact[];
615
+ /** Interactive elements nested inside another interactive container (a11y/interactive-nesting). */
616
+ interactiveNestings?: InteractiveNestingFact[];
617
+ /** `button`/`a href`/`input type="image"` elements with no computable accessible name (a11y/accessible-name). */
618
+ unnamedInteractive?: UnnamedInteractiveFact[];
619
+ /** `<label>` elements with neither a `for` attribute nor a wrapped labelable descendant (a11y/label-has-control). */
620
+ unassociatedLabels?: {
621
+ line: number;
622
+ }[];
623
+ /** Text nodes whose trimmed content opens with a bullet character followed by whitespace, outside any `li` (a11y/use-list). */
624
+ bulletTexts?: {
625
+ line: number;
626
+ char: string;
627
+ }[];
628
+ /** `<select required>` (no `multiple`, display size absent or ≤ 1) whose first `option` element
629
+ * child is not a placeholder label option (a11y/placeholder-label-option). */
630
+ selectsMissingPlaceholder?: {
631
+ line: number;
632
+ }[];
633
+ /** `<time>` with no `datetime` attribute whose literal text content is not machine-readable (a11y/require-datetime). */
634
+ timesMissingDatetime?: {
635
+ line: number;
636
+ text: string;
637
+ }[];
489
638
  /** Set when the file failed to read or parse and these facts are the empty fallback — the file was NOT analyzed. */
490
639
  parseFailed?: true;
491
640
  }
@@ -510,10 +659,10 @@ declare function parseComponentFacts(source: string, filename: string): ParsedFa
510
659
  declare function emptyComponentFacts(file: string): ComponentFacts;
511
660
  /**
512
661
  * Scan every `.svelte` component and `.svelte.ts`/`.svelte.js` runes module under `src/`
513
- * for Correctness/Security/Architecture/Bundle-Performance facts. Independent of route
514
- * resolution — covers `$lib` and non-route components too. A file that fails to read or
515
- * parse contributes empty facts instead of aborting the whole scan (dev tooling must
516
- * never throw).
662
+ * for Correctness/Security/Architecture/Bundle-Performance/Accessibility facts. Independent
663
+ * of route resolution — covers `$lib` and non-route components too. A file that fails to
664
+ * read or parse contributes empty facts instead of aborting the whole scan (dev tooling
665
+ * must never throw).
517
666
  */
518
667
  declare function collectComponentFacts(rt: Runtime, cwd: string): Promise<ComponentFacts[]>;
519
668
 
@@ -762,13 +911,6 @@ type TextOrExpr = AST.Text | AST.ExpressionTag;
762
911
  * the standard fragment, nodes, consequent, alternate, and body keys.
763
912
  */
764
913
  declare const CHILD_NODE_KEYS: string[];
765
- /**
766
- * Determine a value's kind from a list of child/text nodes (design §4, §11):
767
- * - any ExpressionTag present → 'dynamic' (e.g. {data.title}); we do NOT
768
- * follow the expression — that would turn this into runtime analysis.
769
- * - non-whitespace Text only → 'static'
770
- * - empty / whitespace only → 'absent'
771
- */
772
914
  declare function valueFromNodes(nodes: TextOrExpr[]): Value;
773
915
  /** The literal text of a node list when fully static (no ExpressionTag), else undefined. */
774
916
  declare function textFromNodes(nodes: TextOrExpr[]): string | undefined;
@@ -811,6 +953,11 @@ declare function selectRules(rules: Rule[], config: Config): Rule[];
811
953
  * second, parallel notion of "not counted" for callers to keep in sync.
812
954
  */
813
955
  declare function withFailedRulesOff(config: Config, failedRuleIds: readonly string[]): Config;
956
+ /** One-line "rule failed and was skipped" warning; capped to the message's first line so a stack trace can't flood a terminal. */
957
+ declare function formatFailedRuleWarning(f: {
958
+ id: string;
959
+ message: string;
960
+ }): string;
814
961
  /** Apply per-rule severity overrides to results (design §6). */
815
962
  declare function applyRuleSeverities(results: Result[], config: Config): Result[];
816
963
  /** An override entry with its globs compiled once. Build with `compileOverrides`. */
@@ -986,6 +1133,8 @@ interface RuleContext {
986
1133
  images?: ResolvedImages[];
987
1134
  /** Per-route page-body headings for seo/single-h1 (absent in modes that don't collect them). */
988
1135
  headings?: ResolvedHeadings[];
1136
+ /** Per-route composed landmark/id occurrences for the route-scoped a11y rules (absent in modes that don't collect them). */
1137
+ a11y?: ResolvedA11y[];
989
1138
  /** Per-file component-body facts for Correctness rules (static/CLI mode only). */
990
1139
  components?: ComponentFacts[];
991
1140
  /** Per-file SvelteKit route/hooks facts for the SSR shared-state rules (static/CLI + vite build mode only). */
@@ -1402,6 +1551,57 @@ declare const performanceSequentialAwaits: Rule;
1402
1551
  */
1403
1552
  declare const performanceStateRaw: Rule;
1404
1553
 
1554
+ declare const a11yInvalidRole: Rule;
1555
+
1556
+ declare const a11yUnknownAriaAttribute: Rule;
1557
+
1558
+ declare const a11yRequiredAriaProps: Rule;
1559
+
1560
+ declare const a11yInvalidAriaValue: Rule;
1561
+
1562
+ declare const a11yInteractiveNesting: Rule;
1563
+
1564
+ declare const a11yAccessibleName: Rule;
1565
+
1566
+ declare const a11yLabelHasControl: Rule;
1567
+
1568
+ declare const a11yUseList: Rule;
1569
+
1570
+ declare const a11yPlaceholderLabelOption: Rule;
1571
+
1572
+ declare const a11yRequireDatetime: Rule;
1573
+
1574
+ declare const a11yDoctype: Rule;
1575
+
1576
+ /**
1577
+ * a11y/duplicate-landmark — a composed route (layout chain + page) yields more than one
1578
+ * `main` / `banner` / `contentinfo` landmark. `ctx.a11y[].landmarks` already holds the
1579
+ * branch-aware-folded representatives, so this rule only counts them per kind, in the
1580
+ * fixed KINDS order (it decides emission order and the PASS anchor).
1581
+ */
1582
+ declare const a11yDuplicateLandmark: Rule;
1583
+
1584
+ /**
1585
+ * a11y/top-level-landmark — a landmark (`main`/`banner`/`complementary`/`contentinfo`) that
1586
+ * composition places inside another landmark. `ctx.a11y[].nestedLandmarks` already carries one
1587
+ * entry per nested occurrence, so this rule only reports them.
1588
+ */
1589
+ declare const a11yTopLevelLandmark: Rule;
1590
+
1591
+ /**
1592
+ * a11y/id-duplication — a literal id repeated within a composed route. `ctx.a11y[].ids`
1593
+ * already holds the branch-aware-folded representatives per id, so this rule only counts them.
1594
+ */
1595
+ declare const a11yIdDuplication: Rule;
1596
+
1597
+ /**
1598
+ * a11y/no-missing-id-ref — a `for`/`aria-labelledby`/`aria-describedby`/`aria-controls`/
1599
+ * `aria-activedescendant`/same-page `href="#…"` referencing an `id` absent from the composed
1600
+ * route. Universal ("no element anywhere defines this id") needs a closed world, so this rule
1601
+ * runs only on routes `ctx.a11y[].fullyResolved` marks fully resolved — see the rule docs.
1602
+ */
1603
+ declare const a11yNoMissingIdRef: Rule;
1604
+
1405
1605
  declare const allRules: Rule[];
1406
1606
 
1407
1607
  /** One configurable option of a rule, flattened for `svelte-vitals explain`'s output. */
@@ -1539,6 +1739,23 @@ interface ConsoleReportOptions {
1539
1739
  */
1540
1740
  declare function formatConsoleReport(results: Result[], config: Config, options?: ConsoleReportOptions): string;
1541
1741
 
1742
+ /**
1743
+ * Strip ANSI/OSC escape sequences and C0 control characters (except `\n`/`\t`) from a
1744
+ * string before it reaches a terminal. POSIX file/route names can contain almost any
1745
+ * byte, so a hostile repo can smuggle a terminal-title rewrite, cursor move, or other
1746
+ * escape-sequence trick into what looks like plain report text.
1747
+ *
1748
+ * Only OSC and CSI sequences are pattern-matched and removed whole (payload included) —
1749
+ * those cover title-bar writes and cursor/screen control, the two classes with a real
1750
+ * blast radius. Any other `ESC` byte (rarer single/two-byte forms like reset or
1751
+ * save-cursor) falls through to the final C0 sweep below, which drops the lone `ESC`
1752
+ * but — deliberately, not swallowing an adjacent legitimate character — leaves whatever
1753
+ * printable byte follows it as stray text.
1754
+ * ponytail: doesn't special-case every Fe escape form; broaden the CSI/OSC patterns if a
1755
+ * concrete non-CSI/OSC sequence turns out to matter.
1756
+ */
1757
+ declare function terminalSafe(text: string): string;
1758
+
1542
1759
  interface ScoreModel {
1543
1760
  routeAverage: number;
1544
1761
  sitePenalty: number;
@@ -1670,6 +1887,20 @@ declare function formatMarkdownReport(results: Result[], config: Config, meta: {
1670
1887
  version: string;
1671
1888
  }): string;
1672
1889
 
1890
+ type Band = 'good' | 'warn' | 'poor';
1891
+ declare const BAND_COLOR: Record<Band, string>;
1892
+ declare function scoreBand(score: number): Band;
1893
+ declare function escapeHtml(s: string): string;
1894
+ /**
1895
+ * Return the URL only when it uses a safe http/https scheme, else null.
1896
+ * Guards a finding's `docsUrl` against `javascript:`/`data:` hrefs — escapeHtml
1897
+ * neutralizes attribute breakout but not a malicious scheme. Browsers strip
1898
+ * ASCII whitespace (tab/newline/CR) from a URL before resolving its scheme (so
1899
+ * `java\tscript:` runs as `javascript:`), so strip whitespace first; anything not
1900
+ * plainly http(s):// afterward is rejected. Pure string work — no `URL` global,
1901
+ * keeping core runtime-agnostic and lib-minimal.
1902
+ */
1903
+ declare function safeHref(url: string): string | null;
1673
1904
  /** Provenance of a route's findings: real rendered page vs. source-only analysis. */
1674
1905
  type RouteBadge = 'measured' | 'static';
1675
1906
  interface AppSnapshot {
@@ -1719,19 +1950,4 @@ declare function formatHtmlReport(results: Result[], config: Config, meta: {
1719
1950
  coreVersion?: string;
1720
1951
  }): string;
1721
1952
 
1722
- type Band = 'good' | 'warn' | 'poor';
1723
- declare const BAND_COLOR: Record<Band, string>;
1724
- declare function scoreBand(score: number): Band;
1725
- declare function escapeHtml(s: string): string;
1726
- /**
1727
- * Return the URL only when it uses a safe http/https scheme, else null.
1728
- * Guards a finding's `docsUrl` against `javascript:`/`data:` hrefs — escapeHtml
1729
- * neutralizes attribute breakout but not a malicious scheme. Browsers strip
1730
- * ASCII whitespace (tab/newline/CR) from a URL before resolving its scheme (so
1731
- * `java\tscript:` runs as `javascript:`), so strip whitespace first; anything not
1732
- * plainly http(s):// afterward is rejected. Pure string work — no `URL` global,
1733
- * keeping core runtime-agnostic and lib-minimal.
1734
- */
1735
- declare function safeHref(url: string): string | null;
1736
-
1737
- 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 FailedRule, 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 RuleEvidence, 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, architectureDocLinkTarget, architecturePrivateScopeImport, architecturePropCount, architectureReservedDirectoryNames, architectureReservedNamePlacement, 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, resolveRepoLocalPath, 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, withFailedRulesOff };
1953
+ export { type A11yOccurrenceInfo, APP_SCRIPT, APP_STYLE, type AppSnapshot, BAND_COLOR, type BranchStep, CATEGORIES, CHILD_NODE_KEYS, type Category, type Classification, type CompiledOverride, type ComponentFacts, type Config, type ConsoleReportOptions, type Detection, type EachBlockFact, type EffectFact, type FailedRule, type Fix, type HeadProvider, type HeadTag, type HeadingInfo, type HealthResult, IDREF_ATTRS, type ImageInfo, type JsonReport, type KitAlias, type KitModuleFacts, LANDMARK_ROLES, type OrphanEffectFact, type Palette, type Presence, type Project, ROBOTS_SOURCE_PATHS, type RawKitAliases, type ResolvedA11y, type ResolvedHead, type ResolvedHeadings, type ResolvedImages, type Result, type RouteBadge, type Rule, type RuleContext, type RuleEvidence, 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, a11yAccessibleName, a11yDoctype, a11yDuplicateLandmark, a11yIdDuplication, a11yInteractiveNesting, a11yInvalidAriaValue, a11yInvalidRole, a11yLabelHasControl, a11yNoMissingIdRef, a11yPlaceholderLabelOption, a11yRequireDatetime, a11yRequiredAriaProps, a11yTopLevelLandmark, a11yUnknownAriaAttribute, a11yUseList, allRules, applyOverrides, applyRuleSeverities, architectureComponentSize, architectureDirectoryNaming, architectureDocLinkTarget, architecturePrivateScopeImport, architecturePropCount, architectureReservedDirectoryNames, architectureReservedNamePlacement, 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, decodeFragmentId, defaultConfig, defaultProject, defineConfig, docsUrlFor, effectiveSeverity, emptyComponentFacts, emptyKitModuleFacts, escapeHtml, explainRule, findAttr, findKitAliasesInSvelteConfig, findKitPathsBaseInSvelteConfig, findKitPathsBaseInViteConfig, findMinifyDisabled, foldOccurrences, formatAgentReport, formatConsoleReport, formatFailedRuleWarning, formatGithubReport, formatHtmlReport, formatJsonReport, formatMarkdownReport, formatSarifReport, hasFailureAtOrAbove, headTagRule, imageRule, intOption, isMentionedAnywhere, isPenalized, isTopFragment, 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, resolveRepoLocalPath, 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, splitTokens, summarize, terminalSafe, textFromNodes, validateRuleOptions, validateRuleSetting, valueFromNodes, withFailedRulesOff };