@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,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestrate analysis, diff, update-check and report generation.
|
|
3
|
+
*/
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import * as fs from 'node:fs';
|
|
6
|
+
import { rcompare, valid as validSemver } from 'semver';
|
|
7
|
+
import { analyzeComponent, scoreAgainstSignatures, disambiguate, isAmbiguous } from '../analyzer/index.js';
|
|
8
|
+
import { getSignatureFromCache, getLatestResolution, listCachedPrimitives, listCachedVersions } from '../cache/index.js';
|
|
9
|
+
import { diffVersions } from '../differ/index.js';
|
|
10
|
+
import { resolvePackageVersion } from '../fetcher/npm-registry.js';
|
|
11
|
+
import { createModuleGraph } from '../analysis/module-graph.js';
|
|
12
|
+
import { discoverComponents } from './discover-components.js';
|
|
13
|
+
import { generateReport } from './generate-report.js';
|
|
14
|
+
import { baseUiRuleset, evaluateRuleset, radixLegacyRuleset } from '../rules/index.js';
|
|
15
|
+
/** Reference primitive for version resolution (Radix: dialog). */
|
|
16
|
+
const REFERENCE_PRIMITIVE = 'dialog';
|
|
17
|
+
/** Minimum confidence to include a match in analysis results. */
|
|
18
|
+
const DEFAULT_ANALYSIS_THRESHOLD = 40;
|
|
19
|
+
/** Max confidence for NO_LEGACY_RADIX_MATCH (below this = custom/Base). */
|
|
20
|
+
const CONFIDENCE_CUSTOM_OK_MAX = 50;
|
|
21
|
+
/** Min confidence for LEGACY_RADIX_MATCH_STRONG (above this = strong match). */
|
|
22
|
+
const CONFIDENCE_ADOPT_MIN = 70;
|
|
23
|
+
function serializeAnalysis(analysis) {
|
|
24
|
+
return {
|
|
25
|
+
...analysis,
|
|
26
|
+
propsInterface: Object.fromEntries(analysis.propsInterface.entries()),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function ensureDir(dir) {
|
|
30
|
+
if (!fs.existsSync(dir)) {
|
|
31
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function resolveTsconfig(cwd) {
|
|
35
|
+
const candidate = path.join(cwd, 'tsconfig.json');
|
|
36
|
+
return fs.existsSync(candidate) ? candidate : undefined;
|
|
37
|
+
}
|
|
38
|
+
function applyEvidenceVerbosity(analysis, evidence) {
|
|
39
|
+
if (!analysis.ir || evidence === 'verbose') {
|
|
40
|
+
return analysis;
|
|
41
|
+
}
|
|
42
|
+
const trimmedEvidence = analysis.ir.evidence.map(({ id, source, strength, weight }) => ({
|
|
43
|
+
id,
|
|
44
|
+
source,
|
|
45
|
+
strength,
|
|
46
|
+
weight,
|
|
47
|
+
}));
|
|
48
|
+
return {
|
|
49
|
+
...analysis,
|
|
50
|
+
ir: {
|
|
51
|
+
...analysis.ir,
|
|
52
|
+
evidence: trimmedEvidence,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function selectRules(rules, ruleset) {
|
|
57
|
+
if (!rules)
|
|
58
|
+
return undefined;
|
|
59
|
+
if (ruleset === 'base-ui') {
|
|
60
|
+
return { baseUi: rules.baseUi };
|
|
61
|
+
}
|
|
62
|
+
if (ruleset === 'radix-legacy') {
|
|
63
|
+
return { radixLegacy: rules.radixLegacy };
|
|
64
|
+
}
|
|
65
|
+
return rules;
|
|
66
|
+
}
|
|
67
|
+
async function loadSignatures(version) {
|
|
68
|
+
const signatures = [];
|
|
69
|
+
const primitivesList = await listCachedPrimitives(version);
|
|
70
|
+
for (const p of primitivesList) {
|
|
71
|
+
const sig = await getSignatureFromCache(p, version);
|
|
72
|
+
if (sig)
|
|
73
|
+
signatures.push(sig);
|
|
74
|
+
}
|
|
75
|
+
return signatures;
|
|
76
|
+
}
|
|
77
|
+
async function analyzeFiles(files, signatures, options, moduleGraph = createModuleGraph({
|
|
78
|
+
tsconfigPath: resolveTsconfig(process.cwd()),
|
|
79
|
+
cwd: process.cwd(),
|
|
80
|
+
rootDir: process.cwd(),
|
|
81
|
+
})) {
|
|
82
|
+
const threshold = DEFAULT_ANALYSIS_THRESHOLD;
|
|
83
|
+
const results = [];
|
|
84
|
+
const cwd = process.cwd();
|
|
85
|
+
for (const file of files) {
|
|
86
|
+
const absolute = path.resolve(file);
|
|
87
|
+
const relative = path.relative(cwd, absolute);
|
|
88
|
+
if (relative.startsWith('..') || path.isAbsolute(relative)) {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
if (absolute.endsWith('.d.ts') || !/\.(ts|tsx)$/.test(absolute)) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const analysis = await analyzeComponent(absolute, { moduleGraph });
|
|
96
|
+
const rules = analysis.ir
|
|
97
|
+
? {
|
|
98
|
+
baseUi: evaluateRuleset(analysis.ir, baseUiRuleset),
|
|
99
|
+
radixLegacy: evaluateRuleset(analysis.ir, radixLegacyRuleset),
|
|
100
|
+
}
|
|
101
|
+
: undefined;
|
|
102
|
+
const analysisForOutput = applyEvidenceVerbosity(analysis, options.evidence);
|
|
103
|
+
const rulesForOutput = selectRules(rules, options.ruleset);
|
|
104
|
+
let recommendation;
|
|
105
|
+
let matches = signatures.length > 0 ? scoreAgainstSignatures(analysis, signatures) : [];
|
|
106
|
+
matches = matches.filter((m) => m.confidence >= threshold);
|
|
107
|
+
const ambiguous = isAmbiguous(matches);
|
|
108
|
+
const bestMatch = matches.length > 0 ? disambiguate(matches, analysis) : null;
|
|
109
|
+
if (!bestMatch || bestMatch.confidence < CONFIDENCE_CUSTOM_OK_MAX) {
|
|
110
|
+
recommendation = {
|
|
111
|
+
primitive: null,
|
|
112
|
+
package: null,
|
|
113
|
+
confidence: bestMatch?.confidence ?? 0,
|
|
114
|
+
action: 'NO_LEGACY_RADIX_MATCH',
|
|
115
|
+
reason: bestMatch?.confidence
|
|
116
|
+
? `Low confidence (${bestMatch.confidence}) - likely custom or already Base UI`
|
|
117
|
+
: 'No legacy Radix match detected',
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
else if (bestMatch.confidence >= CONFIDENCE_ADOPT_MIN) {
|
|
121
|
+
recommendation = {
|
|
122
|
+
primitive: bestMatch.primitive,
|
|
123
|
+
package: bestMatch.package,
|
|
124
|
+
confidence: bestMatch.confidence,
|
|
125
|
+
action: 'LEGACY_RADIX_MATCH_STRONG',
|
|
126
|
+
reason: `High confidence legacy Radix match (${bestMatch.confidence}) - prioritize Base UI migration`,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
recommendation = {
|
|
131
|
+
primitive: bestMatch.primitive,
|
|
132
|
+
package: bestMatch.package,
|
|
133
|
+
confidence: bestMatch.confidence,
|
|
134
|
+
action: 'LEGACY_RADIX_MATCH_POSSIBLE',
|
|
135
|
+
reason: `Moderate confidence legacy Radix match (${bestMatch.confidence}) - review for Base UI migration`,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const result = {
|
|
139
|
+
component: analysis.name,
|
|
140
|
+
filePath: relative,
|
|
141
|
+
recommendation,
|
|
142
|
+
matches,
|
|
143
|
+
analysis: analysisForOutput,
|
|
144
|
+
isAmbiguous: ambiguous,
|
|
145
|
+
rules: rulesForOutput,
|
|
146
|
+
};
|
|
147
|
+
results.push(result);
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
console.warn(`[run-audit] Skipped ${relative}: ${err instanceof Error ? err.message : String(err)}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return results;
|
|
154
|
+
}
|
|
155
|
+
function persistInventory(outputDir, components) {
|
|
156
|
+
const inventoryPath = path.join(outputDir, 'component-inventory.json');
|
|
157
|
+
fs.writeFileSync(inventoryPath, JSON.stringify({ components }, null, 2), 'utf-8');
|
|
158
|
+
return inventoryPath;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Run full audit: optional analysis on files, diff, update-check, then generate report.
|
|
162
|
+
*/
|
|
163
|
+
export async function runAudit(input) {
|
|
164
|
+
const outputDir = path.resolve(input.outputDir ?? '.limps-headless/reports');
|
|
165
|
+
ensureDir(outputDir);
|
|
166
|
+
const format = input.format ?? 'both';
|
|
167
|
+
const primitives = input.scope?.primitives;
|
|
168
|
+
let inventoryPath;
|
|
169
|
+
let analysisPath;
|
|
170
|
+
let irPath;
|
|
171
|
+
let files = input.scope?.files ?? [];
|
|
172
|
+
let discovered = [];
|
|
173
|
+
let legacyRadixCount = 0;
|
|
174
|
+
const didDiscover = files.length === 0;
|
|
175
|
+
if (didDiscover) {
|
|
176
|
+
discovered = await discoverComponents(input.discovery);
|
|
177
|
+
inventoryPath = persistInventory(outputDir, discovered);
|
|
178
|
+
files = discovered.map((c) => c.path);
|
|
179
|
+
legacyRadixCount = discovered.filter((component) => component.backend === 'radix' || component.mixedUsage).length;
|
|
180
|
+
}
|
|
181
|
+
if (files.length > 0) {
|
|
182
|
+
let resolvedVersion = input.radixVersion ?? 'latest';
|
|
183
|
+
if (resolvedVersion === 'latest') {
|
|
184
|
+
const latestResolution = await getLatestResolution(REFERENCE_PRIMITIVE);
|
|
185
|
+
if (latestResolution) {
|
|
186
|
+
resolvedVersion = latestResolution.version;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
const versions = await listCachedVersions();
|
|
190
|
+
if (versions.length > 0) {
|
|
191
|
+
const validVersions = versions.filter((v) => validSemver(v));
|
|
192
|
+
resolvedVersion =
|
|
193
|
+
validVersions.length > 0
|
|
194
|
+
? validVersions.sort(rcompare)[0]
|
|
195
|
+
: versions.sort().reverse()[0];
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const signatures = await loadSignatures(resolvedVersion);
|
|
200
|
+
const results = await analyzeFiles(files, signatures, {
|
|
201
|
+
ruleset: input.ruleset ?? 'base-ui',
|
|
202
|
+
evidence: input.evidence ?? 'summary',
|
|
203
|
+
});
|
|
204
|
+
const serializable = results.map((r) => ({
|
|
205
|
+
...r,
|
|
206
|
+
analysis: serializeAnalysis(r.analysis),
|
|
207
|
+
}));
|
|
208
|
+
analysisPath = path.join(outputDir, 'analysis.json');
|
|
209
|
+
fs.writeFileSync(analysisPath, JSON.stringify({ results: serializable }, null, 2), 'utf-8');
|
|
210
|
+
if (input.debugIr) {
|
|
211
|
+
irPath = path.join(outputDir, 'ir.json');
|
|
212
|
+
const irDump = results.map((r) => ({
|
|
213
|
+
component: r.component,
|
|
214
|
+
filePath: r.filePath,
|
|
215
|
+
ir: r.analysis.ir ?? null,
|
|
216
|
+
}));
|
|
217
|
+
fs.writeFileSync(irPath, JSON.stringify({ components: irDump }, null, 2), 'utf-8');
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
analysisPath = path.join(outputDir, 'analysis.json');
|
|
222
|
+
fs.writeFileSync(analysisPath, JSON.stringify({ results: [] }, null, 2), 'utf-8');
|
|
223
|
+
}
|
|
224
|
+
const shouldSkipRadixDiff = didDiscover && (discovered.length === 0 || legacyRadixCount === 0);
|
|
225
|
+
let diffPath;
|
|
226
|
+
let updatesPath;
|
|
227
|
+
if (shouldSkipRadixDiff) {
|
|
228
|
+
const diff = {
|
|
229
|
+
fromVersion: 'n/a',
|
|
230
|
+
toVersion: 'n/a',
|
|
231
|
+
hasBreakingChanges: false,
|
|
232
|
+
summary: { totalChanges: 0, breaking: 0, warnings: 0, info: 0 },
|
|
233
|
+
changes: [],
|
|
234
|
+
};
|
|
235
|
+
diffPath = path.join(outputDir, 'diff.json');
|
|
236
|
+
fs.writeFileSync(diffPath, JSON.stringify(diff, null, 2), 'utf-8');
|
|
237
|
+
const updates = {
|
|
238
|
+
currentVersion: 'n/a',
|
|
239
|
+
latestVersion: 'n/a',
|
|
240
|
+
hasUpdate: false,
|
|
241
|
+
};
|
|
242
|
+
updatesPath = path.join(outputDir, 'updates.json');
|
|
243
|
+
fs.writeFileSync(updatesPath, JSON.stringify(updates, null, 2), 'utf-8');
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
const currentResolution = await getLatestResolution(REFERENCE_PRIMITIVE);
|
|
247
|
+
const currentVersion = currentResolution?.version;
|
|
248
|
+
const packageName = `@radix-ui/react-${REFERENCE_PRIMITIVE}`;
|
|
249
|
+
const latestVersion = await resolvePackageVersion(packageName, 'latest');
|
|
250
|
+
const fromVersion = currentVersion ?? input.radixVersion ?? latestVersion;
|
|
251
|
+
const diff = await diffVersions(fromVersion, latestVersion, primitives);
|
|
252
|
+
diffPath = path.join(outputDir, 'diff.json');
|
|
253
|
+
fs.writeFileSync(diffPath, JSON.stringify(diff, null, 2), 'utf-8');
|
|
254
|
+
const hasUpdate = currentVersion !== undefined && currentVersion !== latestVersion;
|
|
255
|
+
const updates = {
|
|
256
|
+
currentVersion: currentVersion ?? latestVersion,
|
|
257
|
+
latestVersion,
|
|
258
|
+
hasUpdate,
|
|
259
|
+
};
|
|
260
|
+
if (hasUpdate) {
|
|
261
|
+
updates.diff = diff;
|
|
262
|
+
}
|
|
263
|
+
updatesPath = path.join(outputDir, 'updates.json');
|
|
264
|
+
fs.writeFileSync(updatesPath, JSON.stringify(updates, null, 2), 'utf-8');
|
|
265
|
+
}
|
|
266
|
+
const gen = generateReport({
|
|
267
|
+
inputs: {
|
|
268
|
+
analysis: analysisPath,
|
|
269
|
+
diff: diffPath,
|
|
270
|
+
checkUpdates: updatesPath,
|
|
271
|
+
inventory: inventoryPath,
|
|
272
|
+
},
|
|
273
|
+
outputDir,
|
|
274
|
+
format,
|
|
275
|
+
title: 'Radix Audit Report',
|
|
276
|
+
policy: input.policy,
|
|
277
|
+
});
|
|
278
|
+
return {
|
|
279
|
+
...gen,
|
|
280
|
+
analysisPath,
|
|
281
|
+
irPath,
|
|
282
|
+
diffPath,
|
|
283
|
+
updatesPath,
|
|
284
|
+
inventoryPath,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=run-audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-audit.js","sourceRoot":"","sources":["../../src/audit/run-audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the audit report pipeline.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Priority levels for report issues.
|
|
6
|
+
*/
|
|
7
|
+
export type IssuePriority = 'critical' | 'high' | 'medium' | 'low';
|
|
8
|
+
/**
|
|
9
|
+
* Backend identifier for headless UI libraries (Agent 1 #1).
|
|
10
|
+
*/
|
|
11
|
+
export type HeadlessBackend = 'radix' | 'base' | 'mixed' | 'unknown';
|
|
12
|
+
/**
|
|
13
|
+
* Issue category for backend provider analysis (Agent 1 #2).
|
|
14
|
+
*/
|
|
15
|
+
export type IssueCategory = 'accessibility' | 'performance' | 'dependencies' | 'storybook' | 'migration';
|
|
16
|
+
/**
|
|
17
|
+
* Migration readiness levels based on Radix percentage in codebase.
|
|
18
|
+
*/
|
|
19
|
+
export type MigrationReadiness = 'excellent' | 'good' | 'needs-work' | 'urgent';
|
|
20
|
+
/**
|
|
21
|
+
* Issue from backend provider analysis (Agent 1 #2).
|
|
22
|
+
*/
|
|
23
|
+
export interface Issue {
|
|
24
|
+
component?: string;
|
|
25
|
+
category: IssueCategory;
|
|
26
|
+
severity: IssuePriority;
|
|
27
|
+
message: string;
|
|
28
|
+
suggestion?: string;
|
|
29
|
+
evidence?: string[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Severity for contraventions (policy/version drift).
|
|
33
|
+
*/
|
|
34
|
+
export type ContraventionSeverity = 'high' | 'medium' | 'low';
|
|
35
|
+
/**
|
|
36
|
+
* Policy options for audit (Agent 0 #5).
|
|
37
|
+
*/
|
|
38
|
+
export type BackendMode = 'auto' | 'base' | 'radix-legacy';
|
|
39
|
+
export type MigrationThreshold = 'low' | 'medium' | 'high';
|
|
40
|
+
export interface RunAuditOptions {
|
|
41
|
+
backendMode: BackendMode;
|
|
42
|
+
migrationThreshold: MigrationThreshold;
|
|
43
|
+
failOnMixed: boolean;
|
|
44
|
+
includeLegacy: boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Options for component discovery.
|
|
48
|
+
*/
|
|
49
|
+
export interface DiscoveryOptions {
|
|
50
|
+
rootDir?: string;
|
|
51
|
+
includePatterns?: string[];
|
|
52
|
+
excludePatterns?: string[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Metadata for a discovered component (Agent 1 #1 - extended with backend detection).
|
|
56
|
+
*/
|
|
57
|
+
export interface ComponentMetadata {
|
|
58
|
+
path: string;
|
|
59
|
+
name: string;
|
|
60
|
+
exportType?: 'default' | 'named' | 'both';
|
|
61
|
+
propsInterface?: string;
|
|
62
|
+
dependencies?: string[];
|
|
63
|
+
/** Detected backend library (radix, base, mixed, unknown). */
|
|
64
|
+
backend: HeadlessBackend;
|
|
65
|
+
/** True if component uses both Radix and Base imports. */
|
|
66
|
+
mixedUsage: boolean;
|
|
67
|
+
/** Import sources that matched backend detection (e.g. "@radix-ui/react-dialog"). */
|
|
68
|
+
importSources: string[];
|
|
69
|
+
/** Pattern evidence found (e.g. "asChild", "render"). */
|
|
70
|
+
evidence: string[];
|
|
71
|
+
/** True if component exports a React component. */
|
|
72
|
+
exportsComponent: boolean;
|
|
73
|
+
/** Names of exported identifiers. */
|
|
74
|
+
exportedNames: string[];
|
|
75
|
+
}
|
|
76
|
+
export interface ComponentInventory {
|
|
77
|
+
components: ComponentMetadata[];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* A single contravention (e.g. legacy package usage, non-tree-shaking).
|
|
81
|
+
*/
|
|
82
|
+
export interface Contravention {
|
|
83
|
+
id: string;
|
|
84
|
+
type: string;
|
|
85
|
+
severity: ContraventionSeverity;
|
|
86
|
+
description: string;
|
|
87
|
+
recommendation: string;
|
|
88
|
+
location?: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* A single issue from analysis or diff.
|
|
92
|
+
*/
|
|
93
|
+
export interface AuditIssue {
|
|
94
|
+
id: string;
|
|
95
|
+
category: string;
|
|
96
|
+
priority: IssuePriority;
|
|
97
|
+
description: string;
|
|
98
|
+
recommendation: string;
|
|
99
|
+
location?: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Audit report output shape.
|
|
103
|
+
*/
|
|
104
|
+
export interface AuditReport {
|
|
105
|
+
metadata: {
|
|
106
|
+
version: string;
|
|
107
|
+
generatedAt: string;
|
|
108
|
+
generatedBy: string;
|
|
109
|
+
/** Policy used for this audit (when provided). */
|
|
110
|
+
policy?: Partial<RunAuditOptions>;
|
|
111
|
+
};
|
|
112
|
+
summary: {
|
|
113
|
+
totalComponents: number;
|
|
114
|
+
issuesByPriority: Record<IssuePriority, number>;
|
|
115
|
+
contraventions: number;
|
|
116
|
+
/** Backend counts when inventory is available (optional for backward compat). */
|
|
117
|
+
backendCounts?: Record<HeadlessBackend, number>;
|
|
118
|
+
/** Count of components using legacy Radix (radix + mixed). */
|
|
119
|
+
legacyRadixCount?: number;
|
|
120
|
+
/** Migration readiness indicator. */
|
|
121
|
+
migrationReadiness?: MigrationReadiness;
|
|
122
|
+
};
|
|
123
|
+
inventory?: ComponentMetadata[];
|
|
124
|
+
compliance?: Array<{
|
|
125
|
+
path: string;
|
|
126
|
+
name: string;
|
|
127
|
+
primitive: string | null;
|
|
128
|
+
confidence: number;
|
|
129
|
+
status: 'pass' | 'partial' | 'fail';
|
|
130
|
+
}>;
|
|
131
|
+
contraventions: Contravention[];
|
|
132
|
+
issues: AuditIssue[];
|
|
133
|
+
recommendations: string[];
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/audit/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/audit/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache module for Radix primitive data.
|
|
3
|
+
*
|
|
4
|
+
* Provides version-aware caching with TTL for:
|
|
5
|
+
* - ExtractedPrimitive data
|
|
6
|
+
* - BehaviorSignature data
|
|
7
|
+
* - "Latest" version resolution
|
|
8
|
+
*/
|
|
9
|
+
import type { ExtractedPrimitive, BehaviorSignature } from '../types/index.js';
|
|
10
|
+
export * from './storage.js';
|
|
11
|
+
export * from './ttl.js';
|
|
12
|
+
/**
|
|
13
|
+
* Latest version resolution cache entry.
|
|
14
|
+
*/
|
|
15
|
+
export interface LatestResolution {
|
|
16
|
+
version: string;
|
|
17
|
+
resolvedAt: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Latest resolution cache file content.
|
|
21
|
+
*/
|
|
22
|
+
export interface LatestResolutionCache {
|
|
23
|
+
[primitive: string]: LatestResolution;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Cache options for get operations.
|
|
27
|
+
*/
|
|
28
|
+
export interface CacheGetOptions {
|
|
29
|
+
/**
|
|
30
|
+
* Skip TTL check and return cached data even if expired.
|
|
31
|
+
*/
|
|
32
|
+
ignoreExpired?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Base directory for cache (for testing).
|
|
35
|
+
*/
|
|
36
|
+
baseDir?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Cache options for save operations.
|
|
40
|
+
*/
|
|
41
|
+
export interface CacheSaveOptions {
|
|
42
|
+
/**
|
|
43
|
+
* Base directory for cache (for testing).
|
|
44
|
+
*/
|
|
45
|
+
baseDir?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get cached ExtractedPrimitive data.
|
|
49
|
+
* @param primitive - Primitive name (e.g., "Dialog")
|
|
50
|
+
* @param version - Version string
|
|
51
|
+
* @param options - Cache options
|
|
52
|
+
* @returns Cached data or null if not found or expired
|
|
53
|
+
*/
|
|
54
|
+
export declare function getFromCache(primitive: string, version: string, options?: CacheGetOptions): Promise<ExtractedPrimitive | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Save ExtractedPrimitive data to cache.
|
|
57
|
+
* @param primitive - Primitive name (e.g., "Dialog")
|
|
58
|
+
* @param version - Version string
|
|
59
|
+
* @param data - Data to cache
|
|
60
|
+
* @param options - Cache options
|
|
61
|
+
*/
|
|
62
|
+
export declare function saveToCache(primitive: string, version: string, data: ExtractedPrimitive, options?: CacheSaveOptions): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Get cached BehaviorSignature data.
|
|
65
|
+
* @param primitive - Primitive name (e.g., "Dialog")
|
|
66
|
+
* @param version - Version string
|
|
67
|
+
* @param options - Cache options
|
|
68
|
+
* @returns Cached signature or null if not found or expired
|
|
69
|
+
*/
|
|
70
|
+
export declare function getSignatureFromCache(primitive: string, version: string, options?: CacheGetOptions): Promise<BehaviorSignature | null>;
|
|
71
|
+
/**
|
|
72
|
+
* Save BehaviorSignature data to cache.
|
|
73
|
+
* @param primitive - Primitive name (e.g., "Dialog")
|
|
74
|
+
* @param version - Version string
|
|
75
|
+
* @param signature - Signature to cache
|
|
76
|
+
* @param options - Cache options
|
|
77
|
+
*/
|
|
78
|
+
export declare function saveSignatureToCache(primitive: string, version: string, signature: BehaviorSignature, options?: CacheSaveOptions): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Get the "latest" version resolution for a primitive.
|
|
81
|
+
* @param primitive - Primitive name
|
|
82
|
+
* @param options - Cache options
|
|
83
|
+
* @returns Latest resolution or null if not found or expired
|
|
84
|
+
*/
|
|
85
|
+
export declare function getLatestResolution(primitive: string, options?: CacheGetOptions): Promise<LatestResolution | null>;
|
|
86
|
+
/**
|
|
87
|
+
* Save a "latest" version resolution.
|
|
88
|
+
* @param primitive - Primitive name
|
|
89
|
+
* @param version - Resolved version string
|
|
90
|
+
* @param options - Cache options
|
|
91
|
+
*/
|
|
92
|
+
export declare function saveLatestResolution(primitive: string, version: string, options?: CacheSaveOptions): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Clear cache for a specific primitive and version, or all cache.
|
|
95
|
+
* @param primitive - Optional primitive name (clears all if not provided)
|
|
96
|
+
* @param version - Optional version (clears all versions of primitive if not provided)
|
|
97
|
+
* @param options - Cache options
|
|
98
|
+
*/
|
|
99
|
+
export declare function clearCache(primitive?: string, version?: string, options?: CacheSaveOptions): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Get cache statistics.
|
|
102
|
+
* @param options - Cache options
|
|
103
|
+
* @returns Cache statistics
|
|
104
|
+
*/
|
|
105
|
+
export declare function getCacheStats(options?: CacheGetOptions): Promise<{
|
|
106
|
+
versions: string[];
|
|
107
|
+
primitiveCount: number;
|
|
108
|
+
signatureCount: number;
|
|
109
|
+
}>;
|
|
110
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAe/E,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAcpC;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAkBnC;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,iBAAiB,EAC5B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAqBlC;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC;IAC1E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAyBD"}
|