@sudosandwich/limps-radix 0.1.1

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.
Files changed (103) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +255 -0
  3. package/dist/cache/index.d.ts +110 -0
  4. package/dist/cache/index.d.ts.map +1 -0
  5. package/dist/cache/index.js +176 -0
  6. package/dist/cache/index.js.map +1 -0
  7. package/dist/cache/storage.d.ts +73 -0
  8. package/dist/cache/storage.d.ts.map +1 -0
  9. package/dist/cache/storage.js +176 -0
  10. package/dist/cache/storage.js.map +1 -0
  11. package/dist/cache/ttl.d.ts +62 -0
  12. package/dist/cache/ttl.d.ts.map +1 -0
  13. package/dist/cache/ttl.js +96 -0
  14. package/dist/cache/ttl.js.map +1 -0
  15. package/dist/extractor/classifier.d.ts +30 -0
  16. package/dist/extractor/classifier.d.ts.map +1 -0
  17. package/dist/extractor/classifier.js +150 -0
  18. package/dist/extractor/classifier.js.map +1 -0
  19. package/dist/extractor/forward-ref.d.ts +28 -0
  20. package/dist/extractor/forward-ref.d.ts.map +1 -0
  21. package/dist/extractor/forward-ref.js +134 -0
  22. package/dist/extractor/forward-ref.js.map +1 -0
  23. package/dist/extractor/index.d.ts +25 -0
  24. package/dist/extractor/index.d.ts.map +1 -0
  25. package/dist/extractor/index.js +43 -0
  26. package/dist/extractor/index.js.map +1 -0
  27. package/dist/extractor/interface.d.ts +40 -0
  28. package/dist/extractor/interface.d.ts.map +1 -0
  29. package/dist/extractor/interface.js +233 -0
  30. package/dist/extractor/interface.js.map +1 -0
  31. package/dist/extractor/jsdoc.d.ts +24 -0
  32. package/dist/extractor/jsdoc.d.ts.map +1 -0
  33. package/dist/extractor/jsdoc.js +74 -0
  34. package/dist/extractor/jsdoc.js.map +1 -0
  35. package/dist/extractor/project.d.ts +17 -0
  36. package/dist/extractor/project.d.ts.map +1 -0
  37. package/dist/extractor/project.js +33 -0
  38. package/dist/extractor/project.js.map +1 -0
  39. package/dist/extractor/props.d.ts +24 -0
  40. package/dist/extractor/props.d.ts.map +1 -0
  41. package/dist/extractor/props.js +78 -0
  42. package/dist/extractor/props.js.map +1 -0
  43. package/dist/extractor/type-resolver.d.ts +32 -0
  44. package/dist/extractor/type-resolver.d.ts.map +1 -0
  45. package/dist/extractor/type-resolver.js +129 -0
  46. package/dist/extractor/type-resolver.js.map +1 -0
  47. package/dist/fetcher/index.d.ts +7 -0
  48. package/dist/fetcher/index.d.ts.map +1 -0
  49. package/dist/fetcher/index.js +7 -0
  50. package/dist/fetcher/index.js.map +1 -0
  51. package/dist/fetcher/npm-registry.d.ts +45 -0
  52. package/dist/fetcher/npm-registry.d.ts.map +1 -0
  53. package/dist/fetcher/npm-registry.js +217 -0
  54. package/dist/fetcher/npm-registry.js.map +1 -0
  55. package/dist/fetcher/unified-package.d.ts +27 -0
  56. package/dist/fetcher/unified-package.d.ts.map +1 -0
  57. package/dist/fetcher/unified-package.js +99 -0
  58. package/dist/fetcher/unified-package.js.map +1 -0
  59. package/dist/fetcher/unpkg.d.ts +20 -0
  60. package/dist/fetcher/unpkg.d.ts.map +1 -0
  61. package/dist/fetcher/unpkg.js +57 -0
  62. package/dist/fetcher/unpkg.js.map +1 -0
  63. package/dist/index.d.ts +11 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +23 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/signatures/disambiguation.d.ts +30 -0
  68. package/dist/signatures/disambiguation.d.ts.map +1 -0
  69. package/dist/signatures/disambiguation.js +99 -0
  70. package/dist/signatures/disambiguation.js.map +1 -0
  71. package/dist/signatures/distinguishing.d.ts +29 -0
  72. package/dist/signatures/distinguishing.d.ts.map +1 -0
  73. package/dist/signatures/distinguishing.js +108 -0
  74. package/dist/signatures/distinguishing.js.map +1 -0
  75. package/dist/signatures/generator.d.ts +20 -0
  76. package/dist/signatures/generator.d.ts.map +1 -0
  77. package/dist/signatures/generator.js +147 -0
  78. package/dist/signatures/generator.js.map +1 -0
  79. package/dist/signatures/index.d.ts +10 -0
  80. package/dist/signatures/index.d.ts.map +1 -0
  81. package/dist/signatures/index.js +10 -0
  82. package/dist/signatures/index.js.map +1 -0
  83. package/dist/signatures/inference.d.ts +37 -0
  84. package/dist/signatures/inference.d.ts.map +1 -0
  85. package/dist/signatures/inference.js +132 -0
  86. package/dist/signatures/inference.js.map +1 -0
  87. package/dist/tools/extract-primitive.d.ts +49 -0
  88. package/dist/tools/extract-primitive.d.ts.map +1 -0
  89. package/dist/tools/extract-primitive.js +103 -0
  90. package/dist/tools/extract-primitive.js.map +1 -0
  91. package/dist/tools/index.d.ts +6 -0
  92. package/dist/tools/index.d.ts.map +1 -0
  93. package/dist/tools/index.js +6 -0
  94. package/dist/tools/index.js.map +1 -0
  95. package/dist/tools/list-primitives.d.ts +40 -0
  96. package/dist/tools/list-primitives.d.ts.map +1 -0
  97. package/dist/tools/list-primitives.js +53 -0
  98. package/dist/tools/list-primitives.js.map +1 -0
  99. package/dist/types/index.d.ts +83 -0
  100. package/dist/types/index.d.ts.map +1 -0
  101. package/dist/types/index.js +5 -0
  102. package/dist/types/index.js.map +1 -0
  103. package/package.json +46 -0
