@sudosandwich/limps-headless 0.1.3
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/LICENSE +21 -0
- package/README.md +339 -0
- package/bin/limps-headless +2 -0
- package/dist/analysis/index.d.ts +6 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +6 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/ir/build-ir.d.ts +10 -0
- package/dist/analysis/ir/build-ir.d.ts.map +1 -0
- package/dist/analysis/ir/build-ir.js +102 -0
- package/dist/analysis/ir/build-ir.js.map +1 -0
- package/dist/analysis/ir/types.d.ts +44 -0
- package/dist/analysis/ir/types.d.ts.map +1 -0
- package/dist/analysis/ir/types.js +2 -0
- package/dist/analysis/ir/types.js.map +1 -0
- package/dist/analysis/module-graph.d.ts +20 -0
- package/dist/analysis/module-graph.d.ts.map +1 -0
- package/dist/analysis/module-graph.js +104 -0
- package/dist/analysis/module-graph.js.map +1 -0
- package/dist/analysis/passes/behavior-evidence.d.ts +9 -0
- package/dist/analysis/passes/behavior-evidence.d.ts.map +1 -0
- package/dist/analysis/passes/behavior-evidence.js +80 -0
- package/dist/analysis/passes/behavior-evidence.js.map +1 -0
- package/dist/analysis/passes/import-evidence.d.ts +3 -0
- package/dist/analysis/passes/import-evidence.d.ts.map +1 -0
- package/dist/analysis/passes/import-evidence.js +58 -0
- package/dist/analysis/passes/import-evidence.js.map +1 -0
- package/dist/analysis/passes/index.d.ts +15 -0
- package/dist/analysis/passes/index.d.ts.map +1 -0
- package/dist/analysis/passes/index.js +21 -0
- package/dist/analysis/passes/index.js.map +1 -0
- package/dist/analysis/passes/jsx-evidence.d.ts +8 -0
- package/dist/analysis/passes/jsx-evidence.d.ts.map +1 -0
- package/dist/analysis/passes/jsx-evidence.js +149 -0
- package/dist/analysis/passes/jsx-evidence.js.map +1 -0
- package/dist/analysis/ts-program.d.ts +12 -0
- package/dist/analysis/ts-program.d.ts.map +1 -0
- package/dist/analysis/ts-program.js +59 -0
- package/dist/analysis/ts-program.js.map +1 -0
- package/dist/analyzer/disambiguator.d.ts +20 -0
- package/dist/analyzer/disambiguator.d.ts.map +1 -0
- package/dist/analyzer/disambiguator.js +83 -0
- package/dist/analyzer/disambiguator.js.map +1 -0
- package/dist/analyzer/index.d.ts +26 -0
- package/dist/analyzer/index.d.ts.map +1 -0
- package/dist/analyzer/index.js +68 -0
- package/dist/analyzer/index.js.map +1 -0
- package/dist/analyzer/parser.d.ts +23 -0
- package/dist/analyzer/parser.d.ts.map +1 -0
- package/dist/analyzer/parser.js +58 -0
- package/dist/analyzer/parser.js.map +1 -0
- package/dist/analyzer/patterns.d.ts +42 -0
- package/dist/analyzer/patterns.d.ts.map +1 -0
- package/dist/analyzer/patterns.js +206 -0
- package/dist/analyzer/patterns.js.map +1 -0
- package/dist/analyzer/props.d.ts +16 -0
- package/dist/analyzer/props.d.ts.map +1 -0
- package/dist/analyzer/props.js +235 -0
- package/dist/analyzer/props.js.map +1 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.d.ts +10 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.d.ts.map +1 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.js +26 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.js.map +1 -0
- package/dist/analyzer/rules/dialog-popover.d.ts +10 -0
- package/dist/analyzer/rules/dialog-popover.d.ts.map +1 -0
- package/dist/analyzer/rules/dialog-popover.js +25 -0
- package/dist/analyzer/rules/dialog-popover.js.map +1 -0
- package/dist/analyzer/rules/index.d.ts +24 -0
- package/dist/analyzer/rules/index.d.ts.map +1 -0
- package/dist/analyzer/rules/index.js +51 -0
- package/dist/analyzer/rules/index.js.map +1 -0
- package/dist/analyzer/rules/tooltip-hovercard.d.ts +10 -0
- package/dist/analyzer/rules/tooltip-hovercard.d.ts.map +1 -0
- package/dist/analyzer/rules/tooltip-hovercard.js +21 -0
- package/dist/analyzer/rules/tooltip-hovercard.js.map +1 -0
- package/dist/analyzer/scorer.d.ts +12 -0
- package/dist/analyzer/scorer.d.ts.map +1 -0
- package/dist/analyzer/scorer.js +171 -0
- package/dist/analyzer/scorer.js.map +1 -0
- package/dist/analyzer/weights.d.ts +28 -0
- package/dist/analyzer/weights.d.ts.map +1 -0
- package/dist/analyzer/weights.js +40 -0
- package/dist/analyzer/weights.js.map +1 -0
- package/dist/audit/analyses/migration.d.ts +42 -0
- package/dist/audit/analyses/migration.d.ts.map +1 -0
- package/dist/audit/analyses/migration.js +91 -0
- package/dist/audit/analyses/migration.js.map +1 -0
- package/dist/audit/discover-components.d.ts +7 -0
- package/dist/audit/discover-components.d.ts.map +1 -0
- package/dist/audit/discover-components.js +486 -0
- package/dist/audit/discover-components.js.map +1 -0
- package/dist/audit/generate-report.d.ts +28 -0
- package/dist/audit/generate-report.d.ts.map +1 -0
- package/dist/audit/generate-report.js +333 -0
- package/dist/audit/generate-report.js.map +1 -0
- package/dist/audit/index.d.ts +8 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +8 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/run-audit.d.ts +33 -0
- package/dist/audit/run-audit.d.ts.map +1 -0
- package/dist/audit/run-audit.js +287 -0
- package/dist/audit/run-audit.js.map +1 -0
- package/dist/audit/types.d.ts +135 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +5 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/cache/index.d.ts +110 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +176 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/storage.d.ts +73 -0
- package/dist/cache/storage.d.ts.map +1 -0
- package/dist/cache/storage.js +176 -0
- package/dist/cache/storage.js.map +1 -0
- package/dist/cache/ttl.d.ts +62 -0
- package/dist/cache/ttl.d.ts.map +1 -0
- package/dist/cache/ttl.js +96 -0
- package/dist/cache/ttl.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +6 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +43 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +6 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +73 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/check-updates.d.ts +6 -0
- package/dist/cli/commands/check-updates.d.ts.map +1 -0
- package/dist/cli/commands/check-updates.js +34 -0
- package/dist/cli/commands/check-updates.js.map +1 -0
- package/dist/cli/commands/diff.d.ts +7 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +48 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/extract.d.ts +6 -0
- package/dist/cli/commands/extract.d.ts.map +1 -0
- package/dist/cli/commands/extract.js +42 -0
- package/dist/cli/commands/extract.js.map +1 -0
- package/dist/cli/commands/list.d.ts +6 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +33 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/flags.d.ts +9 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +22 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +40 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +23 -0
- package/dist/config.js.map +1 -0
- package/dist/differ/hints.d.ts +21 -0
- package/dist/differ/hints.d.ts.map +1 -0
- package/dist/differ/hints.js +105 -0
- package/dist/differ/hints.js.map +1 -0
- package/dist/differ/index.d.ts +25 -0
- package/dist/differ/index.d.ts.map +1 -0
- package/dist/differ/index.js +115 -0
- package/dist/differ/index.js.map +1 -0
- package/dist/differ/props.d.ts +36 -0
- package/dist/differ/props.d.ts.map +1 -0
- package/dist/differ/props.js +210 -0
- package/dist/differ/props.js.map +1 -0
- package/dist/differ/severity.d.ts +31 -0
- package/dist/differ/severity.d.ts.map +1 -0
- package/dist/differ/severity.js +65 -0
- package/dist/differ/severity.js.map +1 -0
- package/dist/differ/types.d.ts +109 -0
- package/dist/differ/types.d.ts.map +1 -0
- package/dist/differ/types.js +5 -0
- package/dist/differ/types.js.map +1 -0
- package/dist/extractor/classifier.d.ts +30 -0
- package/dist/extractor/classifier.d.ts.map +1 -0
- package/dist/extractor/classifier.js +150 -0
- package/dist/extractor/classifier.js.map +1 -0
- package/dist/extractor/forward-ref.d.ts +28 -0
- package/dist/extractor/forward-ref.d.ts.map +1 -0
- package/dist/extractor/forward-ref.js +134 -0
- package/dist/extractor/forward-ref.js.map +1 -0
- package/dist/extractor/index.d.ts +25 -0
- package/dist/extractor/index.d.ts.map +1 -0
- package/dist/extractor/index.js +43 -0
- package/dist/extractor/index.js.map +1 -0
- package/dist/extractor/interface.d.ts +40 -0
- package/dist/extractor/interface.d.ts.map +1 -0
- package/dist/extractor/interface.js +233 -0
- package/dist/extractor/interface.js.map +1 -0
- package/dist/extractor/jsdoc.d.ts +24 -0
- package/dist/extractor/jsdoc.d.ts.map +1 -0
- package/dist/extractor/jsdoc.js +74 -0
- package/dist/extractor/jsdoc.js.map +1 -0
- package/dist/extractor/project.d.ts +17 -0
- package/dist/extractor/project.d.ts.map +1 -0
- package/dist/extractor/project.js +33 -0
- package/dist/extractor/project.js.map +1 -0
- package/dist/extractor/props.d.ts +24 -0
- package/dist/extractor/props.d.ts.map +1 -0
- package/dist/extractor/props.js +78 -0
- package/dist/extractor/props.js.map +1 -0
- package/dist/extractor/type-resolver.d.ts +32 -0
- package/dist/extractor/type-resolver.d.ts.map +1 -0
- package/dist/extractor/type-resolver.js +129 -0
- package/dist/extractor/type-resolver.js.map +1 -0
- package/dist/fetcher/index.d.ts +7 -0
- package/dist/fetcher/index.d.ts.map +1 -0
- package/dist/fetcher/index.js +7 -0
- package/dist/fetcher/index.js.map +1 -0
- package/dist/fetcher/npm-registry.d.ts +45 -0
- package/dist/fetcher/npm-registry.d.ts.map +1 -0
- package/dist/fetcher/npm-registry.js +217 -0
- package/dist/fetcher/npm-registry.js.map +1 -0
- package/dist/fetcher/unified-package.d.ts +27 -0
- package/dist/fetcher/unified-package.d.ts.map +1 -0
- package/dist/fetcher/unified-package.js +99 -0
- package/dist/fetcher/unified-package.js.map +1 -0
- package/dist/fetcher/unpkg.d.ts +20 -0
- package/dist/fetcher/unpkg.d.ts.map +1 -0
- package/dist/fetcher/unpkg.js +58 -0
- package/dist/fetcher/unpkg.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base.d.ts +10 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +80 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/index.d.ts +10 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +10 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/interface.d.ts +56 -0
- package/dist/providers/interface.d.ts.map +1 -0
- package/dist/providers/interface.js +5 -0
- package/dist/providers/interface.js.map +1 -0
- package/dist/providers/radix-backend.d.ts +11 -0
- package/dist/providers/radix-backend.d.ts.map +1 -0
- package/dist/providers/radix-backend.js +107 -0
- package/dist/providers/radix-backend.js.map +1 -0
- package/dist/providers/radix.d.ts +6 -0
- package/dist/providers/radix.d.ts.map +1 -0
- package/dist/providers/radix.js +21 -0
- package/dist/providers/radix.js.map +1 -0
- package/dist/providers/registry.d.ts +17 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +55 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/rules/engine.d.ts +4 -0
- package/dist/rules/engine.d.ts.map +1 -0
- package/dist/rules/engine.js +37 -0
- package/dist/rules/engine.js.map +1 -0
- package/dist/rules/index.d.ts +6 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +6 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/predicates.d.ts +10 -0
- package/dist/rules/predicates.d.ts.map +1 -0
- package/dist/rules/predicates.js +93 -0
- package/dist/rules/predicates.js.map +1 -0
- package/dist/rules/rulesets/base-ui.d.ts +3 -0
- package/dist/rules/rulesets/base-ui.d.ts.map +1 -0
- package/dist/rules/rulesets/base-ui.js +65 -0
- package/dist/rules/rulesets/base-ui.js.map +1 -0
- package/dist/rules/rulesets/radix-legacy.d.ts +3 -0
- package/dist/rules/rulesets/radix-legacy.d.ts.map +1 -0
- package/dist/rules/rulesets/radix-legacy.js +38 -0
- package/dist/rules/rulesets/radix-legacy.js.map +1 -0
- package/dist/rules/types.d.ts +57 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +2 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/signatures/disambiguation.d.ts +30 -0
- package/dist/signatures/disambiguation.d.ts.map +1 -0
- package/dist/signatures/disambiguation.js +99 -0
- package/dist/signatures/disambiguation.js.map +1 -0
- package/dist/signatures/distinguishing.d.ts +29 -0
- package/dist/signatures/distinguishing.d.ts.map +1 -0
- package/dist/signatures/distinguishing.js +108 -0
- package/dist/signatures/distinguishing.js.map +1 -0
- package/dist/signatures/generator.d.ts +20 -0
- package/dist/signatures/generator.d.ts.map +1 -0
- package/dist/signatures/generator.js +147 -0
- package/dist/signatures/generator.js.map +1 -0
- package/dist/signatures/index.d.ts +10 -0
- package/dist/signatures/index.d.ts.map +1 -0
- package/dist/signatures/index.js +10 -0
- package/dist/signatures/index.js.map +1 -0
- package/dist/signatures/inference.d.ts +37 -0
- package/dist/signatures/inference.d.ts.map +1 -0
- package/dist/signatures/inference.js +132 -0
- package/dist/signatures/inference.js.map +1 -0
- package/dist/tools/analyze-component.d.ts +41 -0
- package/dist/tools/analyze-component.d.ts.map +1 -0
- package/dist/tools/analyze-component.js +274 -0
- package/dist/tools/analyze-component.js.map +1 -0
- package/dist/tools/check-updates.d.ts +33 -0
- package/dist/tools/check-updates.d.ts.map +1 -0
- package/dist/tools/check-updates.js +81 -0
- package/dist/tools/check-updates.js.map +1 -0
- package/dist/tools/diff-versions.d.ts +39 -0
- package/dist/tools/diff-versions.d.ts.map +1 -0
- package/dist/tools/diff-versions.js +78 -0
- package/dist/tools/diff-versions.js.map +1 -0
- package/dist/tools/extract-primitive.d.ts +50 -0
- package/dist/tools/extract-primitive.d.ts.map +1 -0
- package/dist/tools/extract-primitive.js +145 -0
- package/dist/tools/extract-primitive.js.map +1 -0
- package/dist/tools/generate-report.d.ts +29 -0
- package/dist/tools/generate-report.d.ts.map +1 -0
- package/dist/tools/generate-report.js +36 -0
- package/dist/tools/generate-report.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-primitives.d.ts +41 -0
- package/dist/tools/list-primitives.d.ts.map +1 -0
- package/dist/tools/list-primitives.js +74 -0
- package/dist/tools/list-primitives.js.map +1 -0
- package/dist/tools/run-audit.d.ts +43 -0
- package/dist/tools/run-audit.d.ts.map +1 -0
- package/dist/tools/run-audit.js +60 -0
- package/dist/tools/run-audit.js.map +1 -0
- package/dist/types/index.d.ts +143 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/docs/architecture.md +88 -0
- package/docs/providers.md +47 -0
- package/docs/tools.md +143 -0
- package/package.json +59 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { evaluatePredicate } from './predicates.js';
|
|
2
|
+
export function evaluateRuleset(ir, ruleset) {
|
|
3
|
+
let score = 0;
|
|
4
|
+
const matches = [];
|
|
5
|
+
for (const rule of ruleset.rules) {
|
|
6
|
+
const result = evaluatePredicate(ir, rule.predicate);
|
|
7
|
+
const matched = result.matched;
|
|
8
|
+
const ruleScore = matched ? rule.weight : 0;
|
|
9
|
+
if (matched) {
|
|
10
|
+
score += ruleScore;
|
|
11
|
+
}
|
|
12
|
+
matches.push({
|
|
13
|
+
ruleId: rule.id,
|
|
14
|
+
matched,
|
|
15
|
+
score: ruleScore,
|
|
16
|
+
evidenceIds: result.evidenceIds,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
let classification = 'none';
|
|
20
|
+
if (score >= ruleset.thresholds.strong) {
|
|
21
|
+
classification = 'strong';
|
|
22
|
+
}
|
|
23
|
+
else if (score >= ruleset.thresholds.possible) {
|
|
24
|
+
classification = 'possible';
|
|
25
|
+
}
|
|
26
|
+
const confidence = ruleset.thresholds.strong > 0
|
|
27
|
+
? Math.min(1, score / ruleset.thresholds.strong)
|
|
28
|
+
: 0;
|
|
29
|
+
return {
|
|
30
|
+
classification,
|
|
31
|
+
confidence,
|
|
32
|
+
score,
|
|
33
|
+
matches,
|
|
34
|
+
evidence: ir.evidence,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/rules/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,UAAU,eAAe,CAAC,EAAe,EAAE,OAAgB;IAC/D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,IAAI,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,OAAO;YACP,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,cAAc,GAAuC,MAAM,CAAC;IAChE,IAAI,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvC,cAAc,GAAG,QAAQ,CAAC;IAC5B,CAAC;SAAM,IAAI,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAChD,cAAc,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QAChD,CAAC,CAAC,CAAC,CAAC;IAER,OAAO;QACL,cAAc;QACd,UAAU;QACV,KAAK;QACL,OAAO;QACP,QAAQ,EAAE,EAAE,CAAC,QAAQ;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ComponentIR } from '../analysis/ir/types.js';
|
|
2
|
+
import type { Condition, Predicate } from './types.js';
|
|
3
|
+
interface ConditionResult {
|
|
4
|
+
matched: boolean;
|
|
5
|
+
evidenceIds: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function evaluateCondition(ir: ComponentIR, condition: Condition): ConditionResult;
|
|
8
|
+
export declare function evaluatePredicate(ir: ComponentIR, predicate: Predicate): ConditionResult;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=predicates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicates.d.ts","sourceRoot":"","sources":["../../src/rules/predicates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvD,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AA4BD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,eAAe,CAsCxF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,eAAe,CAyCxF"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
function evidenceIdForImport(source) {
|
|
2
|
+
if (source.startsWith('@base-ui/react/')) {
|
|
3
|
+
return `import:base-ui:${source.slice('@base-ui/react/'.length)}`;
|
|
4
|
+
}
|
|
5
|
+
if (source.startsWith('@base-ui/')) {
|
|
6
|
+
return `import:base-ui:${source.slice('@base-ui/'.length)}`;
|
|
7
|
+
}
|
|
8
|
+
if (source === 'radix-ui') {
|
|
9
|
+
return 'import:radix-ui:radix-ui';
|
|
10
|
+
}
|
|
11
|
+
if (source.startsWith('@radix-ui/react-')) {
|
|
12
|
+
return `import:radix-ui:${source.slice('@radix-ui/react-'.length)}`;
|
|
13
|
+
}
|
|
14
|
+
if (source.startsWith('@radix-ui/')) {
|
|
15
|
+
return `import:radix-ui:${source.slice('@radix-ui/'.length)}`;
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
function matchEvidence(evidenceIds, id) {
|
|
20
|
+
return {
|
|
21
|
+
matched: evidenceIds.has(id),
|
|
22
|
+
evidenceIds: evidenceIds.has(id) ? [id] : [],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function evaluateCondition(ir, condition) {
|
|
26
|
+
const evidenceIds = new Set(ir.evidence.map((entry) => entry.id));
|
|
27
|
+
if ('evidenceId' in condition) {
|
|
28
|
+
return matchEvidence(evidenceIds, condition.evidenceId);
|
|
29
|
+
}
|
|
30
|
+
if ('importSource' in condition) {
|
|
31
|
+
const matches = ir.imports.some((spec) => spec.source === condition.importSource);
|
|
32
|
+
const derivedId = evidenceIdForImport(condition.importSource);
|
|
33
|
+
if (matches && derivedId) {
|
|
34
|
+
return matchEvidence(evidenceIds, derivedId);
|
|
35
|
+
}
|
|
36
|
+
return { matched: matches, evidenceIds: matches && derivedId ? [derivedId] : [] };
|
|
37
|
+
}
|
|
38
|
+
if ('jsxElement' in condition) {
|
|
39
|
+
const matched = ir.jsx.elements.includes(condition.jsxElement);
|
|
40
|
+
return { matched, evidenceIds: matched ? [`jsx:${condition.jsxElement}`] : [] };
|
|
41
|
+
}
|
|
42
|
+
if ('role' in condition) {
|
|
43
|
+
return matchEvidence(evidenceIds, `role:${condition.role}`);
|
|
44
|
+
}
|
|
45
|
+
if ('dataAttr' in condition) {
|
|
46
|
+
return matchEvidence(evidenceIds, `data-attr:${condition.dataAttr}`);
|
|
47
|
+
}
|
|
48
|
+
if ('behavior' in condition) {
|
|
49
|
+
return matchEvidence(evidenceIds, `behavior:${condition.behavior}`);
|
|
50
|
+
}
|
|
51
|
+
if ('typeRef' in condition) {
|
|
52
|
+
return { matched: false, evidenceIds: [] };
|
|
53
|
+
}
|
|
54
|
+
return { matched: false, evidenceIds: [] };
|
|
55
|
+
}
|
|
56
|
+
export function evaluatePredicate(ir, predicate) {
|
|
57
|
+
const evidenceIds = [];
|
|
58
|
+
if (!predicate.any && !predicate.all && !predicate.not) {
|
|
59
|
+
return { matched: false, evidenceIds };
|
|
60
|
+
}
|
|
61
|
+
if (predicate.all) {
|
|
62
|
+
for (const condition of predicate.all) {
|
|
63
|
+
const result = evaluateCondition(ir, condition);
|
|
64
|
+
if (!result.matched) {
|
|
65
|
+
return { matched: false, evidenceIds: [] };
|
|
66
|
+
}
|
|
67
|
+
evidenceIds.push(...result.evidenceIds);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (predicate.any) {
|
|
71
|
+
let matchedAny = false;
|
|
72
|
+
const anyEvidence = [];
|
|
73
|
+
for (const condition of predicate.any) {
|
|
74
|
+
const result = evaluateCondition(ir, condition);
|
|
75
|
+
if (result.matched) {
|
|
76
|
+
matchedAny = true;
|
|
77
|
+
anyEvidence.push(...result.evidenceIds);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (!matchedAny) {
|
|
81
|
+
return { matched: false, evidenceIds: [] };
|
|
82
|
+
}
|
|
83
|
+
evidenceIds.push(...anyEvidence);
|
|
84
|
+
}
|
|
85
|
+
if (predicate.not) {
|
|
86
|
+
const result = evaluateCondition(ir, predicate.not);
|
|
87
|
+
if (result.matched) {
|
|
88
|
+
return { matched: false, evidenceIds: [] };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return { matched: true, evidenceIds };
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=predicates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicates.js","sourceRoot":"","sources":["../../src/rules/predicates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-ui.d.ts","sourceRoot":"","sources":["../../../src/rules/rulesets/base-ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,aAAa,CAAC;AA4DjD,eAAO,MAAM,aAAa,EAAE,OAU3B,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
const BASE_IMPORTS = [
|
|
2
|
+
'tabs',
|
|
3
|
+
'select',
|
|
4
|
+
'switch',
|
|
5
|
+
'checkbox',
|
|
6
|
+
'menu',
|
|
7
|
+
'popover',
|
|
8
|
+
'tooltip',
|
|
9
|
+
'button',
|
|
10
|
+
'scroll-area',
|
|
11
|
+
'separator',
|
|
12
|
+
];
|
|
13
|
+
const BASE_ROLES = [
|
|
14
|
+
'tablist',
|
|
15
|
+
'tab',
|
|
16
|
+
'tabpanel',
|
|
17
|
+
'menu',
|
|
18
|
+
'menuitem',
|
|
19
|
+
'listbox',
|
|
20
|
+
'option',
|
|
21
|
+
'switch',
|
|
22
|
+
'checkbox',
|
|
23
|
+
];
|
|
24
|
+
function importRule(module) {
|
|
25
|
+
return {
|
|
26
|
+
id: `base-ui/import-${module}`,
|
|
27
|
+
title: `Base UI import: ${module}`,
|
|
28
|
+
description: `Detects Base UI import for ${module}.`,
|
|
29
|
+
severity: 'medium',
|
|
30
|
+
weight: 3,
|
|
31
|
+
predicate: {
|
|
32
|
+
any: [{ evidenceId: `import:base-ui:${module}` }],
|
|
33
|
+
},
|
|
34
|
+
tags: ['base-ui', 'import'],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function roleRule(role) {
|
|
38
|
+
return {
|
|
39
|
+
id: `base-ui/role-${role}`,
|
|
40
|
+
title: `Base UI role evidence: ${role}`,
|
|
41
|
+
description: `Detects JSX role usage for ${role}.`,
|
|
42
|
+
severity: 'low',
|
|
43
|
+
weight: 1,
|
|
44
|
+
predicate: {
|
|
45
|
+
any: [{ role }],
|
|
46
|
+
},
|
|
47
|
+
tags: ['base-ui', 'role'],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const rules = [
|
|
51
|
+
...BASE_IMPORTS.map(importRule),
|
|
52
|
+
...BASE_ROLES.map(roleRule),
|
|
53
|
+
];
|
|
54
|
+
export const baseUiRuleset = {
|
|
55
|
+
id: 'base-ui',
|
|
56
|
+
name: 'Base UI',
|
|
57
|
+
description: 'Detect Base UI usage via import and role evidence.',
|
|
58
|
+
version: '0.1.0',
|
|
59
|
+
rules,
|
|
60
|
+
thresholds: {
|
|
61
|
+
strong: 4,
|
|
62
|
+
possible: 2,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=base-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-ui.js","sourceRoot":"","sources":["../../../src/rules/rulesets/base-ui.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAG;IACnB,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,aAAa;IACb,WAAW;CACZ,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,SAAS;IACT,KAAK;IACL,UAAU;IACV,MAAM;IACN,UAAU;IACV,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;CACX,CAAC;AAEF,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO;QACL,EAAE,EAAE,kBAAkB,MAAM,EAAE;QAC9B,KAAK,EAAE,mBAAmB,MAAM,EAAE;QAClC,WAAW,EAAE,8BAA8B,MAAM,GAAG;QACpD,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,CAAC;QACT,SAAS,EAAE;YACT,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,kBAAkB,MAAM,EAAE,EAAE,CAAC;SAClD;QACD,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO;QACL,EAAE,EAAE,gBAAgB,IAAI,EAAE;QAC1B,KAAK,EAAE,0BAA0B,IAAI,EAAE;QACvC,WAAW,EAAE,8BAA8B,IAAI,GAAG;QAClD,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,CAAC;QACT,SAAS,EAAE;YACT,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;SAChB;QACD,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAW;IACpB,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,oDAAoD;IACjE,OAAO,EAAE,OAAO;IAChB,KAAK;IACL,UAAU,EAAE;QACV,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,CAAC;KACZ;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radix-legacy.d.ts","sourceRoot":"","sources":["../../../src/rules/rulesets/radix-legacy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,aAAa,CAAC;AA+BjD,eAAO,MAAM,kBAAkB,EAAE,OAUhC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const RADIX_IMPORTS = [
|
|
2
|
+
'dialog',
|
|
3
|
+
'popover',
|
|
4
|
+
'tooltip',
|
|
5
|
+
'select',
|
|
6
|
+
'tabs',
|
|
7
|
+
'toast',
|
|
8
|
+
'dropdown-menu',
|
|
9
|
+
'context-menu',
|
|
10
|
+
'checkbox',
|
|
11
|
+
'switch',
|
|
12
|
+
];
|
|
13
|
+
function importRule(module) {
|
|
14
|
+
return {
|
|
15
|
+
id: `radix-legacy/import-${module}`,
|
|
16
|
+
title: `Radix import: ${module}`,
|
|
17
|
+
description: `Detects Radix legacy import for ${module}.`,
|
|
18
|
+
severity: 'high',
|
|
19
|
+
weight: 3,
|
|
20
|
+
predicate: {
|
|
21
|
+
any: [{ evidenceId: `import:radix-ui:${module}` }],
|
|
22
|
+
},
|
|
23
|
+
tags: ['radix', 'legacy', 'import'],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const rules = [...RADIX_IMPORTS.map(importRule)];
|
|
27
|
+
export const radixLegacyRuleset = {
|
|
28
|
+
id: 'radix-legacy',
|
|
29
|
+
name: 'Radix Legacy',
|
|
30
|
+
description: 'Detect legacy Radix usage via import evidence.',
|
|
31
|
+
version: '0.1.0',
|
|
32
|
+
rules,
|
|
33
|
+
thresholds: {
|
|
34
|
+
strong: 4,
|
|
35
|
+
possible: 2,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=radix-legacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radix-legacy.js","sourceRoot":"","sources":["../../../src/rules/rulesets/radix-legacy.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG;IACpB,QAAQ;IACR,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,OAAO;IACP,eAAe;IACf,cAAc;IACd,UAAU;IACV,QAAQ;CACT,CAAC;AAEF,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO;QACL,EAAE,EAAE,uBAAuB,MAAM,EAAE;QACnC,KAAK,EAAE,iBAAiB,MAAM,EAAE;QAChC,WAAW,EAAE,mCAAmC,MAAM,GAAG;QACzD,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,CAAC;QACT,SAAS,EAAE;YACT,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,mBAAmB,MAAM,EAAE,EAAE,CAAC;SACnD;QACD,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAW,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,kBAAkB,GAAY;IACzC,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,gDAAgD;IAC7D,OAAO,EAAE,OAAO;IAChB,KAAK;IACL,UAAU,EAAE;QACV,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,CAAC;KACZ;CACF,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Evidence } from '../analysis/ir/types.js';
|
|
2
|
+
export type RuleSeverity = 'info' | 'low' | 'medium' | 'high' | 'critical';
|
|
3
|
+
export type Condition = {
|
|
4
|
+
evidenceId: string;
|
|
5
|
+
} | {
|
|
6
|
+
importSource: string;
|
|
7
|
+
} | {
|
|
8
|
+
jsxElement: string;
|
|
9
|
+
} | {
|
|
10
|
+
role: string;
|
|
11
|
+
} | {
|
|
12
|
+
dataAttr: string;
|
|
13
|
+
} | {
|
|
14
|
+
behavior: string;
|
|
15
|
+
} | {
|
|
16
|
+
typeRef: string;
|
|
17
|
+
};
|
|
18
|
+
export interface Predicate {
|
|
19
|
+
any?: Condition[];
|
|
20
|
+
all?: Condition[];
|
|
21
|
+
not?: Condition;
|
|
22
|
+
}
|
|
23
|
+
export interface Rule {
|
|
24
|
+
id: string;
|
|
25
|
+
title: string;
|
|
26
|
+
description: string;
|
|
27
|
+
severity: RuleSeverity;
|
|
28
|
+
weight: number;
|
|
29
|
+
predicate: Predicate;
|
|
30
|
+
tags?: string[];
|
|
31
|
+
}
|
|
32
|
+
export interface Ruleset {
|
|
33
|
+
id: string;
|
|
34
|
+
name: string;
|
|
35
|
+
description: string;
|
|
36
|
+
version: string;
|
|
37
|
+
rules: Rule[];
|
|
38
|
+
thresholds: {
|
|
39
|
+
strong: number;
|
|
40
|
+
possible: number;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export type Classification = 'strong' | 'possible' | 'none';
|
|
44
|
+
export interface RuleMatch {
|
|
45
|
+
ruleId: string;
|
|
46
|
+
matched: boolean;
|
|
47
|
+
score: number;
|
|
48
|
+
evidenceIds: string[];
|
|
49
|
+
}
|
|
50
|
+
export interface EvaluationResult {
|
|
51
|
+
classification: Classification;
|
|
52
|
+
confidence: number;
|
|
53
|
+
score: number;
|
|
54
|
+
matches: RuleMatch[];
|
|
55
|
+
evidence: Evidence[];
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rules/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE3E,MAAM,MAAM,SAAS,GACjB;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACtB;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpB;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpB;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExB,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/rules/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Disambiguation rules for similar Radix primitives.
|
|
3
|
+
* Helps differentiate between primitives with similar APIs.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Get primitives that are similar to the given primitive.
|
|
7
|
+
* @param primitiveName - Name of the Radix primitive
|
|
8
|
+
* @returns Array of similar primitive names
|
|
9
|
+
*/
|
|
10
|
+
export declare function getSimilarPrimitives(primitiveName: string): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Get the disambiguation rule for a primitive.
|
|
13
|
+
* @param primitiveName - Name of the Radix primitive
|
|
14
|
+
* @returns Human-readable disambiguation rule, or undefined if none
|
|
15
|
+
*/
|
|
16
|
+
export declare function getDisambiguationRule(primitiveName: string): string | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Get all primitives in the same similarity group.
|
|
19
|
+
* @param primitiveName - Name of the Radix primitive
|
|
20
|
+
* @returns Array including the primitive and all similar ones
|
|
21
|
+
*/
|
|
22
|
+
export declare function getSimilarityGroup(primitiveName: string): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Check if two primitives are in the same similarity group.
|
|
25
|
+
* @param primitive1 - First primitive name
|
|
26
|
+
* @param primitive2 - Second primitive name
|
|
27
|
+
* @returns True if they are similar
|
|
28
|
+
*/
|
|
29
|
+
export declare function areSimilar(primitive1: string, primitive2: string): boolean;
|
|
30
|
+
//# sourceMappingURL=disambiguation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disambiguation.d.ts","sourceRoot":"","sources":["../../src/signatures/disambiguation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyFH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAG1E"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Disambiguation rules for similar Radix primitives.
|
|
3
|
+
* Helps differentiate between primitives with similar APIs.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Groups of primitives that are similar and may be confused.
|
|
7
|
+
* Each group maps a primitive to its similar alternatives.
|
|
8
|
+
*/
|
|
9
|
+
const SIMILARITY_GROUPS = {
|
|
10
|
+
// Modal/Overlay patterns
|
|
11
|
+
Dialog: ['AlertDialog', 'Popover', 'Tooltip', 'HoverCard'],
|
|
12
|
+
AlertDialog: ['Dialog'],
|
|
13
|
+
Popover: ['Tooltip', 'HoverCard', 'Dialog'],
|
|
14
|
+
Tooltip: ['Popover', 'HoverCard'],
|
|
15
|
+
HoverCard: ['Tooltip', 'Popover'],
|
|
16
|
+
// Menu patterns
|
|
17
|
+
DropdownMenu: ['ContextMenu', 'Select', 'Menubar'],
|
|
18
|
+
ContextMenu: ['DropdownMenu'],
|
|
19
|
+
Menubar: ['DropdownMenu', 'NavigationMenu'],
|
|
20
|
+
NavigationMenu: ['Menubar'],
|
|
21
|
+
// Selection patterns
|
|
22
|
+
Select: ['DropdownMenu', 'Combobox'],
|
|
23
|
+
Combobox: ['Select'],
|
|
24
|
+
RadioGroup: ['ToggleGroup', 'Select'],
|
|
25
|
+
ToggleGroup: ['RadioGroup'],
|
|
26
|
+
// Toggle patterns
|
|
27
|
+
Checkbox: ['Switch', 'Toggle'],
|
|
28
|
+
Switch: ['Checkbox', 'Toggle'],
|
|
29
|
+
Toggle: ['Checkbox', 'Switch'],
|
|
30
|
+
// Structure patterns
|
|
31
|
+
Tabs: ['Accordion'],
|
|
32
|
+
Accordion: ['Tabs', 'Collapsible'],
|
|
33
|
+
Collapsible: ['Accordion'],
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Human-readable disambiguation rules.
|
|
37
|
+
* Explains how to distinguish this primitive from similar ones.
|
|
38
|
+
*/
|
|
39
|
+
const DISAMBIGUATION_RULES = {
|
|
40
|
+
Dialog: 'Dialog has a modal prop and Overlay sub-component. Unlike AlertDialog, it does not have Action/Cancel buttons.',
|
|
41
|
+
AlertDialog: 'AlertDialog has Action and Cancel button components. Unlike Dialog, it does not have a modal prop (always modal).',
|
|
42
|
+
Popover: 'Popover has side/align/sideOffset/alignOffset positioning props. Unlike Tooltip, it requires explicit triggering (no hover).',
|
|
43
|
+
Tooltip: 'Tooltip has delayDuration and skipDelayDuration for hover timing. Unlike Popover, it activates on hover.',
|
|
44
|
+
HoverCard: 'HoverCard has openDelay and closeDelay props. Similar to Tooltip but designed for richer hover content.',
|
|
45
|
+
DropdownMenu: 'DropdownMenu has Sub/SubTrigger/SubContent for nested menus and CheckboxItem/RadioGroup for selection. Unlike Select, no Value display.',
|
|
46
|
+
ContextMenu: 'ContextMenu is like DropdownMenu but triggered by right-click. Has onOpenChange but no explicit Trigger component.',
|
|
47
|
+
Select: 'Select has Value, Viewport, ScrollUpButton/ScrollDownButton components. Unlike DropdownMenu, displays selected value.',
|
|
48
|
+
Checkbox: 'Checkbox has an Indicator that shows checked state (checkmark). Unlike Switch, no sliding Thumb.',
|
|
49
|
+
Switch: 'Switch has a sliding Thumb component. Unlike Checkbox, no Indicator with checkmark.',
|
|
50
|
+
Toggle: 'Toggle has a pressed state. Unlike Checkbox/Switch, it is a button that toggles appearance.',
|
|
51
|
+
RadioGroup: 'RadioGroup has Item and Indicator components with single-value selection. Unlike ToggleGroup, no type prop.',
|
|
52
|
+
ToggleGroup: 'ToggleGroup has a type prop ("single" or "multiple") and rovingFocus. Unlike RadioGroup, can have multiple selection.',
|
|
53
|
+
Tabs: 'Tabs has List, Trigger, and Content with orientation. Horizontal content switching without collapse.',
|
|
54
|
+
Accordion: 'Accordion has Item, Header, Trigger, Content with collapsible prop. Vertical stacked sections that expand/collapse.',
|
|
55
|
+
Collapsible: 'Collapsible is a single collapsible region. Unlike Accordion, only one section without Item components.',
|
|
56
|
+
Menubar: 'Menubar is a horizontal menu bar with multiple Menu components. Unlike DropdownMenu, designed for app-level menus.',
|
|
57
|
+
NavigationMenu: 'NavigationMenu has Viewport, Indicator, and Link components for navigation patterns. Unlike Menubar, focused on links.',
|
|
58
|
+
Slider: 'Slider has min/max/step with Track, Range, and Thumb. Numeric range selection, potentially multiple thumbs.',
|
|
59
|
+
Progress: 'Progress has value/max with Indicator. Read-only display, no user interaction.',
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Get primitives that are similar to the given primitive.
|
|
63
|
+
* @param primitiveName - Name of the Radix primitive
|
|
64
|
+
* @returns Array of similar primitive names
|
|
65
|
+
*/
|
|
66
|
+
export function getSimilarPrimitives(primitiveName) {
|
|
67
|
+
return SIMILARITY_GROUPS[primitiveName] || [];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get the disambiguation rule for a primitive.
|
|
71
|
+
* @param primitiveName - Name of the Radix primitive
|
|
72
|
+
* @returns Human-readable disambiguation rule, or undefined if none
|
|
73
|
+
*/
|
|
74
|
+
export function getDisambiguationRule(primitiveName) {
|
|
75
|
+
return DISAMBIGUATION_RULES[primitiveName];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get all primitives in the same similarity group.
|
|
79
|
+
* @param primitiveName - Name of the Radix primitive
|
|
80
|
+
* @returns Array including the primitive and all similar ones
|
|
81
|
+
*/
|
|
82
|
+
export function getSimilarityGroup(primitiveName) {
|
|
83
|
+
const similar = getSimilarPrimitives(primitiveName);
|
|
84
|
+
if (similar.length === 0) {
|
|
85
|
+
return [primitiveName];
|
|
86
|
+
}
|
|
87
|
+
return [primitiveName, ...similar];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check if two primitives are in the same similarity group.
|
|
91
|
+
* @param primitive1 - First primitive name
|
|
92
|
+
* @param primitive2 - Second primitive name
|
|
93
|
+
* @returns True if they are similar
|
|
94
|
+
*/
|
|
95
|
+
export function areSimilar(primitive1, primitive2) {
|
|
96
|
+
const group1 = getSimilarPrimitives(primitive1);
|
|
97
|
+
return group1.includes(primitive2);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=disambiguation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disambiguation.js","sourceRoot":"","sources":["../../src/signatures/disambiguation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,iBAAiB,GAA6B;IAClD,yBAAyB;IACzB,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC;IAC1D,WAAW,EAAE,CAAC,QAAQ,CAAC;IACvB,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC;IAC3C,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;IACjC,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IAEjC,gBAAgB;IAChB,YAAY,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;IAClD,WAAW,EAAE,CAAC,cAAc,CAAC;IAC7B,OAAO,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAC3C,cAAc,EAAE,CAAC,SAAS,CAAC;IAE3B,qBAAqB;IACrB,MAAM,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;IACpC,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,UAAU,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;IACrC,WAAW,EAAE,CAAC,YAAY,CAAC;IAE3B,kBAAkB;IAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC9B,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC9B,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IAE9B,qBAAqB;IACrB,IAAI,EAAE,CAAC,WAAW,CAAC;IACnB,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;IAClC,WAAW,EAAE,CAAC,WAAW,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,oBAAoB,GAA2B;IACnD,MAAM,EACJ,gHAAgH;IAClH,WAAW,EACT,mHAAmH;IAErH,OAAO,EACL,8HAA8H;IAChI,OAAO,EACL,0GAA0G;IAC5G,SAAS,EACP,yGAAyG;IAE3G,YAAY,EACV,yIAAyI;IAC3I,WAAW,EACT,oHAAoH;IACtH,MAAM,EACJ,uHAAuH;IAEzH,QAAQ,EACN,kGAAkG;IACpG,MAAM,EACJ,qFAAqF;IACvF,MAAM,EACJ,6FAA6F;IAE/F,UAAU,EACR,6GAA6G;IAC/G,WAAW,EACT,uHAAuH;IAEzH,IAAI,EAAE,sGAAsG;IAC5G,SAAS,EACP,qHAAqH;IACvH,WAAW,EACT,yGAAyG;IAE3G,OAAO,EACL,oHAAoH;IACtH,cAAc,EACZ,wHAAwH;IAE1H,MAAM,EACJ,6GAA6G;IAC/G,QAAQ,EAAE,gFAAgF;CAC3F,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,OAAO,iBAAiB,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,aAAqB;IACzD,OAAO,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,MAAM,OAAO,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,aAAa,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB,EAAE,UAAkB;IAC/D,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Distinguishing props for Radix primitives.
|
|
3
|
+
* Knowledge base for identifying specific primitives by their unique props.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Get the distinguishing props for a primitive.
|
|
7
|
+
* @param primitiveName - Name of the Radix primitive
|
|
8
|
+
* @returns Array of prop/sub-component names that distinguish this primitive
|
|
9
|
+
*/
|
|
10
|
+
export declare function getDistinguishingProps(primitiveName: string): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Get the anti-pattern props for a primitive.
|
|
13
|
+
* These props indicate the component is NOT this primitive.
|
|
14
|
+
* @param primitiveName - Name of the Radix primitive
|
|
15
|
+
* @returns Array of prop names that indicate NOT this primitive
|
|
16
|
+
*/
|
|
17
|
+
export declare function getAntiPatternProps(primitiveName: string): string[];
|
|
18
|
+
/**
|
|
19
|
+
* Get all known primitive names.
|
|
20
|
+
* @returns Array of all primitive names in the knowledge base
|
|
21
|
+
*/
|
|
22
|
+
export declare function getKnownPrimitives(): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Check if a primitive name is known in the knowledge base.
|
|
25
|
+
* @param primitiveName - Name to check
|
|
26
|
+
* @returns True if the primitive is known
|
|
27
|
+
*/
|
|
28
|
+
export declare function isKnownPrimitive(primitiveName: string): boolean;
|
|
29
|
+
//# sourceMappingURL=distinguishing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distinguishing.d.ts","sourceRoot":"","sources":["../../src/signatures/distinguishing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4FH;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAE/D"}
|