@svelte-vitals/core 0.50.0 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal.d.ts +44 -189
- package/dist/internal.js +2293 -33
- package/dist/{json-CcKHN-tx.d.ts → json-D26FMrh-.d.ts} +92 -150
- package/dist/{markdown-CEYpv4SU.js → markdown-CD7sqanK.js} +583 -2714
- package/package.json +2 -2
|
@@ -1,9 +1,43 @@
|
|
|
1
|
-
//#region src/
|
|
1
|
+
//#region src/runtime.d.ts
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* (
|
|
5
|
-
*
|
|
3
|
+
* Runtime abstraction (design §8). Core defines only the interface; concrete
|
|
4
|
+
* adapters (Node / Deno / Bun) live in the CLI package and are the only place
|
|
5
|
+
* allowed to touch runtime-specific I/O APIs. Providers and rules use this
|
|
6
|
+
* interface exclusively, which keeps them runtime-agnostic and lets tests inject
|
|
7
|
+
* an in-memory implementation.
|
|
6
8
|
*/
|
|
9
|
+
interface Runtime {
|
|
10
|
+
/** Read a UTF-8 text file. Rejects if the file does not exist. */
|
|
11
|
+
readFile(path: string): Promise<string>;
|
|
12
|
+
/** Whether a path exists. */
|
|
13
|
+
exists(path: string): Promise<boolean>;
|
|
14
|
+
/**
|
|
15
|
+
* Paths matching `pattern`, relative to `cwd`.
|
|
16
|
+
*
|
|
17
|
+
* **Dot files and dot directories are excluded**, and an adapter must keep it that way: the
|
|
18
|
+
* directory-shaped Architecture rules derive their directory set from these paths, and one of them
|
|
19
|
+
* enumerates a parent's children exhaustively, so a `.server/` appearing here would be reported as
|
|
20
|
+
* an undeclared name. Both shipped adapters rely on `node:fs` glob's default, which never
|
|
21
|
+
* matches dot entries.
|
|
22
|
+
*
|
|
23
|
+
* **Every returned path is a file, never a directory**, and an adapter must keep that true too:
|
|
24
|
+
* `architecture/reserved-directory-names`' unit test takes a directory's immediate children from
|
|
25
|
+
* this same inventory and asks whether one of them is a file named after the directory, so an
|
|
26
|
+
* adapter that let a directory through here would let a bare `Card/Card` satisfy that test as if it
|
|
27
|
+
* were an entry file. Both shipped adapters filter to files explicitly — `node:fs`'s glob
|
|
28
|
+
* matches directories too.
|
|
29
|
+
*/
|
|
30
|
+
glob(pattern: string, cwd: string): Promise<string[]>;
|
|
31
|
+
/** Join path segments without depending on `node:path`. */
|
|
32
|
+
join(...parts: string[]): string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* `readFile` with at most `limit` reads in flight. A plain counter plus a queue of waiters —
|
|
36
|
+
* deliberately not a dependency, and pure enough to live in core.
|
|
37
|
+
*/
|
|
38
|
+
declare function withReadLimit(readFile: (path: string) => Promise<string>, limit?: number): (path: string) => Promise<string>;
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/component.d.ts
|
|
7
41
|
/** An `{#each}` block in a component template. */
|
|
8
42
|
interface EachBlockFact {
|
|
9
43
|
/** True when the block has a key, e.g. `{#each items as item (item.id)}`. */
|
|
@@ -324,6 +358,14 @@ declare function skippedFileWarnings(facts: readonly {
|
|
|
324
358
|
parseFailed?: true;
|
|
325
359
|
readFailed?: true;
|
|
326
360
|
}[]): string[];
|
|
361
|
+
/**
|
|
362
|
+
* Scan every `.svelte` component and `.svelte.ts`/`.svelte.js` runes module under `src/`
|
|
363
|
+
* for Correctness/Security/Architecture/Bundle-Performance/Accessibility facts. Independent
|
|
364
|
+
* of route resolution — covers `$lib` and non-route components too. A file that fails to
|
|
365
|
+
* read or parse contributes empty facts instead of aborting the whole scan (dev tooling
|
|
366
|
+
* must never throw).
|
|
367
|
+
*/
|
|
368
|
+
declare function collectComponentFacts(rt: Runtime, cwd: string): Promise<ComponentFacts[]>;
|
|
327
369
|
//#endregion
|
|
328
370
|
//#region src/types.d.ts
|
|
329
371
|
type Severity = 'critical' | 'warning' | 'info';
|
|
@@ -548,55 +590,6 @@ declare function formatMarkdownReport(results: Result[], config: Config, meta: {
|
|
|
548
590
|
version: string;
|
|
549
591
|
}): string;
|
|
550
592
|
//#endregion
|
|
551
|
-
//#region src/runtime.d.ts
|
|
552
|
-
/**
|
|
553
|
-
* Runtime abstraction (design §8). Core defines only the interface; concrete
|
|
554
|
-
* adapters (Node / Deno / Bun) live in the CLI package and are the only place
|
|
555
|
-
* allowed to touch runtime-specific I/O APIs. Providers and rules use this
|
|
556
|
-
* interface exclusively, which keeps them runtime-agnostic and lets tests inject
|
|
557
|
-
* an in-memory implementation.
|
|
558
|
-
*/
|
|
559
|
-
interface Runtime {
|
|
560
|
-
/** Read a UTF-8 text file. Rejects if the file does not exist. */
|
|
561
|
-
readFile(path: string): Promise<string>;
|
|
562
|
-
/** Whether a path exists. */
|
|
563
|
-
exists(path: string): Promise<boolean>;
|
|
564
|
-
/**
|
|
565
|
-
* Paths matching `pattern`, relative to `cwd`.
|
|
566
|
-
*
|
|
567
|
-
* **Dot files and dot directories are excluded**, and an adapter must keep it that way: the
|
|
568
|
-
* directory-shaped Architecture rules derive their directory set from these paths, and one of them
|
|
569
|
-
* enumerates a parent's children exhaustively, so a `.server/` appearing here would be reported as
|
|
570
|
-
* an undeclared name. Both shipped adapters pass `dot: false`.
|
|
571
|
-
*
|
|
572
|
-
* **Every returned path is a file, never a directory**, and an adapter must keep that true too:
|
|
573
|
-
* `architecture/reserved-directory-names`' unit test takes a directory's immediate children from
|
|
574
|
-
* this same inventory and asks whether one of them is a file named after the directory, so an
|
|
575
|
-
* adapter that let a directory through here would let a bare `Card/Card` satisfy that test as if it
|
|
576
|
-
* were an entry file. Both shipped adapters get this for free from their glob library's default,
|
|
577
|
-
* which returns files only unless asked to include directories.
|
|
578
|
-
*/
|
|
579
|
-
glob(pattern: string, cwd: string): Promise<string[]>;
|
|
580
|
-
/** Join path segments without depending on `node:path`. */
|
|
581
|
-
join(...parts: string[]): string;
|
|
582
|
-
}
|
|
583
|
-
/**
|
|
584
|
-
* How many file reads may be in flight at once. Analysis reads every `.svelte` file in a project
|
|
585
|
-
* in parallel, which on a large project opens more descriptors than the process is allowed: at
|
|
586
|
-
* `ulimit -n 1024` — a common container default — a 1 681-route project raised `EMFILE`, and
|
|
587
|
-
* because a failed read lands in the same `catch` as a malformed component, 682 files were dropped
|
|
588
|
-
* and the run still reported a normal score. The cap is what keeps the analysis whole.
|
|
589
|
-
*
|
|
590
|
-
* 64 is chosen to sit well under the stock 256 on macOS while leaving descriptors for everything
|
|
591
|
-
* else the process holds open. It is not a throughput knob: reads are a few percent of the work.
|
|
592
|
-
*/
|
|
593
|
-
declare const READ_CONCURRENCY = 64;
|
|
594
|
-
/**
|
|
595
|
-
* `readFile` with at most `limit` reads in flight. A plain counter plus a queue of waiters —
|
|
596
|
-
* deliberately not a dependency, and pure enough to live in core.
|
|
597
|
-
*/
|
|
598
|
-
declare function withReadLimit(readFile: (path: string) => Promise<string>, limit?: number): (path: string) => Promise<string>;
|
|
599
|
-
//#endregion
|
|
600
593
|
//#region src/head.d.ts
|
|
601
594
|
/**
|
|
602
595
|
* A normalized head tag. The mode-independent boundary (design §8): the static
|
|
@@ -649,14 +642,12 @@ interface ResolvedHead {
|
|
|
649
642
|
file: string;
|
|
650
643
|
}
|
|
651
644
|
/**
|
|
652
|
-
*
|
|
653
|
-
*
|
|
654
|
-
*
|
|
645
|
+
* Whether a `type` attribute (undefined = absent) makes a `<script>` a classic,
|
|
646
|
+
* render-blocking-capable script. Per the HTML spec, absent and the literal empty string are
|
|
647
|
+
* classic; any other value is ASCII-whitespace-stripped and must match a JavaScript MIME type —
|
|
648
|
+
* so a whitespace-only `type` is a data block, not a classic script.
|
|
655
649
|
*/
|
|
656
|
-
|
|
657
|
-
mode: 'static' | 'rendered';
|
|
658
|
-
collect(rt: Runtime, cwd: string, config?: Config): Promise<ResolvedHead[]>;
|
|
659
|
-
}
|
|
650
|
+
declare function isClassicScriptType(type: string | undefined): boolean;
|
|
660
651
|
//#endregion
|
|
661
652
|
//#region src/images.d.ts
|
|
662
653
|
/**
|
|
@@ -803,8 +794,46 @@ declare function foldOccurrences<T extends Foldable>(nodes: T[]): Map<string, T[
|
|
|
803
794
|
declare function decodeFragmentId(fragment: string): string;
|
|
804
795
|
/** Whitespace-split tokens of a (possibly undefined) literal attribute value. */
|
|
805
796
|
declare function splitTokens(value: string | undefined): string[];
|
|
806
|
-
/**
|
|
807
|
-
declare const
|
|
797
|
+
/** Sectioning content (HTML-AAM): a `<header>`/`<footer>` below one of these is not a landmark. */
|
|
798
|
+
declare const SECTIONING_TAGS: ReadonlySet<string>;
|
|
799
|
+
/**
|
|
800
|
+
* Tags whose landmark-ness depends on sectioning ancestry. A provider that cannot see ancestry
|
|
801
|
+
* (the per-file AST walk) uses this same set to mark the deferral (topLevel) — reading it from
|
|
802
|
+
* here keeps the deferral set from drifting when the policy widens.
|
|
803
|
+
*/
|
|
804
|
+
declare const ANCESTRY_DEPENDENT_TAGS: ReadonlySet<string>;
|
|
805
|
+
/** Attributes that give an element the accessible name the `<aside>` landmark decision reads. */
|
|
806
|
+
declare const NAMING_ATTRS: readonly string[];
|
|
807
|
+
/**
|
|
808
|
+
* HTML-AAM: an `<aside>` scoped to `body` or `main` is a `complementary` landmark; scoped to
|
|
809
|
+
* sectioning content it is one only when it has an accessible name. `main` is deliberately absent
|
|
810
|
+
* — it is a scope in which an `aside` *is* a landmark, unlike the sectioning set that decides
|
|
811
|
+
* `<header>`/`<footer>`.
|
|
812
|
+
*/
|
|
813
|
+
declare const ASIDE_DEMOTING_TAGS: ReadonlySet<string>;
|
|
814
|
+
interface LandmarkInput {
|
|
815
|
+
/** Lowercased element tag name (HTML tag names are ASCII case-insensitive), or undefined when unknown. */
|
|
816
|
+
tag: string | undefined;
|
|
817
|
+
/**
|
|
818
|
+
* Whitespace tokens of the `role` attribute, or `undefined` when the attribute is absent. The
|
|
819
|
+
* distinction is load-bearing: a present attribute — even one resolving to no concrete role
|
|
820
|
+
* (empty, dynamic, unknown tokens) — suppresses the tag mapping instead of falling through to it.
|
|
821
|
+
*/
|
|
822
|
+
roleTokens: readonly string[] | undefined;
|
|
823
|
+
/** Has an accessible name (`aria-label`/`aria-labelledby`); each provider decides what its dynamic values mean. */
|
|
824
|
+
named: boolean;
|
|
825
|
+
/** An ancestor is sectioning content. A provider that cannot see ancestry passes false and defers the demotion (topLevel approximation). */
|
|
826
|
+
insideSectioning: boolean;
|
|
827
|
+
/** An ancestor is in ASIDE_DEMOTING_TAGS — an `<aside>` below one needs a name to stay a landmark. */
|
|
828
|
+
insideAsideDemoting: boolean;
|
|
829
|
+
}
|
|
830
|
+
/**
|
|
831
|
+
* The landmark kind an element contributes ('main'|'banner'|'contentinfo'|'complementary'), or
|
|
832
|
+
* undefined. The one home for the decision both providers apply — the source AST walk and the
|
|
833
|
+
* rendered HTML walk each feed it their own tree's context. ARIA fallback role lists resolve to
|
|
834
|
+
* the first token naming a concrete role (resolveRole).
|
|
835
|
+
*/
|
|
836
|
+
declare function resolveLandmark(input: LandmarkInput): string | undefined;
|
|
808
837
|
/**
|
|
809
838
|
* Attributes whose (whitespace-tokenized) values reference element ids: the ARIA id-reference and
|
|
810
839
|
* id-reference-list properties, and HTML's own (`for`, `list`, `headers`, `form`, the popover and
|
|
@@ -911,8 +940,6 @@ interface KitModuleFacts {
|
|
|
911
940
|
//#region src/config-apply.d.ts
|
|
912
941
|
/** The severity a setting selects: `'off'`, an explicit severity, or undefined (leave the built-in). */
|
|
913
942
|
declare function settingSeverity(setting: RuleSetting | undefined): Severity | 'off' | undefined;
|
|
914
|
-
/** The options a setting carries, or undefined for the string forms. */
|
|
915
|
-
declare function settingOptions(setting: RuleSetting | undefined): RuleOptions | undefined;
|
|
916
943
|
/** Drop rules disabled via config (design §6), including a `defaultOff` rule with no entry. */
|
|
917
944
|
declare function selectRules(rules: Rule[], config: Config): Rule[];
|
|
918
945
|
/**
|
|
@@ -928,8 +955,6 @@ declare function formatFailedRuleWarning(f: {
|
|
|
928
955
|
id: string;
|
|
929
956
|
message: string;
|
|
930
957
|
}): string;
|
|
931
|
-
/** Apply per-rule severity overrides to results (design §6). */
|
|
932
|
-
declare function applyRuleSeverities(results: Result[], config: Config): Result[];
|
|
933
958
|
/** An override entry with its globs compiled once. Build with `compileOverrides`. */
|
|
934
959
|
interface CompiledOverride {
|
|
935
960
|
routes: RegExp[];
|
|
@@ -941,31 +966,6 @@ interface CompiledOverride {
|
|
|
941
966
|
* targets (every component, every route) must hoist this out of their loop.
|
|
942
967
|
*/
|
|
943
968
|
declare function compileOverrides(config: Config): CompiledOverride[];
|
|
944
|
-
/**
|
|
945
|
-
* Whether an override entry applies to a target. THE single definition of that
|
|
946
|
-
* question — the result post-pass and in-run option resolution both call it.
|
|
947
|
-
* Sharing this matcher is necessary but not sufficient for a severity override
|
|
948
|
-
* and an option override to select the same files: each caller must also pass
|
|
949
|
-
* the same `target` (route and, critically, `file`) the other path effectively
|
|
950
|
-
* matches against. See Finding 1, docs/superpowers/specs/2026-07-26-rule-options-design.md.
|
|
951
|
-
*/
|
|
952
|
-
declare function overrideMatches(o: CompiledOverride, target: {
|
|
953
|
-
route?: string;
|
|
954
|
-
file?: string;
|
|
955
|
-
}): boolean;
|
|
956
|
-
/**
|
|
957
|
-
* Apply route-/file-scoped overrides to results (design 2026-07-18). An entry
|
|
958
|
-
* matches when any `route` glob matches the finding's route id or any `files`
|
|
959
|
-
* glob matches its location (OR). `'off'` removes a matched result entirely —
|
|
960
|
-
* passing seeds included, so scoring and "checks passed" counts behave as if
|
|
961
|
-
* the rule never ran there. A severity value rewrites the result's severity.
|
|
962
|
-
* Entries are evaluated in order (later entries win); within one entry, a
|
|
963
|
-
* rule-id key beats a category key only when it specifies a `severity` — an
|
|
964
|
-
* options-only rule-id key (no `severity`) contributes its options but leaves
|
|
965
|
-
* the category key's severity in force, rather than shadowing it (design
|
|
966
|
-
* 2026-07-26, Finding 2 / second review Finding E).
|
|
967
|
-
*/
|
|
968
|
-
declare function applyOverrides(results: Result[], config: Config): Result[];
|
|
969
969
|
//#endregion
|
|
970
970
|
//#region src/rule-options.d.ts
|
|
971
971
|
/**
|
|
@@ -997,37 +997,6 @@ type RuleOptionSpec = {
|
|
|
997
997
|
};
|
|
998
998
|
/** A rule's configurable options, keyed by option name. */
|
|
999
999
|
type RuleOptionsSpec = Record<string, RuleOptionSpec>;
|
|
1000
|
-
/**
|
|
1001
|
-
* Typed reads of a resolved options object. `RuleOptions` values are `unknown`
|
|
1002
|
-
* (the map is open-ended by design), so without these every rule would carry
|
|
1003
|
-
* its own `o.max as number` cast and the "resolution guarantees the declared
|
|
1004
|
-
* kind" invariant would live in a dozen places instead of one. `resolveRuleOptions`
|
|
1005
|
-
* always seeds every declared key from the spec default and validation rejects a
|
|
1006
|
-
* wrongly-typed value up front, so a mismatch here means a rule read a key it
|
|
1007
|
-
* never declared — the `fallback` keeps that a wrong number rather than a crash.
|
|
1008
|
-
*/
|
|
1009
|
-
declare function intOption(options: RuleOptions, key: string, fallback?: number): number;
|
|
1010
|
-
/** As `intOption`, for a `string-list` option. */
|
|
1011
|
-
declare function listOption(options: RuleOptions, key: string): string[];
|
|
1012
|
-
/** As `intOption`, for a `string-map` option. */
|
|
1013
|
-
declare function mapOption(options: RuleOptions, key: string): Record<string, string>;
|
|
1014
|
-
/**
|
|
1015
|
-
* Whether any config layer so much as mentions `ruleId` — its `rules` entry, or any `overrides`
|
|
1016
|
-
* entry's.
|
|
1017
|
-
*
|
|
1018
|
-
* A rule that is inert until declared can return early on `false` instead of resolving options once
|
|
1019
|
-
* per target and discarding the result. That waste is not hypothetical: the three directory-shaped
|
|
1020
|
-
* Architecture rules resolve per directory, so an unconfigured project pays it for every directory
|
|
1021
|
-
* under `src/` three times over, on every dev-server save. Measured 2026-07-30 over a synthetic tree
|
|
1022
|
-
* of 1,523 directories: 5.4 ms per analysis, for rules that are off by default and therefore produce
|
|
1023
|
-
* nothing.
|
|
1024
|
-
*
|
|
1025
|
-
* Deliberately conservative. It asks only whether the rule is *mentioned*, not whether the mention
|
|
1026
|
-
* resolves to a non-empty value, so a `'off'` severity with no options still answers `true` and the
|
|
1027
|
-
* caller does its normal work. A cheaper-but-wrong version of this would make a rule skip work it
|
|
1028
|
-
* owed; this one can only ever fail to save time.
|
|
1029
|
-
*/
|
|
1030
|
-
declare function isMentionedAnywhere(config: Config, ruleId: string): boolean;
|
|
1031
1000
|
/**
|
|
1032
1001
|
* Effective options for a rule at a target: built-in defaults, then
|
|
1033
1002
|
* `config.rules[ruleId].options`, then every matching `config.overrides` entry
|
|
@@ -1041,31 +1010,6 @@ declare function resolveRuleOptions(ruleId: string, spec: RuleOptionsSpec | unde
|
|
|
1041
1010
|
route?: string;
|
|
1042
1011
|
file?: string;
|
|
1043
1012
|
}, compiled?: CompiledOverride[]): RuleOptions;
|
|
1044
|
-
/**
|
|
1045
|
-
* Problems with a user-supplied options object, as human-readable sentences
|
|
1046
|
-
* (empty = valid). Callers treat any result as fatal: a typo that silently
|
|
1047
|
-
* leaves the config inert is the failure this exists to prevent.
|
|
1048
|
-
*
|
|
1049
|
-
* `baseline`, when given, is the already-resolved value this `options` layer
|
|
1050
|
-
* is being merged onto — built-in defaults merged with any earlier layer(s)
|
|
1051
|
-
* (e.g. the global `config.rules[id].options`, when `options` is an
|
|
1052
|
-
* `overrides[]` entry). The min/max cross-check below compares against it
|
|
1053
|
-
* instead of the spec's own default, so a layer that only sets one side of a
|
|
1054
|
-
* range is checked against what it actually inherits (design 2026-07-26
|
|
1055
|
-
* review, Finding A). Omit it to check `options` against the spec defaults
|
|
1056
|
-
* alone, as when validating the global layer itself. A `baseline` that is
|
|
1057
|
-
* only partially resolved (missing `min` or `max`) is treated as "can't
|
|
1058
|
-
* determine that side" rather than silently comparing against `undefined` —
|
|
1059
|
-
* see the `typeof` guard below.
|
|
1060
|
-
*
|
|
1061
|
-
* `skipRangeCheck`, when true, skips the min/max cross-check entirely
|
|
1062
|
-
* regardless of `baseline`. A caller sets this when it statically cannot
|
|
1063
|
-
* rule out that some *other* config layer narrows the opposite side of the
|
|
1064
|
-
* range at the same target — see the CLI's and the Vite plugin's
|
|
1065
|
-
* `overrides[]` validation (design 2026-07-26 review, Finding A, third
|
|
1066
|
-
* pass).
|
|
1067
|
-
*/
|
|
1068
|
-
declare function validateRuleOptions(ruleId: string, spec: RuleOptionsSpec | undefined, options: RuleOptions, baseline?: RuleOptions, skipRangeCheck?: boolean): string[];
|
|
1069
1013
|
/**
|
|
1070
1014
|
* Whether `validateRuleOptions` should skip the min/max cross-check for
|
|
1071
1015
|
* `overrides[selfIndex].rules[key]` — the whole decision, so the CLI's
|
|
@@ -1208,8 +1152,6 @@ interface ScoreOptions {
|
|
|
1208
1152
|
}
|
|
1209
1153
|
/** Compute the headline score and its breakdown (design §12). */
|
|
1210
1154
|
declare function computeScore(results: Result[], config: Config, options?: ScoreOptions): ScoreResult;
|
|
1211
|
-
/** Compute an independent score per category present in `results` (issue #10). */
|
|
1212
|
-
declare function scoresByCategory(results: Result[], config: Config, options?: ScoreOptions): Partial<Record<Category, ScoreResult>>;
|
|
1213
1155
|
interface HealthResult {
|
|
1214
1156
|
/** Weighted overall score across present categories (0–100). */
|
|
1215
1157
|
health: number;
|
|
@@ -1305,4 +1247,4 @@ declare function formatJsonReport(results: Result[], config: Config, meta: {
|
|
|
1305
1247
|
version: string;
|
|
1306
1248
|
}, ruleIds?: readonly string[], examined?: Record<string, Record<string, number>>, skipped?: JsonReport['skipped']): string;
|
|
1307
1249
|
//#endregion
|
|
1308
|
-
export {
|
|
1250
|
+
export { Summary as $, ASIDE_DEMOTING_TAGS as A, collectComponentFacts as At, resolveLandmark as B, selectRules as C, defineConfig as Ct, A11yOccurrenceInfo as D, OrphanEffectFact as Dt, KitModuleFacts as E, EffectFact as Et, ResolvedA11y as F, ImageInfo as G, stripTextDirective as H, SECTIONING_TAGS as I, ResolvedHead as J, ResolvedImages as K, decodeFragmentId as L, IDREF_ATTRS as M, Runtime as Mt, LandmarkInput as N, withReadLimit as Nt, A11ySkipCause as O, SourceSpan as Ot, NAMING_ATTRS as P, Classification as Q, foldOccurrences as R, formatFailedRuleWarning as S, defaultProject as St, withFailedRulesOff as T, EachBlockFact as Tt, HeadingInfo as U, splitTokens as V, ResolvedHeadings as W, formatMarkdownReport as X, isClassicScriptType as Y, formatGithubReport as Z, resolveRuleOptions as _, Scope as _t, HealthResult as a, Category as at, CompiledOverride as b, Value as bt, ScoreResult as c, Fix as ct, Rule as d, Project as dt, classify as et, RuleContext as f, Result as ft, RuleOptionsSpec as g, RuleSettingObject as gt, RuleOptionSpec as h, RuleSetting as ht, formatJsonReport as i, CATEGORIES as it, BranchStep as j, skippedFileWarnings as jt, ANCESTRY_DEPENDENT_TAGS as k, SuppressionDirective as kt, computeHealth as l, KitAlias as lt, isPenalized as m, RuleOverride as mt, RuleEvidence as n, hasFailureAtOrAbove as nt, ScoreModel as o, Config as ot, docsUrlFor as p, RuleOptions as pt, HeadTag as q, buildJsonReport as r, summarize as rt, ScoreOptions as s, Detection as st, JsonReport as t, effectiveSeverity as tt, computeScore as u, Presence as ut, shouldSkipRangeCheck as v, Severity as vt, settingSeverity as w, ComponentFacts as wt, compileOverrides as x, defaultConfig as xt, validateRuleSetting as y, TreatDynamicAs as yt, isTopFragment as z };
|