@@ -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;AAkCH;;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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * unpkg CDN client for fetching type definitions.
3
+ */
4
+ import { primitiveToPackage } from './npm-registry.js';
5
+ const UNPKG_URL = 'https://unpkg.com';
6
+ async function fetchTypeDefinition(packageName, version, typesPath, fallbackPath) {
7
+ const url = `${UNPKG_URL}/${packageName}@${version}/${typesPath}`;
8
+ const response = await fetch(url);
9
+ if (!response.ok) {
10
+ if (response.status === 404 && fallbackPath) {
11
+ const fallbackUrl = `${UNPKG_URL}/${packageName}@${version}/${fallbackPath}`;
12
+ const fallbackResponse = await fetch(fallbackUrl);
13
+ if (fallbackResponse.ok) {
14
+ return fallbackResponse.text();
15
+ }
16
+ throw new Error(`Type definitions not found for ${packageName}@${version}`);
17
+ }
18
+ throw new Error(`Failed to fetch types: ${response.status} ${response.statusText}`);
19
+ }
20
+ return response.text();
21
+ }
22
+ /**
23
+ * Build the URL for a package's type definitions on unpkg.
24
+ */
25
+ export function buildTypesUrl(packageName, version) {
26
+ return `${UNPKG_URL}/${packageName}@${version}/dist/index.d.ts`;
27
+ }
28
+ /**
29
+ * Fetch type definitions for a Radix primitive from unpkg.
30
+ */
31
+ export async function fetchTypes(primitive, version) {
32
+ const packageName = primitiveToPackage(primitive);
33
+ return fetchTypeDefinition(packageName, version, 'dist/index.d.ts', 'dist/index.d.mts');
34
+ }
35
+ /**
36
+ * Fetch type definitions from the unified radix-ui package.
37
+ */
38
+ export async function fetchFromUnifiedPackage(primitive, version, typesPath) {
39
+ const normalized = primitive.toLowerCase().replace(/\s+/g, '-');
40
+ const resolvedPath = typesPath ?? `dist/${normalized}.d.ts`;
41
+ const fallbackPath = resolvedPath.endsWith('.d.ts')
42
+ ? resolvedPath.replace(/\.d\.ts$/, '.d.mts')
43
+ : undefined;
44
+ return fetchTypeDefinition('radix-ui', version, resolvedPath, fallbackPath);
45
+ }
46
+ /**
47
+ * Fetch raw file content from a package on unpkg.
48
+ */
49
+ export async function fetchPackageFile(packageName, version, filePath) {
50
+ const url = `${UNPKG_URL}/${packageName}@${version}/${filePath}`;
51
+ const response = await fetch(url);
52
+ if (!response.ok) {
53
+ throw new Error(`Failed to fetch ${filePath}: ${response.status} ${response.statusText}`);
54
+ }
55
+ return response.text();
56
+ }
57
+ //# sourceMappingURL=unpkg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpkg.js","sourceRoot":"","sources":["../../src/fetcher/unpkg.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,SAAS,GAAG,mBAAmB,CAAC;AAEtC,KAAK,UAAU,mBAAmB,CAChC,WAAmB,EACnB,OAAe,EACf,SAAiB,EACjB,YAAqB;IAErB,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,WAAW,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,GAAG,SAAS,IAAI,WAAW,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC7E,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;YAClD,IAAI,gBAAgB,CAAC,EAAE,EAAE,CAAC;gBACxB,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,kCAAkC,WAAW,IAAI,OAAO,EAAE,CAC3D,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CACb,0BAA0B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB,EAAE,OAAe;IAChE,OAAO,GAAG,SAAS,IAAI,WAAW,IAAI,OAAO,kBAAkB,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,OAAe;IAEf,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,mBAAmB,CACxB,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,kBAAkB,CACnB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,OAAe,EACf,SAAkB;IAElB,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,SAAS,IAAI,QAAQ,UAAU,OAAO,CAAC;IAC5D,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjD,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,mBAAmB,CACxB,UAAU,EACV,OAAO,EACP,YAAY,EACZ,YAAY,CACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,OAAe,EACf,QAAgB;IAEhB,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,WAAW,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;IAEjE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,mBAAmB,QAAQ,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CACzE,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { LimpsExtension } from '@sudosandwich/limps/extensions';
2
+ /**
3
+ * limps-radix extension for Radix UI contract extraction and analysis.
4
+ */
5
+ declare const limpsRadix: LimpsExtension;
6
+ export default limpsRadix;
7
+ export * from './types/index.js';
8
+ export * from './signatures/index.js';
9
+ export * from './cache/index.js';
10
+ export * from './tools/index.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,gCAAgC,CAAC;AAGxC;;GAEG;AACH,QAAA,MAAM,UAAU,EAAE,cAQjB,CAAC;AAEF,eAAe,UAAU,CAAC;AAG1B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ import { listPrimitivesTool, extractPrimitiveTool } from './tools/index.js';
2
+ /**
3
+ * limps-radix extension for Radix UI contract extraction and analysis.
4
+ */
5
+ const limpsRadix = {
6
+ name: 'limps-radix',
7
+ version: '0.1.0',
8
+ tools: [listPrimitivesTool, extractPrimitiveTool],
9
+ async onInit(_context) {
10
+ // Initialize cache directory
11
+ // This will be implemented by later agents
12
+ },
13
+ };
14
+ export default limpsRadix;
15
+ // Re-export types
16
+ export * from './types/index.js';
17
+ // Re-export signatures module
18
+ export * from './signatures/index.js';
19
+ // Re-export cache module
20
+ export * from './cache/index.js';
21
+ // Re-export tools module
22
+ export * from './tools/index.js';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE5E;;GAEG;AACH,MAAM,UAAU,GAAmB;IACjC,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IACjD,KAAK,CAAC,MAAM,CAAC,QAA0B;QACrC,6BAA6B;QAC7B,2CAA2C;IAC7C,CAAC;CACF,CAAC;AAEF,eAAe,UAAU,CAAC;AAE1B,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,8BAA8B;AAC9B,cAAc,uBAAuB,CAAC;AAEtC,yBAAyB;AACzB,cAAc,kBAAkB,CAAC;AAEjC,yBAAyB;AACzB,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Disambiguation rules for similar Radix primitives.
3
+ * Helps differentiate between primitives with similar APIs.
4
+ */
5
+ /**
6
+ * Get primitives that are similar to the given primitive.
7
+ * @param primitiveName - Name of the Radix primitive
8
+ * @returns Array of similar primitive names
9
+ */
10
+ export declare function getSimilarPrimitives(primitiveName: string): string[];
11
+ /**
12
+ * Get the disambiguation rule for a primitive.
13
+ * @param primitiveName - Name of the Radix primitive
14
+ * @returns Human-readable disambiguation rule, or undefined if none
15
+ */
16
+ export declare function getDisambiguationRule(primitiveName: string): string | undefined;
17
+ /**
18
+ * Get all primitives in the same similarity group.
19
+ * @param primitiveName - Name of the Radix primitive
20
+ * @returns Array including the primitive and all similar ones
21
+ */
22
+ export declare function getSimilarityGroup(primitiveName: string): string[];
23
+ /**
24
+ * Check if two primitives are in the same similarity group.
25
+ * @param primitive1 - First primitive name
26
+ * @param primitive2 - Second primitive name
27
+ * @returns True if they are similar
28
+ */
29
+ export declare function areSimilar(primitive1: string, primitive2: string): boolean;
30
+ //# sourceMappingURL=disambiguation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disambiguation.d.ts","sourceRoot":"","sources":["../../src/signatures/disambiguation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyFH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAG1E"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Disambiguation rules for similar Radix primitives.
3
+ * Helps differentiate between primitives with similar APIs.
4
+ */
5
+ /**
6
+ * Groups of primitives that are similar and may be confused.
7
+ * Each group maps a primitive to its similar alternatives.
8
+ */
9
+ const SIMILARITY_GROUPS = {
10
+ // Modal/Overlay patterns
11
+ Dialog: ['AlertDialog', 'Popover', 'Tooltip', 'HoverCard'],
12
+ AlertDialog: ['Dialog'],
13
+ Popover: ['Tooltip', 'HoverCard', 'Dialog'],
14
+ Tooltip: ['Popover', 'HoverCard'],
15
+ HoverCard: ['Tooltip', 'Popover'],
16
+ // Menu patterns
17
+ DropdownMenu: ['ContextMenu', 'Select', 'Menubar'],
18
+ ContextMenu: ['DropdownMenu'],
19
+ Menubar: ['DropdownMenu', 'NavigationMenu'],
20
+ NavigationMenu: ['Menubar'],
21
+ // Selection patterns
22
+ Select: ['DropdownMenu', 'Combobox'],
23
+ Combobox: ['Select'],
24
+ RadioGroup: ['ToggleGroup', 'Select'],
25
+ ToggleGroup: ['RadioGroup'],
26
+ // Toggle patterns
27
+ Checkbox: ['Switch', 'Toggle'],
28
+ Switch: ['Checkbox', 'Toggle'],
29
+ Toggle: ['Checkbox', 'Switch'],
30
+ // Structure patterns
31
+ Tabs: ['Accordion'],
32
+ Accordion: ['Tabs', 'Collapsible'],
33
+ Collapsible: ['Accordion'],
34
+ };
35
+ /**
36
+ * Human-readable disambiguation rules.
37
+ * Explains how to distinguish this primitive from similar ones.
38
+ */
39
+ const DISAMBIGUATION_RULES = {
40
+ Dialog: 'Dialog has a modal prop and Overlay sub-component. Unlike AlertDialog, it does not have Action/Cancel buttons.',
41
+ AlertDialog: 'AlertDialog has Action and Cancel button components. Unlike Dialog, it does not have a modal prop (always modal).',
42
+ Popover: 'Popover has side/align/sideOffset/alignOffset positioning props. Unlike Tooltip, it requires explicit triggering (no hover).',
43
+ Tooltip: 'Tooltip has delayDuration and skipDelayDuration for hover timing. Unlike Popover, it activates on hover.',
44
+ HoverCard: 'HoverCard has openDelay and closeDelay props. Similar to Tooltip but designed for richer hover content.',
45
+ DropdownMenu: 'DropdownMenu has Sub/SubTrigger/SubContent for nested menus and CheckboxItem/RadioGroup for selection. Unlike Select, no Value display.',
46
+ ContextMenu: 'ContextMenu is like DropdownMenu but triggered by right-click. Has onOpenChange but no explicit Trigger component.',
47
+ Select: 'Select has Value, Viewport, ScrollUpButton/ScrollDownButton components. Unlike DropdownMenu, displays selected value.',
48
+ Checkbox: 'Checkbox has an Indicator that shows checked state (checkmark). Unlike Switch, no sliding Thumb.',
49
+ Switch: 'Switch has a sliding Thumb component. Unlike Checkbox, no Indicator with checkmark.',
50
+ Toggle: 'Toggle has a pressed state. Unlike Checkbox/Switch, it is a button that toggles appearance.',
51
+ RadioGroup: 'RadioGroup has Item and Indicator components with single-value selection. Unlike ToggleGroup, no type prop.',
52
+ ToggleGroup: 'ToggleGroup has a type prop ("single" or "multiple") and rovingFocus. Unlike RadioGroup, can have multiple selection.',
53
+ Tabs: 'Tabs has List, Trigger, and Content with orientation. Horizontal content switching without collapse.',
54
+ Accordion: 'Accordion has Item, Header, Trigger, Content with collapsible prop. Vertical stacked sections that expand/collapse.',
55
+ Collapsible: 'Collapsible is a single collapsible region. Unlike Accordion, only one section without Item components.',
56
+ Menubar: 'Menubar is a horizontal menu bar with multiple Menu components. Unlike DropdownMenu, designed for app-level menus.',
57
+ NavigationMenu: 'NavigationMenu has Viewport, Indicator, and Link components for navigation patterns. Unlike Menubar, focused on links.',
58
+ Slider: 'Slider has min/max/step with Track, Range, and Thumb. Numeric range selection, potentially multiple thumbs.',
59
+ Progress: 'Progress has value/max with Indicator. Read-only display, no user interaction.',
60
+ };
61
+ /**
62
+ * Get primitives that are similar to the given primitive.
63
+ * @param primitiveName - Name of the Radix primitive
64
+ * @returns Array of similar primitive names
65
+ */
66
+ export function getSimilarPrimitives(primitiveName) {
67
+ return SIMILARITY_GROUPS[primitiveName] || [];
68
+ }
69
+ /**
70
+ * Get the disambiguation rule for a primitive.
71
+ * @param primitiveName - Name of the Radix primitive
72
+ * @returns Human-readable disambiguation rule, or undefined if none
73
+ */
74
+ export function getDisambiguationRule(primitiveName) {
75
+ return DISAMBIGUATION_RULES[primitiveName];
76
+ }
77
+ /**
78
+ * Get all primitives in the same similarity group.
79
+ * @param primitiveName - Name of the Radix primitive
80
+ * @returns Array including the primitive and all similar ones
81
+ */
82
+ export function getSimilarityGroup(primitiveName) {
83
+ const similar = getSimilarPrimitives(primitiveName);
84
+ if (similar.length === 0) {
85
+ return [primitiveName];
86
+ }
87
+ return [primitiveName, ...similar];
88
+ }
89
+ /**
90
+ * Check if two primitives are in the same similarity group.
91
+ * @param primitive1 - First primitive name
92
+ * @param primitive2 - Second primitive name
93
+ * @returns True if they are similar
94
+ */
95
+ export function areSimilar(primitive1, primitive2) {
96
+ const group1 = getSimilarPrimitives(primitive1);
97
+ return group1.includes(primitive2);
98
+ }
99
+ //# sourceMappingURL=disambiguation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disambiguation.js","sourceRoot":"","sources":["../../src/signatures/disambiguation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,iBAAiB,GAA6B;IAClD,yBAAyB;IACzB,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC;IAC1D,WAAW,EAAE,CAAC,QAAQ,CAAC;IACvB,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC;IAC3C,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;IACjC,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IAEjC,gBAAgB;IAChB,YAAY,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;IAClD,WAAW,EAAE,CAAC,cAAc,CAAC;IAC7B,OAAO,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAC3C,cAAc,EAAE,CAAC,SAAS,CAAC;IAE3B,qBAAqB;IACrB,MAAM,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;IACpC,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,UAAU,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;IACrC,WAAW,EAAE,CAAC,YAAY,CAAC;IAE3B,kBAAkB;IAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC9B,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC9B,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IAE9B,qBAAqB;IACrB,IAAI,EAAE,CAAC,WAAW,CAAC;IACnB,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;IAClC,WAAW,EAAE,CAAC,WAAW,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,oBAAoB,GAA2B;IACnD,MAAM,EACJ,gHAAgH;IAClH,WAAW,EACT,mHAAmH;IAErH,OAAO,EACL,8HAA8H;IAChI,OAAO,EACL,0GAA0G;IAC5G,SAAS,EACP,yGAAyG;IAE3G,YAAY,EACV,yIAAyI;IAC3I,WAAW,EACT,oHAAoH;IACtH,MAAM,EACJ,uHAAuH;IAEzH,QAAQ,EACN,kGAAkG;IACpG,MAAM,EACJ,qFAAqF;IACvF,MAAM,EACJ,6FAA6F;IAE/F,UAAU,EACR,6GAA6G;IAC/G,WAAW,EACT,uHAAuH;IAEzH,IAAI,EAAE,sGAAsG;IAC5G,SAAS,EACP,qHAAqH;IACvH,WAAW,EACT,yGAAyG;IAE3G,OAAO,EACL,oHAAoH;IACtH,cAAc,EACZ,wHAAwH;IAE1H,MAAM,EACJ,6GAA6G;IAC/G,QAAQ,EAAE,gFAAgF;CAC3F,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,OAAO,iBAAiB,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,aAAqB;IACzD,OAAO,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,MAAM,OAAO,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,aAAa,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB,EAAE,UAAkB;IAC/D,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Distinguishing props for Radix primitives.
3
+ * Knowledge base for identifying specific primitives by their unique props.
4
+ */
5
+ /**
6
+ * Get the distinguishing props for a primitive.
7
+ * @param primitiveName - Name of the Radix primitive
8
+ * @returns Array of prop/sub-component names that distinguish this primitive
9
+ */
10
+ export declare function getDistinguishingProps(primitiveName: string): string[];
11
+ /**
12
+ * Get the anti-pattern props for a primitive.
13
+ * These props indicate the component is NOT this primitive.
14
+ * @param primitiveName - Name of the Radix primitive
15
+ * @returns Array of prop names that indicate NOT this primitive
16
+ */
17
+ export declare function getAntiPatternProps(primitiveName: string): string[];
18
+ /**
19
+ * Get all known primitive names.
20
+ * @returns Array of all primitive names in the knowledge base
21
+ */
22
+ export declare function getKnownPrimitives(): string[];
23
+ /**
24
+ * Check if a primitive name is known in the knowledge base.
25
+ * @param primitiveName - Name to check
26
+ * @returns True if the primitive is known
27
+ */
28
+ export declare function isKnownPrimitive(primitiveName: string): boolean;
29
+ //# sourceMappingURL=distinguishing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distinguishing.d.ts","sourceRoot":"","sources":["../../src/signatures/distinguishing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4FH;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAE/D"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Distinguishing props for Radix primitives.
3
+ * Knowledge base for identifying specific primitives by their unique props.
4
+ */
5
+ /**
6
+ * Props that distinguish this primitive from others.
7
+ * These are props or sub-components that are characteristic of a specific primitive.
8
+ */
9
+ const DISTINGUISHING_PROPS = {
10
+ // Overlays/Modals
11
+ Dialog: ['modal', 'Overlay'],
12
+ AlertDialog: ['Action', 'Cancel'],
13
+ Popover: ['side', 'align', 'sideOffset', 'alignOffset'],
14
+ Tooltip: ['delayDuration', 'skipDelayDuration', 'disableHoverableContent'],
15
+ HoverCard: ['openDelay', 'closeDelay'],
16
+ // Menus
17
+ DropdownMenu: ['Sub', 'SubTrigger', 'SubContent', 'RadioGroup', 'CheckboxItem'],
18
+ ContextMenu: ['Sub', 'SubTrigger', 'SubContent', 'onOpenChange'],
19
+ Menubar: ['Menu', 'Sub', 'SubTrigger', 'SubContent'],
20
+ NavigationMenu: ['Viewport', 'Indicator', 'List', 'Link'],
21
+ // Selection
22
+ Select: ['Value', 'Viewport', 'ScrollUpButton', 'ScrollDownButton', 'ItemText'],
23
+ Combobox: ['Input', 'Empty', 'Group', 'ItemIndicator'],
24
+ // Structure
25
+ Tabs: ['List', 'orientation'],
26
+ Accordion: ['Item', 'Header', 'collapsible', 'type'],
27
+ Collapsible: ['collapsible'],
28
+ // Controls
29
+ Slider: ['min', 'max', 'step', 'Range', 'Thumb', 'Track'],
30
+ Switch: ['checked', 'Thumb'],
31
+ Checkbox: ['checked', 'Indicator'],
32
+ RadioGroup: ['Item', 'Indicator', 'orientation'],
33
+ ToggleGroup: ['type', 'rovingFocus'],
34
+ Toggle: ['pressed'],
35
+ // Display
36
+ Avatar: ['Image', 'Fallback'],
37
+ Progress: ['value', 'max', 'Indicator'],
38
+ AspectRatio: ['ratio'],
39
+ Separator: ['orientation', 'decorative'],
40
+ // Form
41
+ Label: ['htmlFor'],
42
+ Form: ['Field', 'Label', 'Control', 'Message', 'ValidityState'],
43
+ // Other
44
+ Toast: ['Provider', 'Viewport', 'Action', 'Close', 'Title', 'Description'],
45
+ ScrollArea: ['Scrollbar', 'Thumb', 'Corner'],
46
+ Toolbar: ['Button', 'Link', 'ToggleGroup', 'Separator'],
47
+ };
48
+ /**
49
+ * Props that indicate this is NOT a specific primitive.
50
+ * Useful for disambiguation when primitives have similar APIs.
51
+ */
52
+ const ANTI_PATTERN_PROPS = {
53
+ // Dialog doesn't have these (AlertDialog does)
54
+ Dialog: ['Action', 'Cancel'],
55
+ // AlertDialog doesn't have modal prop (Dialog does)
56
+ AlertDialog: ['modal'],
57
+ // Popover doesn't have delay props (Tooltip/HoverCard do)
58
+ Popover: ['delayDuration', 'openDelay', 'closeDelay'],
59
+ // Tooltip doesn't have openDelay/closeDelay (HoverCard does)
60
+ Tooltip: ['openDelay', 'closeDelay'],
61
+ // HoverCard doesn't have delayDuration (Tooltip does)
62
+ HoverCard: ['delayDuration', 'skipDelayDuration'],
63
+ // Select doesn't have Sub/SubTrigger (DropdownMenu does)
64
+ Select: ['Sub', 'SubTrigger', 'SubContent', 'CheckboxItem'],
65
+ // DropdownMenu doesn't have Value/Viewport (Select does)
66
+ DropdownMenu: ['Value', 'Viewport', 'ScrollUpButton', 'ItemText'],
67
+ // Checkbox doesn't have Thumb (Switch does)
68
+ Checkbox: ['Thumb'],
69
+ // Switch doesn't have Indicator with checkmark (Checkbox does)
70
+ Switch: ['Indicator'],
71
+ // RadioGroup doesn't have 'type' prop (ToggleGroup does)
72
+ RadioGroup: ['type'],
73
+ // ToggleGroup doesn't have 'Item' requiring 'value' selection
74
+ ToggleGroup: [],
75
+ };
76
+ /**
77
+ * Get the distinguishing props for a primitive.
78
+ * @param primitiveName - Name of the Radix primitive
79
+ * @returns Array of prop/sub-component names that distinguish this primitive
80
+ */
81
+ export function getDistinguishingProps(primitiveName) {
82
+ return DISTINGUISHING_PROPS[primitiveName] || [];
83
+ }
84
+ /**
85
+ * Get the anti-pattern props for a primitive.
86
+ * These props indicate the component is NOT this primitive.
87
+ * @param primitiveName - Name of the Radix primitive
88
+ * @returns Array of prop names that indicate NOT this primitive
89
+ */
90
+ export function getAntiPatternProps(primitiveName) {
91
+ return ANTI_PATTERN_PROPS[primitiveName] || [];
92
+ }
93
+ /**
94
+ * Get all known primitive names.
95
+ * @returns Array of all primitive names in the knowledge base
96
+ */
97
+ export function getKnownPrimitives() {
98
+ return Object.keys(DISTINGUISHING_PROPS);
99
+ }
100
+ /**
101
+ * Check if a primitive name is known in the knowledge base.
102
+ * @param primitiveName - Name to check
103
+ * @returns True if the primitive is known
104
+ */
105
+ export function isKnownPrimitive(primitiveName) {
106
+ return primitiveName in DISTINGUISHING_PROPS;
107
+ }
108
+ //# sourceMappingURL=distinguishing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distinguishing.js","sourceRoot":"","sources":["../../src/signatures/distinguishing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Main signature generator for Radix primitives.
3
+ * Combines inference, distinguishing, and disambiguation to create BehaviorSignature.
4
+ */
5
+ import type { ExtractedPrimitive, BehaviorSignature } from '../types/index.js';
6
+ /**
7
+ * Generate a BehaviorSignature from an ExtractedPrimitive.
8
+ * This is the main entry point for signature generation.
9
+ *
10
+ * @param extracted - The extracted primitive data
11
+ * @returns The generated behavior signature
12
+ */
13
+ export declare function generateSignature(extracted: ExtractedPrimitive): BehaviorSignature;
14
+ /**
15
+ * Generate signatures for multiple primitives.
16
+ * @param extractedList - Array of extracted primitives
17
+ * @returns Array of behavior signatures
18
+ */
19
+ export declare function generateSignatures(extractedList: ExtractedPrimitive[]): BehaviorSignature[];
20
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/signatures/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,mBAAmB,CAAC;AAqH3B;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,GAAG,iBAAiB,CAuDlF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,kBAAkB,EAAE,GAClC,iBAAiB,EAAE,CAErB"}