@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,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type alias resolution and intersection merging.
|
|
3
|
+
* Handles complex type patterns in .d.ts files.
|
|
4
|
+
*/
|
|
5
|
+
import { SyntaxKind } from 'ts-morph';
|
|
6
|
+
import { extractPropsFromInterface } from './props.js';
|
|
7
|
+
/**
|
|
8
|
+
* Props that should be filtered out as React internals.
|
|
9
|
+
* These are not useful for component analysis.
|
|
10
|
+
*/
|
|
11
|
+
const REACT_INTERNAL_PROPS = new Set([
|
|
12
|
+
'ref',
|
|
13
|
+
'key',
|
|
14
|
+
// Internal event handlers from DOM
|
|
15
|
+
'dangerouslySetInnerHTML',
|
|
16
|
+
]);
|
|
17
|
+
/**
|
|
18
|
+
* Resolve a type alias to its underlying properties.
|
|
19
|
+
* Handles intersections, references to interfaces, and inline object types.
|
|
20
|
+
*
|
|
21
|
+
* @returns Array of RawProp or null if type not found
|
|
22
|
+
*/
|
|
23
|
+
export function resolveTypeAlias(sourceFile, aliasName) {
|
|
24
|
+
// First try to find as a type alias
|
|
25
|
+
const typeAlias = sourceFile.getTypeAlias(aliasName);
|
|
26
|
+
if (typeAlias) {
|
|
27
|
+
return mergeIntersectionTypes(sourceFile, typeAlias);
|
|
28
|
+
}
|
|
29
|
+
// Fallback: try as interface
|
|
30
|
+
const iface = sourceFile.getInterface(aliasName);
|
|
31
|
+
if (iface) {
|
|
32
|
+
return extractPropsFromInterface(iface);
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Merge all parts of an intersection type into a single props array.
|
|
38
|
+
*/
|
|
39
|
+
export function mergeIntersectionTypes(_sourceFile, typeAlias) {
|
|
40
|
+
const props = [];
|
|
41
|
+
const seenNames = new Set();
|
|
42
|
+
const type = typeAlias.getType();
|
|
43
|
+
// Get all properties from the resolved type
|
|
44
|
+
// ts-morph's type.getProperties() automatically resolves intersections
|
|
45
|
+
for (const prop of type.getProperties()) {
|
|
46
|
+
const name = prop.getName();
|
|
47
|
+
if (seenNames.has(name))
|
|
48
|
+
continue;
|
|
49
|
+
seenNames.add(name);
|
|
50
|
+
const declarations = prop.getDeclarations();
|
|
51
|
+
const propDecl = declarations[0];
|
|
52
|
+
if (!propDecl)
|
|
53
|
+
continue;
|
|
54
|
+
const propType = prop.getTypeAtLocation(propDecl);
|
|
55
|
+
const typeText = simplifyTypeText(propType.getText());
|
|
56
|
+
// Determine if optional
|
|
57
|
+
let isOptional = false;
|
|
58
|
+
if (propDecl.getKindName() === 'PropertySignature') {
|
|
59
|
+
isOptional =
|
|
60
|
+
propDecl.hasQuestionToken?.() ??
|
|
61
|
+
false;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// Check if type includes undefined
|
|
65
|
+
isOptional = typeText.includes('undefined');
|
|
66
|
+
}
|
|
67
|
+
props.push({
|
|
68
|
+
name,
|
|
69
|
+
type: typeText,
|
|
70
|
+
required: !isOptional,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return props;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Resolve a type reference to its interface or type alias.
|
|
77
|
+
*/
|
|
78
|
+
export function resolveTypeReference(sourceFile, typeName) {
|
|
79
|
+
// Try interface first
|
|
80
|
+
const iface = sourceFile.getInterface(typeName);
|
|
81
|
+
if (iface)
|
|
82
|
+
return iface;
|
|
83
|
+
// Try type alias
|
|
84
|
+
const typeAlias = sourceFile.getTypeAlias(typeName);
|
|
85
|
+
if (typeAlias)
|
|
86
|
+
return typeAlias;
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Filter out React internal props.
|
|
91
|
+
* Keeps `children` as it's compositionally relevant.
|
|
92
|
+
*/
|
|
93
|
+
export function filterReactInternals(props) {
|
|
94
|
+
return props.filter((p) => !REACT_INTERNAL_PROPS.has(p.name));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Simplify complex type text for readability.
|
|
98
|
+
*/
|
|
99
|
+
function simplifyTypeText(text) {
|
|
100
|
+
return text
|
|
101
|
+
.replace(/React\.ReactNode/g, 'ReactNode')
|
|
102
|
+
.replace(/React\.ReactElement/g, 'ReactElement')
|
|
103
|
+
.replace(/React\.CSSProperties/g, 'CSSProperties')
|
|
104
|
+
.replace(/React\.HTMLAttributes<.*?>/g, 'HTMLAttributes')
|
|
105
|
+
.replace(/React\.ComponentPropsWithoutRef<.*?>/g, 'ComponentProps')
|
|
106
|
+
.replace(/React\.Ref<.*?>/g, 'Ref')
|
|
107
|
+
.replace(/React\.RefAttributes<.*?>/g, 'RefAttributes')
|
|
108
|
+
.replace(/import\(".*?"\)\./g, '');
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Extract property names from an intersection type node.
|
|
112
|
+
* Useful for debugging and understanding type structure.
|
|
113
|
+
*/
|
|
114
|
+
export function getIntersectionParts(typeAlias) {
|
|
115
|
+
const parts = [];
|
|
116
|
+
const typeNode = typeAlias.getTypeNode();
|
|
117
|
+
if (!typeNode)
|
|
118
|
+
return parts;
|
|
119
|
+
if (typeNode.getKind() === SyntaxKind.IntersectionType) {
|
|
120
|
+
for (const child of typeNode.forEachChildAsArray()) {
|
|
121
|
+
parts.push(child.getText());
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
parts.push(typeNode.getText());
|
|
126
|
+
}
|
|
127
|
+
return parts;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=type-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-resolver.js","sourceRoot":"","sources":["../../src/extractor/type-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type fetcher module for fetching Radix type definitions.
|
|
3
|
+
*/
|
|
4
|
+
export { resolveVersion, resolvePackageVersion, listPrimitives, primitiveToPackage, packageToPrimitive, fetchPackageInfo, KNOWN_PRIMITIVES, type KnownPrimitive, } from './npm-registry.js';
|
|
5
|
+
export { detectPackageSource, resolvePackage, fetchTypesWithFallback, type PackageSource, type ResolvedPackage, } from './unified-package.js';
|
|
6
|
+
export { fetchTypes, fetchFromUnifiedPackage, buildTypesUrl, fetchPackageFile, } from './unpkg.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetcher/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,aAAa,EACb,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type fetcher module for fetching Radix type definitions.
|
|
3
|
+
*/
|
|
4
|
+
export { resolveVersion, resolvePackageVersion, listPrimitives, primitiveToPackage, packageToPrimitive, fetchPackageInfo, KNOWN_PRIMITIVES, } from './npm-registry.js';
|
|
5
|
+
export { detectPackageSource, resolvePackage, fetchTypesWithFallback, } from './unified-package.js';
|
|
6
|
+
export { fetchTypes, fetchFromUnifiedPackage, buildTypesUrl, fetchPackageFile, } from './unpkg.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fetcher/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,sBAAsB,GAGvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,aAAa,EACb,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* npm registry client for fetching Radix package metadata.
|
|
3
|
+
*/
|
|
4
|
+
import type { PackageInfo, PrimitiveInfo } from '../types/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Known Radix UI primitives - used as fallback and for validation
|
|
7
|
+
*/
|
|
8
|
+
export declare const KNOWN_PRIMITIVES: readonly ["accordion", "alert-dialog", "aspect-ratio", "avatar", "checkbox", "collapsible", "context-menu", "dialog", "dropdown-menu", "form", "hover-card", "label", "menubar", "navigation-menu", "popover", "progress", "radio-group", "scroll-area", "select", "separator", "slider", "slot", "switch", "tabs", "toast", "toggle", "toggle-group", "toolbar", "tooltip", "visually-hidden"];
|
|
9
|
+
export type KnownPrimitive = (typeof KNOWN_PRIMITIVES)[number];
|
|
10
|
+
export declare function isVersionAtLeast(version: string, minVersion: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Convert primitive name to package name.
|
|
13
|
+
* @example "dialog" -> "@radix-ui/react-dialog"
|
|
14
|
+
*/
|
|
15
|
+
export declare function primitiveToPackage(primitive: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Extract primitive name from package name.
|
|
18
|
+
* @example "@radix-ui/react-dialog" -> "dialog"
|
|
19
|
+
*/
|
|
20
|
+
export declare function packageToPrimitive(packageName: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Fetch package info from npm registry.
|
|
23
|
+
*/
|
|
24
|
+
export declare function fetchPackageInfo(packageName: string): Promise<PackageInfo>;
|
|
25
|
+
/**
|
|
26
|
+
* Resolve a version hint for a specific package.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolvePackageVersion(packageName: string, versionHint?: string): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Resolve a version hint (e.g., "latest", "^1.0.0") to an actual version.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveVersion(primitive: string, versionHint?: string): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* List all available Radix primitives.
|
|
35
|
+
* Returns known primitives with their package names.
|
|
36
|
+
*/
|
|
37
|
+
export declare function listPrimitives(_version?: string): Promise<PrimitiveInfo[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Check if the unified "radix-ui" package is available and meets the minimum version.
|
|
40
|
+
*/
|
|
41
|
+
export declare function queryUnifiedPackage(minVersion?: string): Promise<{
|
|
42
|
+
available: boolean;
|
|
43
|
+
version?: string;
|
|
44
|
+
}>;
|
|
45
|
+
//# sourceMappingURL=npm-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-registry.d.ts","sourceRoot":"","sources":["../../src/fetcher/npm-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAWpE;;GAEG;AACH,eAAO,MAAM,gBAAgB,iYA+BnB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAiC/D,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAE7E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CA6BtB;AAkBD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAiB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAiB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC,CAU1B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAWnD"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* npm registry client for fetching Radix package metadata.
|
|
3
|
+
*/
|
|
4
|
+
const NPM_REGISTRY_URL = 'https://registry.npmjs.org';
|
|
5
|
+
const RADIX_SCOPE = '@radix-ui';
|
|
6
|
+
const UNIFIED_PACKAGE_NAME = 'radix-ui';
|
|
7
|
+
const UNIFIED_MIN_VERSION = '1.4.3';
|
|
8
|
+
// Cache for version resolution (short TTL in memory)
|
|
9
|
+
const versionCache = new Map();
|
|
10
|
+
const VERSION_CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
11
|
+
/**
|
|
12
|
+
* Known Radix UI primitives - used as fallback and for validation
|
|
13
|
+
*/
|
|
14
|
+
export const KNOWN_PRIMITIVES = [
|
|
15
|
+
'accordion',
|
|
16
|
+
'alert-dialog',
|
|
17
|
+
'aspect-ratio',
|
|
18
|
+
'avatar',
|
|
19
|
+
'checkbox',
|
|
20
|
+
'collapsible',
|
|
21
|
+
'context-menu',
|
|
22
|
+
'dialog',
|
|
23
|
+
'dropdown-menu',
|
|
24
|
+
'form',
|
|
25
|
+
'hover-card',
|
|
26
|
+
'label',
|
|
27
|
+
'menubar',
|
|
28
|
+
'navigation-menu',
|
|
29
|
+
'popover',
|
|
30
|
+
'progress',
|
|
31
|
+
'radio-group',
|
|
32
|
+
'scroll-area',
|
|
33
|
+
'select',
|
|
34
|
+
'separator',
|
|
35
|
+
'slider',
|
|
36
|
+
'slot',
|
|
37
|
+
'switch',
|
|
38
|
+
'tabs',
|
|
39
|
+
'toast',
|
|
40
|
+
'toggle',
|
|
41
|
+
'toggle-group',
|
|
42
|
+
'toolbar',
|
|
43
|
+
'tooltip',
|
|
44
|
+
'visually-hidden',
|
|
45
|
+
];
|
|
46
|
+
function parseVersion(version) {
|
|
47
|
+
const [core, prerelease] = version.split('-');
|
|
48
|
+
const [major, minor, patch] = core.split('.').map((part) => Number(part));
|
|
49
|
+
return {
|
|
50
|
+
major: Number.isFinite(major) ? major : 0,
|
|
51
|
+
minor: Number.isFinite(minor) ? minor : 0,
|
|
52
|
+
patch: Number.isFinite(patch) ? patch : 0,
|
|
53
|
+
prerelease,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function compareVersions(a, b) {
|
|
57
|
+
const left = parseVersion(a);
|
|
58
|
+
const right = parseVersion(b);
|
|
59
|
+
if (left.major !== right.major)
|
|
60
|
+
return left.major > right.major ? 1 : -1;
|
|
61
|
+
if (left.minor !== right.minor)
|
|
62
|
+
return left.minor > right.minor ? 1 : -1;
|
|
63
|
+
if (left.patch !== right.patch)
|
|
64
|
+
return left.patch > right.patch ? 1 : -1;
|
|
65
|
+
if (left.prerelease && !right.prerelease)
|
|
66
|
+
return -1;
|
|
67
|
+
if (!left.prerelease && right.prerelease)
|
|
68
|
+
return 1;
|
|
69
|
+
return 0;
|
|
70
|
+
}
|
|
71
|
+
export function isVersionAtLeast(version, minVersion) {
|
|
72
|
+
return compareVersions(version, minVersion) >= 0;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Convert primitive name to package name.
|
|
76
|
+
* @example "dialog" -> "@radix-ui/react-dialog"
|
|
77
|
+
*/
|
|
78
|
+
export function primitiveToPackage(primitive) {
|
|
79
|
+
const normalized = primitive.toLowerCase().replace(/\s+/g, '-');
|
|
80
|
+
return `${RADIX_SCOPE}/react-${normalized}`;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Extract primitive name from package name.
|
|
84
|
+
* @example "@radix-ui/react-dialog" -> "dialog"
|
|
85
|
+
*/
|
|
86
|
+
export function packageToPrimitive(packageName) {
|
|
87
|
+
const match = packageName.match(/@radix-ui\/react-(.+)/);
|
|
88
|
+
if (!match) {
|
|
89
|
+
throw new Error(`Invalid Radix package name: ${packageName}`);
|
|
90
|
+
}
|
|
91
|
+
return match[1];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Fetch package info from npm registry.
|
|
95
|
+
*/
|
|
96
|
+
export async function fetchPackageInfo(packageName) {
|
|
97
|
+
const url = `${NPM_REGISTRY_URL}/${encodeURIComponent(packageName)}`;
|
|
98
|
+
const response = await fetch(url, {
|
|
99
|
+
headers: {
|
|
100
|
+
Accept: 'application/json',
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
if (!response.ok) {
|
|
104
|
+
if (response.status === 404) {
|
|
105
|
+
throw new Error(`Package not found: ${packageName}`);
|
|
106
|
+
}
|
|
107
|
+
throw new Error(`Failed to fetch package info: ${response.status} ${response.statusText}`);
|
|
108
|
+
}
|
|
109
|
+
const data = (await response.json());
|
|
110
|
+
return {
|
|
111
|
+
name: data.name,
|
|
112
|
+
version: data['dist-tags'].latest,
|
|
113
|
+
distTags: data['dist-tags'],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function resolveVersionFromPackageInfo(packageInfo, versionHint) {
|
|
117
|
+
if (versionHint === 'latest' || versionHint === '*') {
|
|
118
|
+
return packageInfo.distTags.latest;
|
|
119
|
+
}
|
|
120
|
+
if (packageInfo.distTags[versionHint]) {
|
|
121
|
+
return packageInfo.distTags[versionHint];
|
|
122
|
+
}
|
|
123
|
+
if (versionHint.startsWith('^') || versionHint.startsWith('~')) {
|
|
124
|
+
return versionHint.slice(1);
|
|
125
|
+
}
|
|
126
|
+
return versionHint;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Resolve a version hint for a specific package.
|
|
130
|
+
*/
|
|
131
|
+
export async function resolvePackageVersion(packageName, versionHint = 'latest') {
|
|
132
|
+
const cacheKey = `${packageName}@${versionHint}`;
|
|
133
|
+
const cached = versionCache.get(cacheKey);
|
|
134
|
+
if (cached && Date.now() - cached.timestamp < VERSION_CACHE_TTL_MS) {
|
|
135
|
+
return cached.version;
|
|
136
|
+
}
|
|
137
|
+
const packageInfo = await fetchPackageInfo(packageName);
|
|
138
|
+
const version = resolveVersionFromPackageInfo(packageInfo, versionHint);
|
|
139
|
+
versionCache.set(cacheKey, { version, timestamp: Date.now() });
|
|
140
|
+
return version;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Resolve a version hint (e.g., "latest", "^1.0.0") to an actual version.
|
|
144
|
+
*/
|
|
145
|
+
export async function resolveVersion(primitive, versionHint = 'latest') {
|
|
146
|
+
const packageName = primitiveToPackage(primitive);
|
|
147
|
+
return resolvePackageVersion(packageName, versionHint);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* List all available Radix primitives.
|
|
151
|
+
* Returns known primitives with their package names.
|
|
152
|
+
*/
|
|
153
|
+
export async function listPrimitives(_version) {
|
|
154
|
+
// For now, return known primitives
|
|
155
|
+
// In a full implementation, we could query the radix-ui meta package
|
|
156
|
+
// or npm search API for all @radix-ui/react-* packages
|
|
157
|
+
return KNOWN_PRIMITIVES.map((name) => ({
|
|
158
|
+
name,
|
|
159
|
+
package: primitiveToPackage(name),
|
|
160
|
+
description: getPrimitiveDescription(name),
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if the unified "radix-ui" package is available and meets the minimum version.
|
|
165
|
+
*/
|
|
166
|
+
export async function queryUnifiedPackage(minVersion = UNIFIED_MIN_VERSION) {
|
|
167
|
+
try {
|
|
168
|
+
const packageInfo = await fetchPackageInfo(UNIFIED_PACKAGE_NAME);
|
|
169
|
+
const version = resolveVersionFromPackageInfo(packageInfo, 'latest');
|
|
170
|
+
return {
|
|
171
|
+
available: isVersionAtLeast(version, minVersion),
|
|
172
|
+
version,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
return { available: false };
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get a brief description for a primitive.
|
|
181
|
+
*/
|
|
182
|
+
function getPrimitiveDescription(primitive) {
|
|
183
|
+
const descriptions = {
|
|
184
|
+
accordion: 'A vertically stacked set of interactive headings',
|
|
185
|
+
'alert-dialog': 'A modal dialog that interrupts the user',
|
|
186
|
+
'aspect-ratio': 'Displays content within a desired ratio',
|
|
187
|
+
avatar: 'An image element with a fallback',
|
|
188
|
+
checkbox: 'A control that allows the user to toggle between states',
|
|
189
|
+
collapsible: 'An interactive component which expands/collapses content',
|
|
190
|
+
'context-menu': 'A menu displayed on right-click',
|
|
191
|
+
dialog: 'A modal dialog overlay',
|
|
192
|
+
'dropdown-menu': 'A menu displayed from a trigger button',
|
|
193
|
+
form: 'Form primitives with built-in validation',
|
|
194
|
+
'hover-card': 'A popup that appears on hover',
|
|
195
|
+
label: 'Renders an accessible label for form controls',
|
|
196
|
+
menubar: 'A visually persistent menu common in desktop apps',
|
|
197
|
+
'navigation-menu': 'A collection of links for site navigation',
|
|
198
|
+
popover: 'A popup that appears from a trigger',
|
|
199
|
+
progress: 'Displays an indicator showing task completion',
|
|
200
|
+
'radio-group': 'A set of checkable buttons—only one can be checked',
|
|
201
|
+
'scroll-area': 'Augments native scroll with custom scrollbars',
|
|
202
|
+
select: 'A dropdown list of options',
|
|
203
|
+
separator: 'Visually separates content',
|
|
204
|
+
slider: 'An input for selecting a value from a range',
|
|
205
|
+
slot: 'Merges its props onto its immediate child',
|
|
206
|
+
switch: 'A control that toggles between on and off',
|
|
207
|
+
tabs: 'A set of layered content panels',
|
|
208
|
+
toast: 'A succinct message displayed temporarily',
|
|
209
|
+
toggle: 'A two-state button',
|
|
210
|
+
'toggle-group': 'A set of two-state buttons',
|
|
211
|
+
toolbar: 'A container for grouping a set of controls',
|
|
212
|
+
tooltip: 'A popup that displays information on hover',
|
|
213
|
+
'visually-hidden': 'Hides content visually but keeps it accessible',
|
|
214
|
+
};
|
|
215
|
+
return descriptions[primitive] || '';
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=npm-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-registry.js","sourceRoot":"","sources":["../../src/fetcher/npm-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Radix UI package support.
|
|
3
|
+
*/
|
|
4
|
+
export type PackageSource = 'individual' | 'unified';
|
|
5
|
+
export interface ResolvedPackage {
|
|
6
|
+
source: PackageSource;
|
|
7
|
+
packageName: string;
|
|
8
|
+
primitive: string;
|
|
9
|
+
version: string;
|
|
10
|
+
typesPath: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Detect if the unified package is available.
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectPackageSource(_primitive: string): Promise<PackageSource>;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve package metadata for a primitive and version hint.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolvePackage(primitive: string, versionHint: string): Promise<ResolvedPackage>;
|
|
20
|
+
/**
|
|
21
|
+
* Fetch type definitions with unified-package fallback handling.
|
|
22
|
+
*/
|
|
23
|
+
export declare function fetchTypesWithFallback(primitive: string, versionHint: string): Promise<{
|
|
24
|
+
resolved: ResolvedPackage;
|
|
25
|
+
content: string;
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=unified-package.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-package.d.ts","sourceRoot":"","sources":["../../src/fetcher/unified-package.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAgDD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAGxB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAkC1B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCzD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Radix UI package support.
|
|
3
|
+
*/
|
|
4
|
+
import { isVersionAtLeast, primitiveToPackage, queryUnifiedPackage, resolvePackageVersion, } from './npm-registry.js';
|
|
5
|
+
import { fetchFromUnifiedPackage, fetchTypes } from './unpkg.js';
|
|
6
|
+
const UNIFIED_PACKAGE_NAME = 'radix-ui';
|
|
7
|
+
const UNIFIED_MIN_VERSION = '1.4.3';
|
|
8
|
+
const SOURCE_CACHE_TTL_MS = 60 * 60 * 1000;
|
|
9
|
+
const unifiedTypesPathOverrides = {};
|
|
10
|
+
let unifiedAvailabilityCache = null;
|
|
11
|
+
function normalizePrimitive(primitive) {
|
|
12
|
+
return primitive.toLowerCase().replace(/\s+/g, '-');
|
|
13
|
+
}
|
|
14
|
+
function getUnifiedTypesPath(primitive) {
|
|
15
|
+
const normalized = normalizePrimitive(primitive);
|
|
16
|
+
return (unifiedTypesPathOverrides[normalized] ??
|
|
17
|
+
`dist/${normalized}.d.ts`);
|
|
18
|
+
}
|
|
19
|
+
async function getUnifiedAvailability() {
|
|
20
|
+
if (unifiedAvailabilityCache &&
|
|
21
|
+
Date.now() - unifiedAvailabilityCache.timestamp < SOURCE_CACHE_TTL_MS) {
|
|
22
|
+
return {
|
|
23
|
+
available: unifiedAvailabilityCache.available,
|
|
24
|
+
version: unifiedAvailabilityCache.version,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const result = await queryUnifiedPackage(UNIFIED_MIN_VERSION);
|
|
28
|
+
unifiedAvailabilityCache = {
|
|
29
|
+
available: result.available,
|
|
30
|
+
version: result.version,
|
|
31
|
+
timestamp: Date.now(),
|
|
32
|
+
};
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Detect if the unified package is available.
|
|
37
|
+
*/
|
|
38
|
+
export async function detectPackageSource(_primitive) {
|
|
39
|
+
const unified = await getUnifiedAvailability();
|
|
40
|
+
return unified.available ? 'unified' : 'individual';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Resolve package metadata for a primitive and version hint.
|
|
44
|
+
*/
|
|
45
|
+
export async function resolvePackage(primitive, versionHint) {
|
|
46
|
+
const normalized = normalizePrimitive(primitive);
|
|
47
|
+
const unified = await getUnifiedAvailability();
|
|
48
|
+
if (unified.available) {
|
|
49
|
+
const unifiedVersion = await resolvePackageVersion(UNIFIED_PACKAGE_NAME, versionHint);
|
|
50
|
+
if (isVersionAtLeast(unifiedVersion, UNIFIED_MIN_VERSION)) {
|
|
51
|
+
return {
|
|
52
|
+
source: 'unified',
|
|
53
|
+
packageName: UNIFIED_PACKAGE_NAME,
|
|
54
|
+
primitive: normalized,
|
|
55
|
+
version: unifiedVersion,
|
|
56
|
+
typesPath: getUnifiedTypesPath(normalized),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const individualPackage = primitiveToPackage(normalized);
|
|
61
|
+
const individualVersion = await resolvePackageVersion(individualPackage, versionHint);
|
|
62
|
+
return {
|
|
63
|
+
source: 'individual',
|
|
64
|
+
packageName: individualPackage,
|
|
65
|
+
primitive: normalized,
|
|
66
|
+
version: individualVersion,
|
|
67
|
+
typesPath: 'dist/index.d.ts',
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Fetch type definitions with unified-package fallback handling.
|
|
72
|
+
*/
|
|
73
|
+
export async function fetchTypesWithFallback(primitive, versionHint) {
|
|
74
|
+
const normalized = normalizePrimitive(primitive);
|
|
75
|
+
let resolved = await resolvePackage(normalized, versionHint);
|
|
76
|
+
try {
|
|
77
|
+
const content = resolved.source === 'unified'
|
|
78
|
+
? await fetchFromUnifiedPackage(resolved.primitive, resolved.version, resolved.typesPath)
|
|
79
|
+
: await fetchTypes(resolved.primitive, resolved.version);
|
|
80
|
+
return { resolved, content };
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (resolved.source !== 'unified') {
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
const fallbackPackage = primitiveToPackage(normalized);
|
|
87
|
+
const fallbackVersion = await resolvePackageVersion(fallbackPackage, versionHint);
|
|
88
|
+
const content = await fetchTypes(normalized, fallbackVersion);
|
|
89
|
+
resolved = {
|
|
90
|
+
source: 'individual',
|
|
91
|
+
packageName: fallbackPackage,
|
|
92
|
+
primitive: normalized,
|
|
93
|
+
version: fallbackVersion,
|
|
94
|
+
typesPath: 'dist/index.d.ts',
|
|
95
|
+
};
|
|
96
|
+
return { resolved, content };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=unified-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-package.js","sourceRoot":"","sources":["../../src/fetcher/unified-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* unpkg CDN client for fetching type definitions.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Build the URL for a package's type definitions on unpkg.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildTypesUrl(packageName: string, version: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Fetch type definitions for a Radix primitive from unpkg.
|
|
10
|
+
*/
|
|
11
|
+
export declare function fetchTypes(primitive: string, version: string): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Fetch type definitions from the unified radix-ui package.
|
|
14
|
+
*/
|
|
15
|
+
export declare function fetchFromUnifiedPackage(primitive: string, version: string, typesPath?: string): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Fetch raw file content from a package on unpkg.
|
|
18
|
+
*/
|
|
19
|
+
export declare function fetchPackageFile(packageName: string, version: string, filePath: string): Promise<string>;
|
|
20
|
+
//# sourceMappingURL=unpkg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unpkg.d.ts","sourceRoot":"","sources":["../../src/fetcher/unpkg.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmCH;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAYjB"}
|