@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 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,SAAS,SAAS,CAAC,IAAY,EAAE,IAAa;IAC5C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAW3B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CACV,gIAAgI,CACjI;SACA,QAAQ,CAAC,QAAQ,EAAE,gDAAgD,CAAC;SACpE,MAAM,CAAC,yBAAyB,EAAE,kCAAkC,EAAE,QAAQ,CAAC;SAC/E,MAAM,CAAC,0BAA0B,EAAE,8BAA8B,EAAE,IAAI,CAAC;SACxE,MAAM,CAAC,2BAA2B,EAAE,4BAA4B,EAAE,OAAO,CAAC;SAC1E,MAAM,CACL,qBAAqB,EACrB,mDAAmD,EACnD,SAAS,CACV;SACA,MAAM,CAAC,oBAAoB,EAAE,wCAAwC,EAAE,SAAS,CAAC;SACjF,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC;YAC5C,QAAQ;YACR,YAAY,EAAE,OAAO,CAAC,OAAO;YAC7B,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;QAC/C,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiG3D"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command for running a full headless UI audit (analysis + diff + report).
|
|
3
|
+
*/
|
|
4
|
+
import { runAudit } from '../../audit/run-audit.js';
|
|
5
|
+
import { parseBackendMode, parseMigrationThreshold, DEFAULT_RUN_AUDIT_OPTIONS, } from '../flags.js';
|
|
6
|
+
export function registerAuditCommand(program) {
|
|
7
|
+
program
|
|
8
|
+
.command('audit')
|
|
9
|
+
.description('Run full audit: optionally analyze files, diff versions, check updates; writes report to .limps-headless/reports (run from project dir)')
|
|
10
|
+
.option('-f, --files <paths...>', 'Component file paths to analyze (relative to cwd)')
|
|
11
|
+
.option('--root-dir <dir>', 'Root directory for component discovery')
|
|
12
|
+
.option('-o, --output-dir <dir>', 'Output directory', '.limps-headless/reports')
|
|
13
|
+
.option('--format <format>', 'Report format: json, markdown, or both', 'both')
|
|
14
|
+
.option('--json', 'Output summary as JSON only')
|
|
15
|
+
.option('--backend <mode>', 'Backend policy: auto, base, or radix-legacy', DEFAULT_RUN_AUDIT_OPTIONS.backendMode)
|
|
16
|
+
.option('--ruleset <ruleset>', 'Ruleset selection: base-ui, radix-legacy, or both', 'base-ui')
|
|
17
|
+
.option('--evidence <level>', 'Evidence verbosity: summary or verbose', 'summary')
|
|
18
|
+
.option('--debug-ir', 'Write IR dump to output directory')
|
|
19
|
+
.option('--migration-threshold <level>', 'Fail if migration issues >= level: low, medium, high', DEFAULT_RUN_AUDIT_OPTIONS.migrationThreshold)
|
|
20
|
+
.option('--fail-on-mixed', 'Exit non-zero when Radix and Base are mixed')
|
|
21
|
+
.option('--no-include-legacy', 'Disallow Radix (enforce base-only when --backend=base)')
|
|
22
|
+
.action(async (options) => {
|
|
23
|
+
const files = options.files
|
|
24
|
+
? (Array.isArray(options.files) ? options.files : [options.files]).flat()
|
|
25
|
+
: [];
|
|
26
|
+
const result = await runAudit({
|
|
27
|
+
scope: files.length > 0 ? { files } : undefined,
|
|
28
|
+
discovery: options.rootDir ? { rootDir: options.rootDir } : undefined,
|
|
29
|
+
outputDir: options.outputDir,
|
|
30
|
+
format: options.format === 'json' ? 'json' : options.format === 'markdown' ? 'markdown' : 'both',
|
|
31
|
+
ruleset: options.ruleset,
|
|
32
|
+
evidence: options.evidence,
|
|
33
|
+
debugIr: Boolean(options.debugIr),
|
|
34
|
+
policy: {
|
|
35
|
+
backendMode: parseBackendMode(options.backend ?? 'auto'),
|
|
36
|
+
migrationThreshold: parseMigrationThreshold(options.migrationThreshold ?? 'medium'),
|
|
37
|
+
failOnMixed: Boolean(options.failOnMixed),
|
|
38
|
+
includeLegacy: options.includeLegacy !== false,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
if (options.json) {
|
|
42
|
+
console.log(JSON.stringify({
|
|
43
|
+
outputDir: result.outputDir,
|
|
44
|
+
jsonPath: result.jsonPath,
|
|
45
|
+
markdownPath: result.markdownPath,
|
|
46
|
+
analysisPath: result.analysisPath,
|
|
47
|
+
irPath: result.irPath,
|
|
48
|
+
diffPath: result.diffPath,
|
|
49
|
+
updatesPath: result.updatesPath,
|
|
50
|
+
summary: result.report.summary,
|
|
51
|
+
}, null, 2));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
console.log('Audit complete.');
|
|
55
|
+
console.log(`Output dir: ${result.outputDir}`);
|
|
56
|
+
if (result.markdownPath) {
|
|
57
|
+
console.log(`Report: ${result.markdownPath}`);
|
|
58
|
+
}
|
|
59
|
+
if (result.jsonPath) {
|
|
60
|
+
console.log(`JSON: ${result.jsonPath}`);
|
|
61
|
+
}
|
|
62
|
+
console.log(`Analysis: ${result.analysisPath}`);
|
|
63
|
+
if (result.irPath) {
|
|
64
|
+
console.log(`IR: ${result.irPath}`);
|
|
65
|
+
}
|
|
66
|
+
console.log(`Diff: ${result.diffPath}`);
|
|
67
|
+
console.log(`Updates: ${result.updatesPath}`);
|
|
68
|
+
console.log('');
|
|
69
|
+
const s = result.report.summary;
|
|
70
|
+
console.log(`Summary: ${s.totalComponents} components, ${s.contraventions} contraventions, issues: ${s.issuesByPriority.critical ?? 0} critical / ${s.issuesByPriority.high ?? 0} high / ${s.issuesByPriority.medium ?? 0} medium / ${s.issuesByPriority.low ?? 0} low`);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-updates.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check-updates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBzC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAelE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command for checking Radix updates.
|
|
3
|
+
*/
|
|
4
|
+
import { handleCheckUpdates } from '../../tools/check-updates.js';
|
|
5
|
+
function printJson(text, json) {
|
|
6
|
+
if (json) {
|
|
7
|
+
console.log(text);
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const data = JSON.parse(text);
|
|
11
|
+
console.log(`Current: ${data.currentVersion}`);
|
|
12
|
+
console.log(`Latest: ${data.latestVersion}`);
|
|
13
|
+
console.log(`Update: ${data.hasUpdate ? 'available' : 'none'}`);
|
|
14
|
+
if (data.diff) {
|
|
15
|
+
console.log(`Changes: ${data.diff.summary.totalChanges} total`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function registerCheckUpdatesCommand(program) {
|
|
19
|
+
program
|
|
20
|
+
.command('check-updates')
|
|
21
|
+
.description('Check for new Radix releases')
|
|
22
|
+
.option('--refresh', 'Refresh cached data')
|
|
23
|
+
.option('-p, --provider <provider>', 'Component library provider', 'radix')
|
|
24
|
+
.option('--json', 'Output raw JSON')
|
|
25
|
+
.action(async (options) => {
|
|
26
|
+
const response = await handleCheckUpdates({
|
|
27
|
+
refreshCache: Boolean(options.refresh),
|
|
28
|
+
provider: options.provider,
|
|
29
|
+
});
|
|
30
|
+
const text = response.content[0]?.text ?? '{}';
|
|
31
|
+
printJson(text, Boolean(options.json));
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=check-updates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-updates.js","sourceRoot":"","sources":["../../../src/cli/commands/check-updates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,SAAS,SAAS,CAAC,IAAY,EAAE,IAAa;IAC5C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAK3B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,QAAQ,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,WAAW,EAAE,qBAAqB,CAAC;SAC1C,MAAM,CAAC,2BAA2B,EAAE,4BAA4B,EAAE,OAAO,CAAC;SAC1E,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;QAC/C,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command: diff two Radix versions to see what breaks when upgrading
|
|
3
|
+
* (e.g. diff 1.0.0 --to latest).
|
|
4
|
+
*/
|
|
5
|
+
import type { Command } from 'commander';
|
|
6
|
+
export declare function registerDiffCommand(program: Command): void;
|
|
7
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/diff.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2B1D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command: diff two Radix versions to see what breaks when upgrading
|
|
3
|
+
* (e.g. diff 1.0.0 --to latest).
|
|
4
|
+
*/
|
|
5
|
+
import { handleDiffVersions } from '../../tools/diff-versions.js';
|
|
6
|
+
function printJson(text, json) {
|
|
7
|
+
if (json) {
|
|
8
|
+
console.log(text);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const data = JSON.parse(text);
|
|
12
|
+
console.log(`${data.fromVersion} → ${data.toVersion}`);
|
|
13
|
+
console.log(`Breaking changes: ${data.hasBreakingChanges ? 'yes' : 'no'}`);
|
|
14
|
+
console.log(`Summary: ${data.summary.totalChanges} total (${data.summary.breaking} breaking, ${data.summary.warnings} warnings, ${data.summary.info} info)`);
|
|
15
|
+
console.log('');
|
|
16
|
+
for (const change of data.changes) {
|
|
17
|
+
console.log(`[${change.severity}] ${change.description}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function registerDiffCommand(program) {
|
|
21
|
+
program
|
|
22
|
+
.command('diff')
|
|
23
|
+
.description('Diff two Radix versions (from → to); not your code vs Radix')
|
|
24
|
+
.argument('<from-version>', 'From Radix version (e.g. your current)')
|
|
25
|
+
.option('-t, --to <version>', 'To Radix version (e.g. latest)', 'latest')
|
|
26
|
+
.option('-p, --primitives <list>', 'Comma-separated primitives')
|
|
27
|
+
.option('--breaking-only', 'Show only breaking changes')
|
|
28
|
+
.option('--provider <provider>', 'Component library provider', 'radix')
|
|
29
|
+
.option('--json', 'Output raw JSON')
|
|
30
|
+
.action(async (fromVersion, options) => {
|
|
31
|
+
const primitives = options.primitives
|
|
32
|
+
? String(options.primitives)
|
|
33
|
+
.split(',')
|
|
34
|
+
.map((p) => p.trim())
|
|
35
|
+
.filter(Boolean)
|
|
36
|
+
: undefined;
|
|
37
|
+
const response = await handleDiffVersions({
|
|
38
|
+
fromVersion,
|
|
39
|
+
toVersion: options.to,
|
|
40
|
+
primitives,
|
|
41
|
+
breakingOnly: Boolean(options.breakingOnly),
|
|
42
|
+
provider: options.provider,
|
|
43
|
+
});
|
|
44
|
+
const text = response.content[0]?.text ?? '{}';
|
|
45
|
+
printJson(text, Boolean(options.json));
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/cli/commands/diff.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,SAAS,SAAS,CAAC,IAAY,EAAE,IAAa;IAC5C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAM3B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CACT,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,cAAc,IAAI,CAAC,OAAO,CAAC,QAAQ,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAChJ,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,6DAA6D,CAAC;SAC1E,QAAQ,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;SACpE,MAAM,CAAC,oBAAoB,EAAE,gCAAgC,EAAE,QAAQ,CAAC;SACxE,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC;SAC/D,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,OAAO,CAAC;SACtE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;QACrC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU;YACnC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;iBACvB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAC5B,MAAM,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,WAAW;YACX,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,UAAU;YACV,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;YAC3C,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;QAC/C,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/extract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmCzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiB7D"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command for extracting primitive contracts.
|
|
3
|
+
*/
|
|
4
|
+
import { handleExtractPrimitive } from '../../tools/extract-primitive.js';
|
|
5
|
+
function printJson(text, json) {
|
|
6
|
+
if (json) {
|
|
7
|
+
console.log(text);
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const data = JSON.parse(text);
|
|
11
|
+
console.log(`${data.primitive} (${data.package}) @ ${data.version}`);
|
|
12
|
+
console.log(`State: ${data.behavior.statePattern}`);
|
|
13
|
+
console.log(`Composition: ${data.behavior.compositionPattern}`);
|
|
14
|
+
console.log(`Rendering: ${data.behavior.renderingPattern}`);
|
|
15
|
+
console.log('');
|
|
16
|
+
console.log('Sub-components:');
|
|
17
|
+
for (const sub of data.subComponents) {
|
|
18
|
+
console.log(`- ${sub.name}`);
|
|
19
|
+
for (const prop of sub.props) {
|
|
20
|
+
console.log(` - ${prop.name}: ${prop.type}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function registerExtractCommand(program) {
|
|
25
|
+
program
|
|
26
|
+
.command('extract')
|
|
27
|
+
.description('Extract a primitive contract')
|
|
28
|
+
.argument('<primitive>', 'Primitive name (e.g., dialog)')
|
|
29
|
+
.option('-v, --version <version>', 'Version to query', 'latest')
|
|
30
|
+
.option('-p, --provider <provider>', 'Component library provider', 'radix')
|
|
31
|
+
.option('--json', 'Output raw JSON')
|
|
32
|
+
.action(async (primitive, options) => {
|
|
33
|
+
const response = await handleExtractPrimitive({
|
|
34
|
+
primitive,
|
|
35
|
+
version: options.version,
|
|
36
|
+
provider: options.provider,
|
|
37
|
+
});
|
|
38
|
+
const text = response.content[0]?.text ?? '{}';
|
|
39
|
+
printJson(text, Boolean(options.json));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/cli/commands/extract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,SAAS,SAAS,CAAC,IAAY,EAAE,IAAa;IAC5C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAU3B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,QAAQ,CAAC,aAAa,EAAE,+BAA+B,CAAC;SACxD,MAAM,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,QAAQ,CAAC;SAC/D,MAAM,CAAC,2BAA2B,EAAE,4BAA4B,EAAE,OAAO,CAAC;SAC1E,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC;YAC5C,SAAS;YACT,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;QAC/C,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe1D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command for listing primitives.
|
|
3
|
+
*/
|
|
4
|
+
import { handleListPrimitives } from '../../tools/list-primitives.js';
|
|
5
|
+
function printJson(text, json) {
|
|
6
|
+
if (json) {
|
|
7
|
+
console.log(text);
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const data = JSON.parse(text);
|
|
11
|
+
console.log(`Version: ${data.version}`);
|
|
12
|
+
for (const primitive of data.primitives) {
|
|
13
|
+
const description = primitive.description ? ` - ${primitive.description}` : '';
|
|
14
|
+
console.log(`- ${primitive.name} (${primitive.package})${description}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function registerListCommand(program) {
|
|
18
|
+
program
|
|
19
|
+
.command('list')
|
|
20
|
+
.description('List available primitives')
|
|
21
|
+
.option('-v, --version <version>', 'Version to query', 'latest')
|
|
22
|
+
.option('-p, --provider <provider>', 'Component library provider', 'radix')
|
|
23
|
+
.option('--json', 'Output raw JSON')
|
|
24
|
+
.action(async (options) => {
|
|
25
|
+
const response = await handleListPrimitives({
|
|
26
|
+
version: options.version,
|
|
27
|
+
provider: options.provider,
|
|
28
|
+
});
|
|
29
|
+
const text = response.content[0]?.text ?? '{}';
|
|
30
|
+
printJson(text, Boolean(options.json));
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,SAAS,SAAS,CAAC,IAAY,EAAE,IAAa;IAC5C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAG3B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,QAAQ,CAAC;SAC/D,MAAM,CAAC,2BAA2B,EAAE,4BAA4B,EAAE,OAAO,CAAC;SAC1E,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC;YAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;QAC/C,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI policy flags for Agent 0 #5. Types live in audit/types.ts to avoid circular deps.
|
|
3
|
+
*/
|
|
4
|
+
import type { BackendMode, MigrationThreshold, RunAuditOptions } from '../audit/types.js';
|
|
5
|
+
export type { BackendMode, MigrationThreshold, RunAuditOptions };
|
|
6
|
+
export declare const DEFAULT_RUN_AUDIT_OPTIONS: RunAuditOptions;
|
|
7
|
+
export declare function parseBackendMode(value: string): BackendMode;
|
|
8
|
+
export declare function parseMigrationThreshold(value: string): MigrationThreshold;
|
|
9
|
+
//# sourceMappingURL=flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/cli/flags.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE1F,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC;AAEjE,eAAO,MAAM,yBAAyB,EAAE,eAKvC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAI3D;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAIzE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI policy flags for Agent 0 #5. Types live in audit/types.ts to avoid circular deps.
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_RUN_AUDIT_OPTIONS = {
|
|
5
|
+
backendMode: 'auto',
|
|
6
|
+
migrationThreshold: 'medium',
|
|
7
|
+
failOnMixed: false,
|
|
8
|
+
includeLegacy: true,
|
|
9
|
+
};
|
|
10
|
+
export function parseBackendMode(value) {
|
|
11
|
+
const v = value?.toLowerCase();
|
|
12
|
+
if (v === 'base' || v === 'radix-legacy' || v === 'auto')
|
|
13
|
+
return v;
|
|
14
|
+
return 'auto';
|
|
15
|
+
}
|
|
16
|
+
export function parseMigrationThreshold(value) {
|
|
17
|
+
const v = value?.toLowerCase();
|
|
18
|
+
if (v === 'low' || v === 'medium' || v === 'high')
|
|
19
|
+
return v;
|
|
20
|
+
return 'medium';
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/cli/flags.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,CAAC,MAAM,yBAAyB,GAAoB;IACxD,WAAW,EAAE,MAAM;IACnB,kBAAkB,EAAE,QAAQ;IAC5B,WAAW,EAAE,KAAK;IAClB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,CAAC,GAAG,KAAK,EAAE,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,CAAC,GAAG,KAAK,EAAE,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB5C"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI entry point for limps-headless.
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { registerAnalyzeCommand } from './commands/analyze.js';
|
|
6
|
+
import { registerAuditCommand } from './commands/audit.js';
|
|
7
|
+
import { registerCheckUpdatesCommand } from './commands/check-updates.js';
|
|
8
|
+
import { registerDiffCommand } from './commands/diff.js';
|
|
9
|
+
import { registerExtractCommand } from './commands/extract.js';
|
|
10
|
+
import { registerListCommand } from './commands/list.js';
|
|
11
|
+
import { readFileSync } from 'node:fs';
|
|
12
|
+
import { fileURLToPath } from 'node:url';
|
|
13
|
+
import { dirname, join } from 'node:path';
|
|
14
|
+
function getPackageVersion() {
|
|
15
|
+
try {
|
|
16
|
+
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
17
|
+
const packagePath = join(currentDir, '../../package.json');
|
|
18
|
+
const pkg = JSON.parse(readFileSync(packagePath, 'utf-8'));
|
|
19
|
+
return pkg.version ?? '0.0.0';
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return '0.0.0';
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export async function runCli() {
|
|
26
|
+
const program = new Command();
|
|
27
|
+
program
|
|
28
|
+
.name('limps-headless')
|
|
29
|
+
.description('Headless UI contract extraction and drift detection CLI')
|
|
30
|
+
.version(getPackageVersion(), '-V, --cli-version', 'output the CLI version');
|
|
31
|
+
registerListCommand(program);
|
|
32
|
+
registerExtractCommand(program);
|
|
33
|
+
registerAnalyzeCommand(program);
|
|
34
|
+
registerAuditCommand(program);
|
|
35
|
+
registerDiffCommand(program);
|
|
36
|
+
registerCheckUpdatesCommand(program);
|
|
37
|
+
await program.parseAsync(process.argv);
|
|
38
|
+
}
|
|
39
|
+
void runCli();
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAyB,CAAC;QACnF,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,gBAAgB,CAAC;SACtB,WAAW,CAAC,yDAAyD,CAAC;SACtE,OAAO,CAAC,iBAAiB,EAAE,EAAE,mBAAmB,EAAE,wBAAwB,CAAC,CAAC;IAE/E,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAErC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,KAAK,MAAM,EAAE,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config and defaults for limps-headless (Agent 0).
|
|
3
|
+
* Merges with limps root config when used as extension; used as defaults for standalone CLI.
|
|
4
|
+
*/
|
|
5
|
+
import type { RunAuditOptions } from './audit/types.js';
|
|
6
|
+
export interface HeadlessConfig {
|
|
7
|
+
/** Base directory for cache (e.g. ~/.limps-headless) */
|
|
8
|
+
cacheDir?: string;
|
|
9
|
+
/** Policy options for audit */
|
|
10
|
+
audit?: Partial<RunAuditOptions>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resolve headless config: merge optional file/config with defaults.
|
|
14
|
+
* Does not read from disk; callers pass in parsed config if needed.
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveHeadlessConfig(overrides?: HeadlessConfig | null): HeadlessConfig;
|
|
17
|
+
export { DEFAULT_RUN_AUDIT_OPTIONS } from './cli/flags.js';
|
|
18
|
+
export type { RunAuditOptions } from './audit/types.js';
|
|
19
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAClC;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,cAAc,CAOvF;AAED,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config and defaults for limps-headless (Agent 0).
|
|
3
|
+
* Merges with limps root config when used as extension; used as defaults for standalone CLI.
|
|
4
|
+
*/
|
|
5
|
+
import { DEFAULT_RUN_AUDIT_OPTIONS } from './cli/flags.js';
|
|
6
|
+
const DEFAULTS = {
|
|
7
|
+
audit: DEFAULT_RUN_AUDIT_OPTIONS,
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Resolve headless config: merge optional file/config with defaults.
|
|
11
|
+
* Does not read from disk; callers pass in parsed config if needed.
|
|
12
|
+
*/
|
|
13
|
+
export function resolveHeadlessConfig(overrides) {
|
|
14
|
+
if (!overrides)
|
|
15
|
+
return { ...DEFAULTS };
|
|
16
|
+
return {
|
|
17
|
+
...DEFAULTS,
|
|
18
|
+
...overrides,
|
|
19
|
+
audit: { ...DEFAULTS.audit, ...overrides.audit },
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export { DEFAULT_RUN_AUDIT_OPTIONS } from './cli/flags.js';
|
|
23
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAS3D,MAAM,QAAQ,GAAmB;IAC/B,KAAK,EAAE,yBAAyB;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiC;IACrE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;IACvC,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,SAAS;QACZ,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE;KACjD,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration hints for contract changes.
|
|
3
|
+
*/
|
|
4
|
+
import type { ChangeType } from './types.js';
|
|
5
|
+
interface HintContext {
|
|
6
|
+
target: string;
|
|
7
|
+
before?: string | null;
|
|
8
|
+
after?: string | null;
|
|
9
|
+
primitive?: string;
|
|
10
|
+
subComponent?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Generate a migration hint for a change.
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateHint(changeType: ChangeType, context: HintContext): string;
|
|
16
|
+
/**
|
|
17
|
+
* Generate a description for a change.
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateDescription(changeType: ChangeType, context: HintContext): string;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=hints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hints.d.ts","sourceRoot":"","sources":["../../src/differ/hints.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA2D7C,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAyBjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,GACnB,MAAM,CA+BR"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration hints for contract changes.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Template-based migration hints for different change types.
|
|
6
|
+
*/
|
|
7
|
+
const HINT_TEMPLATES = {
|
|
8
|
+
prop_removed: 'Remove usage of the "{target}" prop. {extra}',
|
|
9
|
+
prop_required: 'The "{target}" prop is now required. Add an explicit value for this prop.',
|
|
10
|
+
subcomponent_removed: 'The "{target}" sub-component has been removed. {extra}',
|
|
11
|
+
type_narrowed: 'The type for "{target}" has been narrowed from "{before}" to "{after}". Update values to match the new type.',
|
|
12
|
+
prop_deprecated: 'The "{target}" prop is deprecated. {extra}',
|
|
13
|
+
type_changed: 'The type for "{target}" has changed from "{before}" to "{after}". Review and update values accordingly.',
|
|
14
|
+
default_changed: 'The default value for "{target}" has changed from "{before}" to "{after}". Verify behavior is still as expected.',
|
|
15
|
+
prop_added: 'New prop "{target}" is available with type "{after}".',
|
|
16
|
+
subcomponent_added: 'New sub-component "{target}" is now available.',
|
|
17
|
+
type_widened: 'The type for "{target}" has been widened from "{before}" to "{after}". No changes required.',
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Special case hints for known prop changes.
|
|
21
|
+
*/
|
|
22
|
+
const KNOWN_PROP_HINTS = {
|
|
23
|
+
// Dialog-specific hints
|
|
24
|
+
allowPinchZoom: {
|
|
25
|
+
prop_removed: 'Use CSS touch-action property instead.',
|
|
26
|
+
},
|
|
27
|
+
// Popover/Tooltip positioning
|
|
28
|
+
side: {
|
|
29
|
+
type_narrowed: 'If using a removed side value, choose from the available options.',
|
|
30
|
+
},
|
|
31
|
+
align: {
|
|
32
|
+
type_narrowed: 'If using a removed align value, choose from the available options.',
|
|
33
|
+
},
|
|
34
|
+
// Common deprecations
|
|
35
|
+
asChild: {
|
|
36
|
+
prop_deprecated: 'Consider migrating to the new composition pattern if available.',
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Hints for removed sub-components.
|
|
41
|
+
*/
|
|
42
|
+
const SUBCOMPONENT_HINTS = {
|
|
43
|
+
Portal: 'Portaling behavior may have changed. Check the component documentation.',
|
|
44
|
+
Overlay: 'Consider using the Content component with overlay styling.',
|
|
45
|
+
Close: 'Use the onOpenChange callback to handle closing behavior.',
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Generate a migration hint for a change.
|
|
49
|
+
*/
|
|
50
|
+
export function generateHint(changeType, context) {
|
|
51
|
+
const template = HINT_TEMPLATES[changeType];
|
|
52
|
+
// Check for known prop-specific hints
|
|
53
|
+
const propHints = KNOWN_PROP_HINTS[context.target];
|
|
54
|
+
const specificHint = propHints?.[changeType];
|
|
55
|
+
// For sub-component changes, check subcomponent hints
|
|
56
|
+
let extra = '';
|
|
57
|
+
if ((changeType === 'subcomponent_removed' || changeType === 'prop_removed') &&
|
|
58
|
+
SUBCOMPONENT_HINTS[context.target]) {
|
|
59
|
+
extra = SUBCOMPONENT_HINTS[context.target];
|
|
60
|
+
}
|
|
61
|
+
else if (specificHint) {
|
|
62
|
+
extra = specificHint;
|
|
63
|
+
}
|
|
64
|
+
// Replace template variables
|
|
65
|
+
return template
|
|
66
|
+
.replace('{target}', context.target)
|
|
67
|
+
.replace('{before}', context.before ?? '')
|
|
68
|
+
.replace('{after}', context.after ?? '')
|
|
69
|
+
.replace('{extra}', extra)
|
|
70
|
+
.replace(/\s+$/, ''); // Trim trailing space if no extra
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generate a description for a change.
|
|
74
|
+
*/
|
|
75
|
+
export function generateDescription(changeType, context) {
|
|
76
|
+
const location = context.subComponent
|
|
77
|
+
? `${context.primitive}.${context.subComponent}`
|
|
78
|
+
: context.primitive || '';
|
|
79
|
+
const prefix = location ? `[${location}] ` : '';
|
|
80
|
+
switch (changeType) {
|
|
81
|
+
case 'prop_removed':
|
|
82
|
+
return `${prefix}Prop '${context.target}' was removed`;
|
|
83
|
+
case 'prop_required':
|
|
84
|
+
return `${prefix}Prop '${context.target}' is now required (was optional)`;
|
|
85
|
+
case 'subcomponent_removed':
|
|
86
|
+
return `${prefix}Sub-component '${context.target}' was removed`;
|
|
87
|
+
case 'type_narrowed':
|
|
88
|
+
return `${prefix}Type for '${context.target}' was narrowed from '${context.before}' to '${context.after}'`;
|
|
89
|
+
case 'prop_deprecated':
|
|
90
|
+
return `${prefix}Prop '${context.target}' is deprecated`;
|
|
91
|
+
case 'type_changed':
|
|
92
|
+
return `${prefix}Type for '${context.target}' changed from '${context.before}' to '${context.after}'`;
|
|
93
|
+
case 'default_changed':
|
|
94
|
+
return `${prefix}Default value for '${context.target}' changed from '${context.before}' to '${context.after}'`;
|
|
95
|
+
case 'prop_added':
|
|
96
|
+
return `${prefix}New prop '${context.target}' was added`;
|
|
97
|
+
case 'subcomponent_added':
|
|
98
|
+
return `${prefix}New sub-component '${context.target}' was added`;
|
|
99
|
+
case 'type_widened':
|
|
100
|
+
return `${prefix}Type for '${context.target}' was widened from '${context.before}' to '${context.after}'`;
|
|
101
|
+
default:
|
|
102
|
+
return `${prefix}Unknown change to '${context.target}'`;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=hints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hints.js","sourceRoot":"","sources":["../../src/differ/hints.ts"],"names":[],"mappings":"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"}
|