@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,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic prop classifier.
|
|
3
|
+
* Classifies props into categories: state, event, config, composition.
|
|
4
|
+
*/
|
|
5
|
+
import type { PropDefinition, RawProp } from '../types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Classify a raw prop into a full PropDefinition.
|
|
8
|
+
*/
|
|
9
|
+
export declare function classifyProp(raw: RawProp): PropDefinition;
|
|
10
|
+
/**
|
|
11
|
+
* Check if a prop name indicates state control.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isStateControl(name: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a prop name indicates an event handler.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isEventHandler(name: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Check if a prop name indicates composition.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isComposition(name: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Check if a prop name indicates configuration.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isConfiguration(name: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Get the category of a prop.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getPropCategory(name: string): 'state' | 'event' | 'composition' | 'config' | 'other';
|
|
30
|
+
//# sourceMappingURL=classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src/extractor/classifier.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAkGjE;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAQzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GACX,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAMxD"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic prop classifier.
|
|
3
|
+
* Classifies props into categories: state, event, config, composition.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* State control props - control component state
|
|
7
|
+
*/
|
|
8
|
+
const STATE_PROPS = new Set([
|
|
9
|
+
'open',
|
|
10
|
+
'defaultOpen',
|
|
11
|
+
'value',
|
|
12
|
+
'defaultValue',
|
|
13
|
+
'checked',
|
|
14
|
+
'defaultChecked',
|
|
15
|
+
'pressed',
|
|
16
|
+
'defaultPressed',
|
|
17
|
+
'selected',
|
|
18
|
+
'defaultSelected',
|
|
19
|
+
'active',
|
|
20
|
+
'expanded',
|
|
21
|
+
'disabled',
|
|
22
|
+
]);
|
|
23
|
+
/**
|
|
24
|
+
* State prop patterns
|
|
25
|
+
*/
|
|
26
|
+
const STATE_PATTERNS = [/^default[A-Z]/, /^is[A-Z]/];
|
|
27
|
+
/**
|
|
28
|
+
* Event handler pattern - onXxx
|
|
29
|
+
*/
|
|
30
|
+
const EVENT_PATTERN = /^on[A-Z]/;
|
|
31
|
+
/**
|
|
32
|
+
* Composition props - affect component composition
|
|
33
|
+
*/
|
|
34
|
+
const COMPOSITION_PROPS = new Set([
|
|
35
|
+
'asChild',
|
|
36
|
+
'children',
|
|
37
|
+
'as',
|
|
38
|
+
'render',
|
|
39
|
+
'slot',
|
|
40
|
+
]);
|
|
41
|
+
/**
|
|
42
|
+
* Configuration props - affect behavior/appearance
|
|
43
|
+
*/
|
|
44
|
+
const CONFIG_PROPS = new Set([
|
|
45
|
+
// Layout/positioning
|
|
46
|
+
'modal',
|
|
47
|
+
'side',
|
|
48
|
+
'sideOffset',
|
|
49
|
+
'align',
|
|
50
|
+
'alignOffset',
|
|
51
|
+
'orientation',
|
|
52
|
+
'dir',
|
|
53
|
+
'loop',
|
|
54
|
+
'sticky',
|
|
55
|
+
'hideWhenDetached',
|
|
56
|
+
'avoidCollisions',
|
|
57
|
+
'collisionBoundary',
|
|
58
|
+
'collisionPadding',
|
|
59
|
+
// Behavior
|
|
60
|
+
'closeOnEscape',
|
|
61
|
+
'closeOnOutsideClick',
|
|
62
|
+
'closeOnInteractOutside',
|
|
63
|
+
'trapFocus',
|
|
64
|
+
'restoreFocus',
|
|
65
|
+
'preventScroll',
|
|
66
|
+
'disableOutsidePointerEvents',
|
|
67
|
+
'forceMount',
|
|
68
|
+
'delayDuration',
|
|
69
|
+
'skipDelayDuration',
|
|
70
|
+
'disableHoverableContent',
|
|
71
|
+
// Accessibility
|
|
72
|
+
'ariaLabel',
|
|
73
|
+
'aria-label',
|
|
74
|
+
'ariaLabelledby',
|
|
75
|
+
'aria-labelledby',
|
|
76
|
+
'ariaDescribedby',
|
|
77
|
+
'aria-describedby',
|
|
78
|
+
// Styling
|
|
79
|
+
'className',
|
|
80
|
+
'style',
|
|
81
|
+
// Other common configs
|
|
82
|
+
'id',
|
|
83
|
+
'name',
|
|
84
|
+
'required',
|
|
85
|
+
'placeholder',
|
|
86
|
+
'min',
|
|
87
|
+
'max',
|
|
88
|
+
'step',
|
|
89
|
+
'type',
|
|
90
|
+
'form',
|
|
91
|
+
]);
|
|
92
|
+
/**
|
|
93
|
+
* Classify a raw prop into a full PropDefinition.
|
|
94
|
+
*/
|
|
95
|
+
export function classifyProp(raw) {
|
|
96
|
+
return {
|
|
97
|
+
...raw,
|
|
98
|
+
isStateControl: isStateControl(raw.name),
|
|
99
|
+
isEventHandler: isEventHandler(raw.name),
|
|
100
|
+
isConfiguration: isConfiguration(raw.name),
|
|
101
|
+
isComposition: isComposition(raw.name),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Check if a prop name indicates state control.
|
|
106
|
+
*/
|
|
107
|
+
export function isStateControl(name) {
|
|
108
|
+
if (STATE_PROPS.has(name)) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
for (const pattern of STATE_PATTERNS) {
|
|
112
|
+
if (pattern.test(name)) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Check if a prop name indicates an event handler.
|
|
120
|
+
*/
|
|
121
|
+
export function isEventHandler(name) {
|
|
122
|
+
return EVENT_PATTERN.test(name);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Check if a prop name indicates composition.
|
|
126
|
+
*/
|
|
127
|
+
export function isComposition(name) {
|
|
128
|
+
return COMPOSITION_PROPS.has(name);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if a prop name indicates configuration.
|
|
132
|
+
*/
|
|
133
|
+
export function isConfiguration(name) {
|
|
134
|
+
return CONFIG_PROPS.has(name);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get the category of a prop.
|
|
138
|
+
*/
|
|
139
|
+
export function getPropCategory(name) {
|
|
140
|
+
if (isStateControl(name))
|
|
141
|
+
return 'state';
|
|
142
|
+
if (isEventHandler(name))
|
|
143
|
+
return 'event';
|
|
144
|
+
if (isComposition(name))
|
|
145
|
+
return 'composition';
|
|
146
|
+
if (isConfiguration(name))
|
|
147
|
+
return 'config';
|
|
148
|
+
return 'other';
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=classifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../src/extractor/classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ForwardRefExoticComponent extraction for complex .d.ts files.
|
|
3
|
+
* Handles patterns like: React.ForwardRefExoticComponent<Props & React.RefAttributes<Element>>
|
|
4
|
+
*/
|
|
5
|
+
import type { SourceFile, VariableDeclaration } from 'ts-morph';
|
|
6
|
+
import type { RawProp } from '../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Result of finding a ForwardRef declaration.
|
|
9
|
+
*/
|
|
10
|
+
export interface ForwardRefDeclaration {
|
|
11
|
+
name: string;
|
|
12
|
+
declaration: VariableDeclaration;
|
|
13
|
+
propsTypeName: string | null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Find all ForwardRefExoticComponent variable declarations in a source file.
|
|
17
|
+
*/
|
|
18
|
+
export declare function findForwardRefDeclarations(sourceFile: SourceFile): ForwardRefDeclaration[];
|
|
19
|
+
/**
|
|
20
|
+
* Extract props from a ForwardRef declaration by resolving its type parameter.
|
|
21
|
+
*/
|
|
22
|
+
export declare function extractPropsFromForwardRef(sourceFile: SourceFile, decl: ForwardRefDeclaration): RawProp[] | null;
|
|
23
|
+
/**
|
|
24
|
+
* Get the sub-component suffix from a component name.
|
|
25
|
+
* @example "DialogContent" with primitive "Dialog" -> "Content"
|
|
26
|
+
*/
|
|
27
|
+
export declare function getSubComponentSuffix(componentName: string, primitiveName: string): string | null;
|
|
28
|
+
//# sourceMappingURL=forward-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forward-ref.d.ts","sourceRoot":"","sources":["../../src/extractor/forward-ref.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EAEpB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,mBAAmB,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,UAAU,GACrB,qBAAqB,EAAE,CAuBzB;AAqBD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,EAAE,GAAG,IAAI,CAkBlB;AAuED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAUf"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ForwardRefExoticComponent extraction for complex .d.ts files.
|
|
3
|
+
* Handles patterns like: React.ForwardRefExoticComponent<Props & React.RefAttributes<Element>>
|
|
4
|
+
*/
|
|
5
|
+
import { extractPropsFromInterface } from './props.js';
|
|
6
|
+
/**
|
|
7
|
+
* Find all ForwardRefExoticComponent variable declarations in a source file.
|
|
8
|
+
*/
|
|
9
|
+
export function findForwardRefDeclarations(sourceFile) {
|
|
10
|
+
const results = [];
|
|
11
|
+
for (const statement of sourceFile.getVariableStatements()) {
|
|
12
|
+
for (const decl of statement.getDeclarations()) {
|
|
13
|
+
const typeNode = decl.getTypeNode();
|
|
14
|
+
if (!typeNode)
|
|
15
|
+
continue;
|
|
16
|
+
const typeText = typeNode.getText();
|
|
17
|
+
if (typeText.includes('ForwardRefExoticComponent')) {
|
|
18
|
+
const name = decl.getName();
|
|
19
|
+
const propsTypeName = extractPropsTypeFromForwardRef(typeNode);
|
|
20
|
+
results.push({
|
|
21
|
+
name,
|
|
22
|
+
declaration: decl,
|
|
23
|
+
propsTypeName,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return results;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extract the props type name from a ForwardRefExoticComponent type.
|
|
32
|
+
* Handles: ForwardRefExoticComponent<DialogRootProps & React.RefAttributes<...>>
|
|
33
|
+
*/
|
|
34
|
+
function extractPropsTypeFromForwardRef(typeNode) {
|
|
35
|
+
const typeText = typeNode.getText();
|
|
36
|
+
// Match pattern: ForwardRefExoticComponent<TypeName & ...>
|
|
37
|
+
// or ForwardRefExoticComponent<TypeName>
|
|
38
|
+
const match = typeText.match(/ForwardRefExoticComponent<\s*(\w+)(?:\s*&|>)/);
|
|
39
|
+
if (match) {
|
|
40
|
+
return match[1];
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Extract props from a ForwardRef declaration by resolving its type parameter.
|
|
46
|
+
*/
|
|
47
|
+
export function extractPropsFromForwardRef(sourceFile, decl) {
|
|
48
|
+
const { propsTypeName, declaration } = decl;
|
|
49
|
+
// Try to find the props interface directly
|
|
50
|
+
if (propsTypeName) {
|
|
51
|
+
const propsInterface = sourceFile.getInterface(propsTypeName);
|
|
52
|
+
if (propsInterface) {
|
|
53
|
+
const props = extractPropsFromInterface(propsInterface);
|
|
54
|
+
return filterRefAttributes(props);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Fallback: try to extract from the type directly using ts-morph's type system
|
|
58
|
+
const typeNode = declaration.getTypeNode();
|
|
59
|
+
if (!typeNode)
|
|
60
|
+
return null;
|
|
61
|
+
const props = extractPropsFromTypeNode(sourceFile, typeNode);
|
|
62
|
+
return filterRefAttributes(props);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Extract props from a TypeNode (for inline type definitions).
|
|
66
|
+
*/
|
|
67
|
+
function extractPropsFromTypeNode(_sourceFile, typeNode) {
|
|
68
|
+
const props = [];
|
|
69
|
+
// Get the type from the type checker
|
|
70
|
+
const type = typeNode.getType();
|
|
71
|
+
// For ForwardRefExoticComponent, we need the first type argument
|
|
72
|
+
const typeArgs = type.getTypeArguments();
|
|
73
|
+
if (typeArgs.length === 0)
|
|
74
|
+
return props;
|
|
75
|
+
const propsType = typeArgs[0];
|
|
76
|
+
// Get all properties from the type (resolves intersections)
|
|
77
|
+
for (const prop of propsType.getProperties()) {
|
|
78
|
+
const name = prop.getName();
|
|
79
|
+
const declarations = prop.getDeclarations();
|
|
80
|
+
const propDecl = declarations[0];
|
|
81
|
+
if (!propDecl)
|
|
82
|
+
continue;
|
|
83
|
+
// Get the type from the property
|
|
84
|
+
const propType = prop.getTypeAtLocation(propDecl);
|
|
85
|
+
const typeText = propType.getText();
|
|
86
|
+
// Check if optional (has question token or is union with undefined)
|
|
87
|
+
const isOptional = propDecl.getKindName() === 'PropertySignature'
|
|
88
|
+
? propDecl.hasQuestionToken?.() ?? false
|
|
89
|
+
: typeText.includes('undefined');
|
|
90
|
+
props.push({
|
|
91
|
+
name,
|
|
92
|
+
type: simplifyTypeText(typeText),
|
|
93
|
+
required: !isOptional,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return props;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Filter out React.RefAttributes props (ref).
|
|
100
|
+
*/
|
|
101
|
+
function filterRefAttributes(props) {
|
|
102
|
+
const refAttributeProps = ['ref'];
|
|
103
|
+
return props.filter((p) => !refAttributeProps.includes(p.name));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Simplify complex type text for readability.
|
|
107
|
+
*/
|
|
108
|
+
function simplifyTypeText(text) {
|
|
109
|
+
return text
|
|
110
|
+
.replace(/React\.ReactNode/g, 'ReactNode')
|
|
111
|
+
.replace(/React\.ReactElement/g, 'ReactElement')
|
|
112
|
+
.replace(/React\.CSSProperties/g, 'CSSProperties')
|
|
113
|
+
.replace(/React\.HTMLAttributes<.*?>/g, 'HTMLAttributes')
|
|
114
|
+
.replace(/React\.ComponentPropsWithoutRef<.*?>/g, 'ComponentProps')
|
|
115
|
+
.replace(/React\.Ref<.*?>/g, 'Ref')
|
|
116
|
+
.replace(/React\.RefAttributes<.*?>/g, 'RefAttributes')
|
|
117
|
+
.replace(/import\(".*?"\)\./g, '');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get the sub-component suffix from a component name.
|
|
121
|
+
* @example "DialogContent" with primitive "Dialog" -> "Content"
|
|
122
|
+
*/
|
|
123
|
+
export function getSubComponentSuffix(componentName, primitiveName) {
|
|
124
|
+
if (!componentName.startsWith(primitiveName))
|
|
125
|
+
return null;
|
|
126
|
+
const suffix = componentName.slice(primitiveName.length);
|
|
127
|
+
if (!suffix)
|
|
128
|
+
return null;
|
|
129
|
+
// Ensure suffix starts with uppercase (valid sub-component)
|
|
130
|
+
if (!/^[A-Z]/.test(suffix))
|
|
131
|
+
return null;
|
|
132
|
+
return suffix;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=forward-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forward-ref.js","sourceRoot":"","sources":["../../src/extractor/forward-ref.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type extractor module for parsing Radix type definitions.
|
|
3
|
+
*/
|
|
4
|
+
import type { ExtractedPrimitive, PropDefinition, RawProp } from '../types/index.js';
|
|
5
|
+
export { createProject, createSourceFile, parseTypes } from './project.js';
|
|
6
|
+
export { findInterfaces, findPropsInterfaces, extractSubComponents, extractSubComponentsEnhanced, findExports, detectContextUsage, extractContextShape, extractPrimitiveFromSource, } from './interface.js';
|
|
7
|
+
export { findForwardRefDeclarations, extractPropsFromForwardRef, getSubComponentSuffix, } from './forward-ref.js';
|
|
8
|
+
export { resolveTypeAlias, mergeIntersectionTypes, filterReactInternals, resolveTypeReference, } from './type-resolver.js';
|
|
9
|
+
export { extractPropsFromInterface, extractProp, isPropsInterface, componentNameFromProps, } from './props.js';
|
|
10
|
+
export { extractJsDoc, extractDefaultFromComment } from './jsdoc.js';
|
|
11
|
+
export { classifyProp, isStateControl, isEventHandler, isComposition, isConfiguration, getPropCategory, } from './classifier.js';
|
|
12
|
+
/**
|
|
13
|
+
* Extract primitive information from type content.
|
|
14
|
+
*
|
|
15
|
+
* @param typeContent - The .d.ts file content
|
|
16
|
+
* @param primitiveName - The primitive name (e.g., "Dialog")
|
|
17
|
+
* @param version - The package version
|
|
18
|
+
* @returns ExtractedPrimitive with full type information
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractPrimitive(typeContent: string, primitiveName: string, version?: string, packageName?: string): ExtractedPrimitive;
|
|
21
|
+
/**
|
|
22
|
+
* Classify an array of raw props into full PropDefinitions.
|
|
23
|
+
*/
|
|
24
|
+
export declare function classifyProps(rawProps: RawProp[]): PropDefinition[];
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extractor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAMrF,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,MAAkB,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,CAWpB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAcnE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type extractor module for parsing Radix type definitions.
|
|
3
|
+
*/
|
|
4
|
+
import { parseTypes } from './project.js';
|
|
5
|
+
import { extractPrimitiveFromSource } from './interface.js';
|
|
6
|
+
import { primitiveToPackage } from '../fetcher/npm-registry.js';
|
|
7
|
+
// Re-export utilities
|
|
8
|
+
export { createProject, createSourceFile, parseTypes } from './project.js';
|
|
9
|
+
export { findInterfaces, findPropsInterfaces, extractSubComponents, extractSubComponentsEnhanced, findExports, detectContextUsage, extractContextShape, extractPrimitiveFromSource, } from './interface.js';
|
|
10
|
+
export { findForwardRefDeclarations, extractPropsFromForwardRef, getSubComponentSuffix, } from './forward-ref.js';
|
|
11
|
+
export { resolveTypeAlias, mergeIntersectionTypes, filterReactInternals, resolveTypeReference, } from './type-resolver.js';
|
|
12
|
+
export { extractPropsFromInterface, extractProp, isPropsInterface, componentNameFromProps, } from './props.js';
|
|
13
|
+
export { extractJsDoc, extractDefaultFromComment } from './jsdoc.js';
|
|
14
|
+
export { classifyProp, isStateControl, isEventHandler, isComposition, isConfiguration, getPropCategory, } from './classifier.js';
|
|
15
|
+
/**
|
|
16
|
+
* Extract primitive information from type content.
|
|
17
|
+
*
|
|
18
|
+
* @param typeContent - The .d.ts file content
|
|
19
|
+
* @param primitiveName - The primitive name (e.g., "Dialog")
|
|
20
|
+
* @param version - The package version
|
|
21
|
+
* @returns ExtractedPrimitive with full type information
|
|
22
|
+
*/
|
|
23
|
+
export function extractPrimitive(typeContent, primitiveName, version = 'unknown', packageName) {
|
|
24
|
+
const sourceFile = parseTypes(typeContent);
|
|
25
|
+
const resolvedPackageName = packageName ?? primitiveToPackage(primitiveName.toLowerCase());
|
|
26
|
+
return extractPrimitiveFromSource(sourceFile, primitiveName, resolvedPackageName, version);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Classify an array of raw props into full PropDefinitions.
|
|
30
|
+
*/
|
|
31
|
+
export function classifyProps(rawProps) {
|
|
32
|
+
return rawProps.map((raw) => ({
|
|
33
|
+
...raw,
|
|
34
|
+
isStateControl: raw.name === 'open' ||
|
|
35
|
+
raw.name === 'value' ||
|
|
36
|
+
raw.name === 'checked' ||
|
|
37
|
+
raw.name.startsWith('default'),
|
|
38
|
+
isEventHandler: /^on[A-Z]/.test(raw.name),
|
|
39
|
+
isConfiguration: ['modal', 'orientation', 'side', 'align'].includes(raw.name),
|
|
40
|
+
isComposition: raw.name === 'asChild' || raw.name === 'children',
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extractor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,EACnB,aAAqB,EACrB,UAAkB,SAAS,EAC3B,WAAoB;IAEpB,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,mBAAmB,GACvB,WAAW,IAAI,kBAAkB,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAEjE,OAAO,0BAA0B,CAC/B,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,OAAO,CACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAmB;IAC/C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5B,GAAG,GAAG;QACN,cAAc,EACZ,GAAG,CAAC,IAAI,KAAK,MAAM;YACnB,GAAG,CAAC,IAAI,KAAK,OAAO;YACpB,GAAG,CAAC,IAAI,KAAK,SAAS;YACtB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAChC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACzC,eAAe,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CACjE,GAAG,CAAC,IAAI,CACT;QACD,aAAa,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;KACjE,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface extraction from TypeScript source files.
|
|
3
|
+
*/
|
|
4
|
+
import type { SourceFile, InterfaceDeclaration } from 'ts-morph';
|
|
5
|
+
import type { SubComponentDefinition, ExtractedPrimitive, PropDefinition } from '../types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Find all interfaces in a source file.
|
|
8
|
+
*/
|
|
9
|
+
export declare function findInterfaces(sourceFile: SourceFile): InterfaceDeclaration[];
|
|
10
|
+
/**
|
|
11
|
+
* Find props interfaces (names ending with "Props").
|
|
12
|
+
*/
|
|
13
|
+
export declare function findPropsInterfaces(sourceFile: SourceFile): InterfaceDeclaration[];
|
|
14
|
+
/**
|
|
15
|
+
* Extract sub-components from props interfaces.
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractSubComponents(sourceFile: SourceFile, primitiveName: string): SubComponentDefinition[];
|
|
18
|
+
/**
|
|
19
|
+
* Enhanced sub-component extraction that also handles ForwardRefExoticComponent.
|
|
20
|
+
* This function combines interface-based extraction with ForwardRef detection.
|
|
21
|
+
*/
|
|
22
|
+
export declare function extractSubComponentsEnhanced(sourceFile: SourceFile, primitiveName: string): SubComponentDefinition[];
|
|
23
|
+
/**
|
|
24
|
+
* Find exported names from a source file.
|
|
25
|
+
*/
|
|
26
|
+
export declare function findExports(sourceFile: SourceFile): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Check if the primitive uses React Context.
|
|
29
|
+
*/
|
|
30
|
+
export declare function detectContextUsage(sourceFile: SourceFile): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Extract context shape if present.
|
|
33
|
+
*/
|
|
34
|
+
export declare function extractContextShape(sourceFile: SourceFile, primitiveName: string): PropDefinition[] | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Extract a complete primitive from a source file.
|
|
37
|
+
* Uses enhanced extraction with ForwardRef support for real .d.ts files.
|
|
38
|
+
*/
|
|
39
|
+
export declare function extractPrimitiveFromSource(sourceFile: SourceFile, primitiveName: string, packageName: string, version: string): ExtractedPrimitive;
|
|
40
|
+
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/extractor/interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACf,MAAM,mBAAmB,CAAC;AA+B3B;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,oBAAoB,EAAE,CAE7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,GACrB,oBAAoB,EAAE,CAExB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,MAAM,GACpB,sBAAsB,EAAE,CAkC1B;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,MAAM,GACpB,sBAAsB,EAAE,CA4D1B;AAqCD;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE,CA6B5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAOlE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,MAAM,GACpB,cAAc,EAAE,GAAG,SAAS,CAY9B;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,kBAAkB,CAwBpB"}
|