@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.
Files changed (335) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +339 -0
  3. package/bin/limps-headless +2 -0
  4. package/dist/analysis/index.d.ts +6 -0
  5. package/dist/analysis/index.d.ts.map +1 -0
  6. package/dist/analysis/index.js +6 -0
  7. package/dist/analysis/index.js.map +1 -0
  8. package/dist/analysis/ir/build-ir.d.ts +10 -0
  9. package/dist/analysis/ir/build-ir.d.ts.map +1 -0
  10. package/dist/analysis/ir/build-ir.js +102 -0
  11. package/dist/analysis/ir/build-ir.js.map +1 -0
  12. package/dist/analysis/ir/types.d.ts +44 -0
  13. package/dist/analysis/ir/types.d.ts.map +1 -0
  14. package/dist/analysis/ir/types.js +2 -0
  15. package/dist/analysis/ir/types.js.map +1 -0
  16. package/dist/analysis/module-graph.d.ts +20 -0
  17. package/dist/analysis/module-graph.d.ts.map +1 -0
  18. package/dist/analysis/module-graph.js +104 -0
  19. package/dist/analysis/module-graph.js.map +1 -0
  20. package/dist/analysis/passes/behavior-evidence.d.ts +9 -0
  21. package/dist/analysis/passes/behavior-evidence.d.ts.map +1 -0
  22. package/dist/analysis/passes/behavior-evidence.js +80 -0
  23. package/dist/analysis/passes/behavior-evidence.js.map +1 -0
  24. package/dist/analysis/passes/import-evidence.d.ts +3 -0
  25. package/dist/analysis/passes/import-evidence.d.ts.map +1 -0
  26. package/dist/analysis/passes/import-evidence.js +58 -0
  27. package/dist/analysis/passes/import-evidence.js.map +1 -0
  28. package/dist/analysis/passes/index.d.ts +15 -0
  29. package/dist/analysis/passes/index.d.ts.map +1 -0
  30. package/dist/analysis/passes/index.js +21 -0
  31. package/dist/analysis/passes/index.js.map +1 -0
  32. package/dist/analysis/passes/jsx-evidence.d.ts +8 -0
  33. package/dist/analysis/passes/jsx-evidence.d.ts.map +1 -0
  34. package/dist/analysis/passes/jsx-evidence.js +149 -0
  35. package/dist/analysis/passes/jsx-evidence.js.map +1 -0
  36. package/dist/analysis/ts-program.d.ts +12 -0
  37. package/dist/analysis/ts-program.d.ts.map +1 -0
  38. package/dist/analysis/ts-program.js +59 -0
  39. package/dist/analysis/ts-program.js.map +1 -0
  40. package/dist/analyzer/disambiguator.d.ts +20 -0
  41. package/dist/analyzer/disambiguator.d.ts.map +1 -0
  42. package/dist/analyzer/disambiguator.js +83 -0
  43. package/dist/analyzer/disambiguator.js.map +1 -0
  44. package/dist/analyzer/index.d.ts +26 -0
  45. package/dist/analyzer/index.d.ts.map +1 -0
  46. package/dist/analyzer/index.js +68 -0
  47. package/dist/analyzer/index.js.map +1 -0
  48. package/dist/analyzer/parser.d.ts +23 -0
  49. package/dist/analyzer/parser.d.ts.map +1 -0
  50. package/dist/analyzer/parser.js +58 -0
  51. package/dist/analyzer/parser.js.map +1 -0
  52. package/dist/analyzer/patterns.d.ts +42 -0
  53. package/dist/analyzer/patterns.d.ts.map +1 -0
  54. package/dist/analyzer/patterns.js +206 -0
  55. package/dist/analyzer/patterns.js.map +1 -0
  56. package/dist/analyzer/props.d.ts +16 -0
  57. package/dist/analyzer/props.d.ts.map +1 -0
  58. package/dist/analyzer/props.js +235 -0
  59. package/dist/analyzer/props.js.map +1 -0
  60. package/dist/analyzer/rules/checkbox-switch-toggle.d.ts +10 -0
  61. package/dist/analyzer/rules/checkbox-switch-toggle.d.ts.map +1 -0
  62. package/dist/analyzer/rules/checkbox-switch-toggle.js +26 -0
  63. package/dist/analyzer/rules/checkbox-switch-toggle.js.map +1 -0
  64. package/dist/analyzer/rules/dialog-popover.d.ts +10 -0
  65. package/dist/analyzer/rules/dialog-popover.d.ts.map +1 -0
  66. package/dist/analyzer/rules/dialog-popover.js +25 -0
  67. package/dist/analyzer/rules/dialog-popover.js.map +1 -0
  68. package/dist/analyzer/rules/index.d.ts +24 -0
  69. package/dist/analyzer/rules/index.d.ts.map +1 -0
  70. package/dist/analyzer/rules/index.js +51 -0
  71. package/dist/analyzer/rules/index.js.map +1 -0
  72. package/dist/analyzer/rules/tooltip-hovercard.d.ts +10 -0
  73. package/dist/analyzer/rules/tooltip-hovercard.d.ts.map +1 -0
  74. package/dist/analyzer/rules/tooltip-hovercard.js +21 -0
  75. package/dist/analyzer/rules/tooltip-hovercard.js.map +1 -0
  76. package/dist/analyzer/scorer.d.ts +12 -0
  77. package/dist/analyzer/scorer.d.ts.map +1 -0
  78. package/dist/analyzer/scorer.js +171 -0
  79. package/dist/analyzer/scorer.js.map +1 -0
  80. package/dist/analyzer/weights.d.ts +28 -0
  81. package/dist/analyzer/weights.d.ts.map +1 -0
  82. package/dist/analyzer/weights.js +40 -0
  83. package/dist/analyzer/weights.js.map +1 -0
  84. package/dist/audit/analyses/migration.d.ts +42 -0
  85. package/dist/audit/analyses/migration.d.ts.map +1 -0
  86. package/dist/audit/analyses/migration.js +91 -0
  87. package/dist/audit/analyses/migration.js.map +1 -0
  88. package/dist/audit/discover-components.d.ts +7 -0
  89. package/dist/audit/discover-components.d.ts.map +1 -0
  90. package/dist/audit/discover-components.js +486 -0
  91. package/dist/audit/discover-components.js.map +1 -0
  92. package/dist/audit/generate-report.d.ts +28 -0
  93. package/dist/audit/generate-report.d.ts.map +1 -0
  94. package/dist/audit/generate-report.js +333 -0
  95. package/dist/audit/generate-report.js.map +1 -0
  96. package/dist/audit/index.d.ts +8 -0
  97. package/dist/audit/index.d.ts.map +1 -0
  98. package/dist/audit/index.js +8 -0
  99. package/dist/audit/index.js.map +1 -0
  100. package/dist/audit/run-audit.d.ts +33 -0
  101. package/dist/audit/run-audit.d.ts.map +1 -0
  102. package/dist/audit/run-audit.js +287 -0
  103. package/dist/audit/run-audit.js.map +1 -0
  104. package/dist/audit/types.d.ts +135 -0
  105. package/dist/audit/types.d.ts.map +1 -0
  106. package/dist/audit/types.js +5 -0
  107. package/dist/audit/types.js.map +1 -0
  108. package/dist/cache/index.d.ts +110 -0
  109. package/dist/cache/index.d.ts.map +1 -0
  110. package/dist/cache/index.js +176 -0
  111. package/dist/cache/index.js.map +1 -0
  112. package/dist/cache/storage.d.ts +73 -0
  113. package/dist/cache/storage.d.ts.map +1 -0
  114. package/dist/cache/storage.js +176 -0
  115. package/dist/cache/storage.js.map +1 -0
  116. package/dist/cache/ttl.d.ts +62 -0
  117. package/dist/cache/ttl.d.ts.map +1 -0
  118. package/dist/cache/ttl.js +96 -0
  119. package/dist/cache/ttl.js.map +1 -0
  120. package/dist/cli/commands/analyze.d.ts +6 -0
  121. package/dist/cli/commands/analyze.d.ts.map +1 -0
  122. package/dist/cli/commands/analyze.js +43 -0
  123. package/dist/cli/commands/analyze.js.map +1 -0
  124. package/dist/cli/commands/audit.d.ts +6 -0
  125. package/dist/cli/commands/audit.d.ts.map +1 -0
  126. package/dist/cli/commands/audit.js +73 -0
  127. package/dist/cli/commands/audit.js.map +1 -0
  128. package/dist/cli/commands/check-updates.d.ts +6 -0
  129. package/dist/cli/commands/check-updates.d.ts.map +1 -0
  130. package/dist/cli/commands/check-updates.js +34 -0
  131. package/dist/cli/commands/check-updates.js.map +1 -0
  132. package/dist/cli/commands/diff.d.ts +7 -0
  133. package/dist/cli/commands/diff.d.ts.map +1 -0
  134. package/dist/cli/commands/diff.js +48 -0
  135. package/dist/cli/commands/diff.js.map +1 -0
  136. package/dist/cli/commands/extract.d.ts +6 -0
  137. package/dist/cli/commands/extract.d.ts.map +1 -0
  138. package/dist/cli/commands/extract.js +42 -0
  139. package/dist/cli/commands/extract.js.map +1 -0
  140. package/dist/cli/commands/list.d.ts +6 -0
  141. package/dist/cli/commands/list.d.ts.map +1 -0
  142. package/dist/cli/commands/list.js +33 -0
  143. package/dist/cli/commands/list.js.map +1 -0
  144. package/dist/cli/flags.d.ts +9 -0
  145. package/dist/cli/flags.d.ts.map +1 -0
  146. package/dist/cli/flags.js +22 -0
  147. package/dist/cli/flags.js.map +1 -0
  148. package/dist/cli/index.d.ts +5 -0
  149. package/dist/cli/index.d.ts.map +1 -0
  150. package/dist/cli/index.js +40 -0
  151. package/dist/cli/index.js.map +1 -0
  152. package/dist/config.d.ts +19 -0
  153. package/dist/config.d.ts.map +1 -0
  154. package/dist/config.js +23 -0
  155. package/dist/config.js.map +1 -0
  156. package/dist/differ/hints.d.ts +21 -0
  157. package/dist/differ/hints.d.ts.map +1 -0
  158. package/dist/differ/hints.js +105 -0
  159. package/dist/differ/hints.js.map +1 -0
  160. package/dist/differ/index.d.ts +25 -0
  161. package/dist/differ/index.d.ts.map +1 -0
  162. package/dist/differ/index.js +115 -0
  163. package/dist/differ/index.js.map +1 -0
  164. package/dist/differ/props.d.ts +36 -0
  165. package/dist/differ/props.d.ts.map +1 -0
  166. package/dist/differ/props.js +210 -0
  167. package/dist/differ/props.js.map +1 -0
  168. package/dist/differ/severity.d.ts +31 -0
  169. package/dist/differ/severity.d.ts.map +1 -0
  170. package/dist/differ/severity.js +65 -0
  171. package/dist/differ/severity.js.map +1 -0
  172. package/dist/differ/types.d.ts +109 -0
  173. package/dist/differ/types.d.ts.map +1 -0
  174. package/dist/differ/types.js +5 -0
  175. package/dist/differ/types.js.map +1 -0
  176. package/dist/extractor/classifier.d.ts +30 -0
  177. package/dist/extractor/classifier.d.ts.map +1 -0
  178. package/dist/extractor/classifier.js +150 -0
  179. package/dist/extractor/classifier.js.map +1 -0
  180. package/dist/extractor/forward-ref.d.ts +28 -0
  181. package/dist/extractor/forward-ref.d.ts.map +1 -0
  182. package/dist/extractor/forward-ref.js +134 -0
  183. package/dist/extractor/forward-ref.js.map +1 -0
  184. package/dist/extractor/index.d.ts +25 -0
  185. package/dist/extractor/index.d.ts.map +1 -0
  186. package/dist/extractor/index.js +43 -0
  187. package/dist/extractor/index.js.map +1 -0
  188. package/dist/extractor/interface.d.ts +40 -0
  189. package/dist/extractor/interface.d.ts.map +1 -0
  190. package/dist/extractor/interface.js +233 -0
  191. package/dist/extractor/interface.js.map +1 -0
  192. package/dist/extractor/jsdoc.d.ts +24 -0
  193. package/dist/extractor/jsdoc.d.ts.map +1 -0
  194. package/dist/extractor/jsdoc.js +74 -0
  195. package/dist/extractor/jsdoc.js.map +1 -0
  196. package/dist/extractor/project.d.ts +17 -0
  197. package/dist/extractor/project.d.ts.map +1 -0
  198. package/dist/extractor/project.js +33 -0
  199. package/dist/extractor/project.js.map +1 -0
  200. package/dist/extractor/props.d.ts +24 -0
  201. package/dist/extractor/props.d.ts.map +1 -0
  202. package/dist/extractor/props.js +78 -0
  203. package/dist/extractor/props.js.map +1 -0
  204. package/dist/extractor/type-resolver.d.ts +32 -0
  205. package/dist/extractor/type-resolver.d.ts.map +1 -0
  206. package/dist/extractor/type-resolver.js +129 -0
  207. package/dist/extractor/type-resolver.js.map +1 -0
  208. package/dist/fetcher/index.d.ts +7 -0
  209. package/dist/fetcher/index.d.ts.map +1 -0
  210. package/dist/fetcher/index.js +7 -0
  211. package/dist/fetcher/index.js.map +1 -0
  212. package/dist/fetcher/npm-registry.d.ts +45 -0
  213. package/dist/fetcher/npm-registry.d.ts.map +1 -0
  214. package/dist/fetcher/npm-registry.js +217 -0
  215. package/dist/fetcher/npm-registry.js.map +1 -0
  216. package/dist/fetcher/unified-package.d.ts +27 -0
  217. package/dist/fetcher/unified-package.d.ts.map +1 -0
  218. package/dist/fetcher/unified-package.js +99 -0
  219. package/dist/fetcher/unified-package.js.map +1 -0
  220. package/dist/fetcher/unpkg.d.ts +20 -0
  221. package/dist/fetcher/unpkg.d.ts.map +1 -0
  222. package/dist/fetcher/unpkg.js +58 -0
  223. package/dist/fetcher/unpkg.js.map +1 -0
  224. package/dist/index.d.ts +18 -0
  225. package/dist/index.d.ts.map +1 -0
  226. package/dist/index.js +41 -0
  227. package/dist/index.js.map +1 -0
  228. package/dist/providers/base.d.ts +10 -0
  229. package/dist/providers/base.d.ts.map +1 -0
  230. package/dist/providers/base.js +80 -0
  231. package/dist/providers/base.js.map +1 -0
  232. package/dist/providers/index.d.ts +10 -0
  233. package/dist/providers/index.d.ts.map +1 -0
  234. package/dist/providers/index.js +10 -0
  235. package/dist/providers/index.js.map +1 -0
  236. package/dist/providers/interface.d.ts +56 -0
  237. package/dist/providers/interface.d.ts.map +1 -0
  238. package/dist/providers/interface.js +5 -0
  239. package/dist/providers/interface.js.map +1 -0
  240. package/dist/providers/radix-backend.d.ts +11 -0
  241. package/dist/providers/radix-backend.d.ts.map +1 -0
  242. package/dist/providers/radix-backend.js +107 -0
  243. package/dist/providers/radix-backend.js.map +1 -0
  244. package/dist/providers/radix.d.ts +6 -0
  245. package/dist/providers/radix.d.ts.map +1 -0
  246. package/dist/providers/radix.js +21 -0
  247. package/dist/providers/radix.js.map +1 -0
  248. package/dist/providers/registry.d.ts +17 -0
  249. package/dist/providers/registry.d.ts.map +1 -0
  250. package/dist/providers/registry.js +55 -0
  251. package/dist/providers/registry.js.map +1 -0
  252. package/dist/rules/engine.d.ts +4 -0
  253. package/dist/rules/engine.d.ts.map +1 -0
  254. package/dist/rules/engine.js +37 -0
  255. package/dist/rules/engine.js.map +1 -0
  256. package/dist/rules/index.d.ts +6 -0
  257. package/dist/rules/index.d.ts.map +1 -0
  258. package/dist/rules/index.js +6 -0
  259. package/dist/rules/index.js.map +1 -0
  260. package/dist/rules/predicates.d.ts +10 -0
  261. package/dist/rules/predicates.d.ts.map +1 -0
  262. package/dist/rules/predicates.js +93 -0
  263. package/dist/rules/predicates.js.map +1 -0
  264. package/dist/rules/rulesets/base-ui.d.ts +3 -0
  265. package/dist/rules/rulesets/base-ui.d.ts.map +1 -0
  266. package/dist/rules/rulesets/base-ui.js +65 -0
  267. package/dist/rules/rulesets/base-ui.js.map +1 -0
  268. package/dist/rules/rulesets/radix-legacy.d.ts +3 -0
  269. package/dist/rules/rulesets/radix-legacy.d.ts.map +1 -0
  270. package/dist/rules/rulesets/radix-legacy.js +38 -0
  271. package/dist/rules/rulesets/radix-legacy.js.map +1 -0
  272. package/dist/rules/types.d.ts +57 -0
  273. package/dist/rules/types.d.ts.map +1 -0
  274. package/dist/rules/types.js +2 -0
  275. package/dist/rules/types.js.map +1 -0
  276. package/dist/signatures/disambiguation.d.ts +30 -0
  277. package/dist/signatures/disambiguation.d.ts.map +1 -0
  278. package/dist/signatures/disambiguation.js +99 -0
  279. package/dist/signatures/disambiguation.js.map +1 -0
  280. package/dist/signatures/distinguishing.d.ts +29 -0
  281. package/dist/signatures/distinguishing.d.ts.map +1 -0
  282. package/dist/signatures/distinguishing.js +108 -0
  283. package/dist/signatures/distinguishing.js.map +1 -0
  284. package/dist/signatures/generator.d.ts +20 -0
  285. package/dist/signatures/generator.d.ts.map +1 -0
  286. package/dist/signatures/generator.js +147 -0
  287. package/dist/signatures/generator.js.map +1 -0
  288. package/dist/signatures/index.d.ts +10 -0
  289. package/dist/signatures/index.d.ts.map +1 -0
  290. package/dist/signatures/index.js +10 -0
  291. package/dist/signatures/index.js.map +1 -0
  292. package/dist/signatures/inference.d.ts +37 -0
  293. package/dist/signatures/inference.d.ts.map +1 -0
  294. package/dist/signatures/inference.js +132 -0
  295. package/dist/signatures/inference.js.map +1 -0
  296. package/dist/tools/analyze-component.d.ts +41 -0
  297. package/dist/tools/analyze-component.d.ts.map +1 -0
  298. package/dist/tools/analyze-component.js +274 -0
  299. package/dist/tools/analyze-component.js.map +1 -0
  300. package/dist/tools/check-updates.d.ts +33 -0
  301. package/dist/tools/check-updates.d.ts.map +1 -0
  302. package/dist/tools/check-updates.js +81 -0
  303. package/dist/tools/check-updates.js.map +1 -0
  304. package/dist/tools/diff-versions.d.ts +39 -0
  305. package/dist/tools/diff-versions.d.ts.map +1 -0
  306. package/dist/tools/diff-versions.js +78 -0
  307. package/dist/tools/diff-versions.js.map +1 -0
  308. package/dist/tools/extract-primitive.d.ts +50 -0
  309. package/dist/tools/extract-primitive.d.ts.map +1 -0
  310. package/dist/tools/extract-primitive.js +145 -0
  311. package/dist/tools/extract-primitive.js.map +1 -0
  312. package/dist/tools/generate-report.d.ts +29 -0
  313. package/dist/tools/generate-report.d.ts.map +1 -0
  314. package/dist/tools/generate-report.js +36 -0
  315. package/dist/tools/generate-report.js.map +1 -0
  316. package/dist/tools/index.d.ts +11 -0
  317. package/dist/tools/index.d.ts.map +1 -0
  318. package/dist/tools/index.js +11 -0
  319. package/dist/tools/index.js.map +1 -0
  320. package/dist/tools/list-primitives.d.ts +41 -0
  321. package/dist/tools/list-primitives.d.ts.map +1 -0
  322. package/dist/tools/list-primitives.js +74 -0
  323. package/dist/tools/list-primitives.js.map +1 -0
  324. package/dist/tools/run-audit.d.ts +43 -0
  325. package/dist/tools/run-audit.d.ts.map +1 -0
  326. package/dist/tools/run-audit.js +60 -0
  327. package/dist/tools/run-audit.js.map +1 -0
  328. package/dist/types/index.d.ts +143 -0
  329. package/dist/types/index.d.ts.map +1 -0
  330. package/dist/types/index.js +5 -0
  331. package/dist/types/index.js.map +1 -0
  332. package/docs/architecture.md +88 -0
  333. package/docs/providers.md +47 -0
  334. package/docs/tools.md +143 -0
  335. package/package.json +59 -0
@@ -0,0 +1,58 @@
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}: tried ${typesPath} (${response.status}) and ${fallbackPath} (${fallbackResponse.status}). ` +
17
+ `Package may not publish types at these paths for this version. Check: https://unpkg.com/browse/${packageName}@${version}/`);
18
+ }
19
+ throw new Error(`Failed to fetch types for ${packageName}@${version}: ${response.status} ${response.statusText} at ${url}`);
20
+ }
21
+ return response.text();
22
+ }
23
+ /**
24
+ * Build the URL for a package's type definitions on unpkg.
25
+ */
26
+ export function buildTypesUrl(packageName, version) {
27
+ return `${UNPKG_URL}/${packageName}@${version}/dist/index.d.ts`;
28
+ }
29
+ /**
30
+ * Fetch type definitions for a Radix primitive from unpkg.
31
+ */
32
+ export async function fetchTypes(primitive, version) {
33
+ const packageName = primitiveToPackage(primitive);
34
+ return fetchTypeDefinition(packageName, version, 'dist/index.d.ts', 'dist/index.d.mts');
35
+ }
36
+ /**
37
+ * Fetch type definitions from the unified radix-ui package.
38
+ */
39
+ export async function fetchFromUnifiedPackage(primitive, version, typesPath) {
40
+ const normalized = primitive.toLowerCase().replace(/\s+/g, '-');
41
+ const resolvedPath = typesPath ?? `dist/${normalized}.d.ts`;
42
+ const fallbackPath = resolvedPath.endsWith('.d.ts')
43
+ ? resolvedPath.replace(/\.d\.ts$/, '.d.mts')
44
+ : undefined;
45
+ return fetchTypeDefinition('radix-ui', version, resolvedPath, fallbackPath);
46
+ }
47
+ /**
48
+ * Fetch raw file content from a package on unpkg.
49
+ */
50
+ export async function fetchPackageFile(packageName, version, filePath) {
51
+ const url = `${UNPKG_URL}/${packageName}@${version}/${filePath}`;
52
+ const response = await fetch(url);
53
+ if (!response.ok) {
54
+ throw new Error(`Failed to fetch ${filePath}: ${response.status} ${response.statusText}`);
55
+ }
56
+ return response.text();
57
+ }
58
+ //# sourceMappingURL=unpkg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpkg.js","sourceRoot":"","sources":["../../src/fetcher/unpkg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { LimpsExtension } from '@sudosandwich/limps/extensions';
2
+ /**
3
+ * limps-headless extension for headless UI contract extraction and analysis.
4
+ */
5
+ declare const limpsHeadless: LimpsExtension;
6
+ export default limpsHeadless;
7
+ export * from './types/index.js';
8
+ export * from './signatures/index.js';
9
+ export * from './cache/index.js';
10
+ export * from './providers/index.js';
11
+ export * from './rules/index.js';
12
+ export * from './differ/index.js';
13
+ export * from './tools/index.js';
14
+ export * from './config.js';
15
+ export type { RunAuditOptions, BackendMode, MigrationThreshold, MigrationReadiness } from './audit/types.js';
16
+ export { analyzeMigration, computeMigrationSummary } from './audit/analyses/migration.js';
17
+ export type { MigrationSummary } from './audit/analyses/migration.js';
18
+ //# 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;AAWxC;;GAEG;AACH,QAAA,MAAM,aAAa,EAAE,cAgBpB,CAAC;AAEF,eAAe,aAAa,CAAC;AAG7B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG7G,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,41 @@
1
+ import { listPrimitivesTool, extractPrimitiveTool, analyzeComponentTool, diffVersionsTool, checkUpdatesTool, runAuditTool, generateReportTool, } from './tools/index.js';
2
+ /**
3
+ * limps-headless extension for headless UI contract extraction and analysis.
4
+ */
5
+ const limpsHeadless = {
6
+ name: 'limps-headless',
7
+ version: '0.1.2',
8
+ tools: [
9
+ listPrimitivesTool,
10
+ extractPrimitiveTool,
11
+ analyzeComponentTool,
12
+ diffVersionsTool,
13
+ checkUpdatesTool,
14
+ runAuditTool,
15
+ generateReportTool,
16
+ ],
17
+ async onInit(_context) {
18
+ // Initialize cache directory
19
+ // This will be implemented by later agents
20
+ },
21
+ };
22
+ export default limpsHeadless;
23
+ // Re-export types
24
+ export * from './types/index.js';
25
+ // Re-export signatures module
26
+ export * from './signatures/index.js';
27
+ // Re-export cache module
28
+ export * from './cache/index.js';
29
+ // Re-export providers module
30
+ export * from './providers/index.js';
31
+ // Re-export rules engine module
32
+ export * from './rules/index.js';
33
+ // Re-export differ module
34
+ export * from './differ/index.js';
35
+ // Re-export tools module (includes audit tool handlers and schemas)
36
+ export * from './tools/index.js';
37
+ // Config and policy options (Agent 0)
38
+ export * from './config.js';
39
+ // Migration analysis (Agent 2 #3)
40
+ export { analyzeMigration, computeMigrationSummary } from './audit/analyses/migration.js';
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,aAAa,GAAmB;IACpC,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE;QACL,kBAAkB;QAClB,oBAAoB;QACpB,oBAAoB;QACpB,gBAAgB;QAChB,gBAAgB;QAChB,YAAY;QACZ,kBAAkB;KACnB;IACD,KAAK,CAAC,MAAM,CAAC,QAA0B;QACrC,6BAA6B;QAC7B,2CAA2C;IAC7C,CAAC;CACF,CAAC;AAEF,eAAe,aAAa,CAAC;AAE7B,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,8BAA8B;AAC9B,cAAc,uBAAuB,CAAC;AAEtC,yBAAyB;AACzB,cAAc,kBAAkB,CAAC;AAEjC,6BAA6B;AAC7B,cAAc,sBAAsB,CAAC;AAErC,gCAAgC;AAChC,cAAc,kBAAkB,CAAC;AAEjC,0BAA0B;AAC1B,cAAc,mBAAmB,CAAC;AAElC,oEAAoE;AACpE,cAAc,kBAAkB,CAAC;AAEjC,sCAAsC;AACtC,cAAc,aAAa,CAAC;AAG5B,kCAAkC;AAClC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Base UI backend provider implementation (Agent 1 #2).
3
+ */
4
+ import type { BackendProvider } from './interface.js';
5
+ /**
6
+ * Base UI backend provider.
7
+ * Base UI is the modern headless UI library from the MUI team.
8
+ */
9
+ export declare const baseProvider: BackendProvider;
10
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AActD;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,eA6E1B,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Base UI backend provider implementation (Agent 1 #2).
3
+ */
4
+ /** Import patterns for Base UI packages. */
5
+ const BASE_IMPORT_PATTERNS = [
6
+ /^@base-ui\/react/,
7
+ /^@base-ui\//,
8
+ /^@base-ui-components\//,
9
+ /^@base_ui\//,
10
+ ];
11
+ /** JSX attribute patterns that indicate Base UI usage. */
12
+ const BASE_EVIDENCE_PATTERNS = ['render'];
13
+ /**
14
+ * Base UI backend provider.
15
+ * Base UI is the modern headless UI library from the MUI team.
16
+ */
17
+ export const baseProvider = {
18
+ id: 'base',
19
+ label: 'Base UI',
20
+ deprecated: false,
21
+ detectImports(imports) {
22
+ return imports.some((imp) => BASE_IMPORT_PATTERNS.some((pattern) => pattern.test(imp)));
23
+ },
24
+ detectPatterns(evidence) {
25
+ return evidence.some((e) => BASE_EVIDENCE_PATTERNS.includes(e));
26
+ },
27
+ analyzeComponent(component) {
28
+ const issues = [];
29
+ // Check for missing render prop pattern when using Base UI
30
+ if (component.backend === 'base') {
31
+ // Base UI components typically use render prop pattern
32
+ if (!component.evidence.includes('render')) {
33
+ // This is informational, not necessarily an issue
34
+ // Base UI can work without render prop for simple cases
35
+ }
36
+ }
37
+ // Check for mixed usage (potential migration issue)
38
+ if (component.mixedUsage) {
39
+ issues.push({
40
+ component: component.name,
41
+ category: 'migration',
42
+ severity: 'medium',
43
+ message: `Component "${component.name}" uses both Radix and Base UI. Consider completing migration.`,
44
+ suggestion: 'Migrate fully to Base UI for consistency.',
45
+ evidence: component.importSources,
46
+ });
47
+ }
48
+ return issues;
49
+ },
50
+ analyzeProject(components) {
51
+ const issues = [];
52
+ const baseComponents = components.filter((c) => c.backend === 'base');
53
+ const mixedComponents = components.filter((c) => c.mixedUsage);
54
+ // Project-level consistency check
55
+ if (mixedComponents.length > 0) {
56
+ issues.push({
57
+ category: 'migration',
58
+ severity: 'medium',
59
+ message: `${mixedComponents.length} component(s) have mixed Radix/Base usage.`,
60
+ suggestion: 'Review mixed components and plan migration strategy.',
61
+ evidence: mixedComponents.map((c) => c.path),
62
+ });
63
+ }
64
+ // Check for Base UI adoption progress
65
+ const totalHeadless = components.filter((c) => c.backend !== 'unknown').length;
66
+ if (totalHeadless > 0 && baseComponents.length > 0) {
67
+ const adoptionRate = Math.round((baseComponents.length / totalHeadless) * 100);
68
+ if (adoptionRate < 50) {
69
+ issues.push({
70
+ category: 'migration',
71
+ severity: 'low',
72
+ message: `Base UI adoption is at ${adoptionRate}%. Consider increasing adoption.`,
73
+ suggestion: 'Plan migration of remaining Radix components to Base UI.',
74
+ });
75
+ }
76
+ }
77
+ return issues;
78
+ },
79
+ };
80
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Provider exports (includes default radix provider registration).
3
+ * Agent 1 #2: Extended with backend providers for detection and analysis.
4
+ */
5
+ export * from './interface.js';
6
+ export * from './registry.js';
7
+ export * from './radix.js';
8
+ export * from './radix-backend.js';
9
+ export * from './base.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Provider exports (includes default radix provider registration).
3
+ * Agent 1 #2: Extended with backend providers for detection and analysis.
4
+ */
5
+ export * from './interface.js';
6
+ export * from './registry.js';
7
+ export * from './radix.js';
8
+ export * from './radix-backend.js';
9
+ export * from './base.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Provider interface for component library integrations.
3
+ */
4
+ import type { ExtractedPrimitive, BehaviorSignature } from '../types/index.js';
5
+ import type { ComponentMetadata, Issue, HeadlessBackend } from '../audit/types.js';
6
+ /**
7
+ * Component library provider interface (for type fetching).
8
+ */
9
+ export interface ComponentLibraryProvider {
10
+ name: string;
11
+ displayName: string;
12
+ listPrimitives(version: string): Promise<string[]>;
13
+ resolveVersion(versionHint: string): Promise<string>;
14
+ fetchTypes(primitive: string, version: string): Promise<string>;
15
+ extract?(typeContent: string): ExtractedPrimitive;
16
+ generateSignature?(extracted: ExtractedPrimitive): BehaviorSignature;
17
+ }
18
+ export type ProviderRegistry = Map<string, ComponentLibraryProvider>;
19
+ /**
20
+ * Backend provider interface for detection and analysis (Agent 1 #2).
21
+ * Providers supply backend-specific rules and metadata.
22
+ */
23
+ export interface BackendProvider {
24
+ /** Backend identifier. */
25
+ id: HeadlessBackend;
26
+ /** Human-readable label. */
27
+ label: string;
28
+ /** True if this backend is deprecated (e.g., Radix legacy). */
29
+ deprecated?: boolean;
30
+ /**
31
+ * Detect if imports indicate this backend.
32
+ * @param imports - Array of import source strings.
33
+ * @returns True if any import matches this backend.
34
+ */
35
+ detectImports(imports: string[]): boolean;
36
+ /**
37
+ * Detect if pattern evidence indicates this backend.
38
+ * @param evidence - Array of evidence strings (e.g., "asChild", "render").
39
+ * @returns True if any evidence matches this backend.
40
+ */
41
+ detectPatterns(evidence: string[]): boolean;
42
+ /**
43
+ * Analyze a single component for issues.
44
+ * @param component - Component metadata to analyze.
45
+ * @returns Array of issues found.
46
+ */
47
+ analyzeComponent(component: ComponentMetadata): Issue[];
48
+ /**
49
+ * Analyze the entire project for cross-component issues.
50
+ * @param components - All discovered components.
51
+ * @returns Array of project-level issues.
52
+ */
53
+ analyzeProject(components: ComponentMetadata[]): Issue[];
54
+ }
55
+ export type BackendProviderRegistry = Map<HeadlessBackend, BackendProvider>;
56
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/providers/interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAAC;IAClD,iBAAiB,CAAC,CAAC,SAAS,EAAE,kBAAkB,GAAG,iBAAiB,CAAC;CACtE;AAED,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;AAErE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,EAAE,EAAE,eAAe,CAAC;IACpB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE1C;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE5C;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,GAAG,KAAK,EAAE,CAAC;IAExD;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,KAAK,EAAE,CAAC;CAC1D;AAED,MAAM,MAAM,uBAAuB,GAAG,GAAG,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Provider interface for component library integrations.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/providers/interface.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Radix UI backend provider implementation (Agent 1 #2).
3
+ * Marked as deprecated to encourage migration to Base UI.
4
+ */
5
+ import type { BackendProvider } from './interface.js';
6
+ /**
7
+ * Radix UI backend provider.
8
+ * Marked as deprecated - projects should consider migrating to Base UI.
9
+ */
10
+ export declare const radixBackendProvider: BackendProvider;
11
+ //# sourceMappingURL=radix-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-backend.d.ts","sourceRoot":"","sources":["../../src/providers/radix-backend.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AActD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAuGlC,CAAC"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Radix UI backend provider implementation (Agent 1 #2).
3
+ * Marked as deprecated to encourage migration to Base UI.
4
+ */
5
+ /** Import patterns for Radix UI packages. */
6
+ const RADIX_IMPORT_PATTERNS = [
7
+ /^@radix-ui\/react-/,
8
+ /^@radix-ui\/primitive/,
9
+ /^radix-ui$/,
10
+ /^radix-ui\//,
11
+ ];
12
+ /** JSX attribute patterns that indicate Radix UI usage. */
13
+ const RADIX_EVIDENCE_PATTERNS = ['asChild'];
14
+ /**
15
+ * Radix UI backend provider.
16
+ * Marked as deprecated - projects should consider migrating to Base UI.
17
+ */
18
+ export const radixBackendProvider = {
19
+ id: 'radix',
20
+ label: 'Radix UI (Legacy)',
21
+ deprecated: true,
22
+ detectImports(imports) {
23
+ return imports.some((imp) => RADIX_IMPORT_PATTERNS.some((pattern) => pattern.test(imp)));
24
+ },
25
+ detectPatterns(evidence) {
26
+ return evidence.some((e) => RADIX_EVIDENCE_PATTERNS.includes(e));
27
+ },
28
+ analyzeComponent(component) {
29
+ const issues = [];
30
+ // Radix-specific checks
31
+ if (component.backend === 'radix') {
32
+ // Check for asChild usage (common Radix pattern)
33
+ if (component.evidence.includes('asChild')) {
34
+ // This is fine, but note it for migration planning
35
+ issues.push({
36
+ component: component.name,
37
+ category: 'migration',
38
+ severity: 'low',
39
+ message: `Component "${component.name}" uses asChild pattern which needs migration attention.`,
40
+ suggestion: 'When migrating to Base UI, replace asChild with render prop pattern.',
41
+ evidence: ['asChild'],
42
+ });
43
+ }
44
+ // Deprecation warning
45
+ issues.push({
46
+ component: component.name,
47
+ category: 'dependencies',
48
+ severity: 'low',
49
+ message: `Component "${component.name}" uses Radix UI which is considered legacy.`,
50
+ suggestion: 'Consider migrating to Base UI for better long-term support.',
51
+ evidence: component.importSources,
52
+ });
53
+ }
54
+ // Check for mixed usage
55
+ if (component.mixedUsage) {
56
+ issues.push({
57
+ component: component.name,
58
+ category: 'migration',
59
+ severity: 'medium',
60
+ message: `Component "${component.name}" uses both Radix and Base UI. Migration in progress?`,
61
+ suggestion: 'Complete migration to Base UI for consistency.',
62
+ evidence: component.importSources,
63
+ });
64
+ }
65
+ return issues;
66
+ },
67
+ analyzeProject(components) {
68
+ const issues = [];
69
+ const radixComponents = components.filter((c) => c.backend === 'radix');
70
+ const mixedComponents = components.filter((c) => c.mixedUsage);
71
+ // Project-level deprecation warning
72
+ if (radixComponents.length > 0) {
73
+ issues.push({
74
+ category: 'dependencies',
75
+ severity: 'medium',
76
+ message: `${radixComponents.length} component(s) still use Radix UI (deprecated).`,
77
+ suggestion: 'Plan migration to Base UI. Use limps-headless audit for migration guidance.',
78
+ evidence: radixComponents.slice(0, 5).map((c) => c.path),
79
+ });
80
+ }
81
+ // Mixed usage warning
82
+ if (mixedComponents.length > 0) {
83
+ issues.push({
84
+ category: 'migration',
85
+ severity: 'medium',
86
+ message: `${mixedComponents.length} component(s) have mixed Radix/Base usage.`,
87
+ suggestion: 'Complete migration for these components first.',
88
+ evidence: mixedComponents.map((c) => c.path),
89
+ });
90
+ }
91
+ // Migration readiness assessment
92
+ const totalHeadless = components.filter((c) => c.backend !== 'unknown').length;
93
+ if (totalHeadless > 0) {
94
+ const legacyRate = Math.round((radixComponents.length / totalHeadless) * 100);
95
+ if (legacyRate > 50) {
96
+ issues.push({
97
+ category: 'migration',
98
+ severity: 'high',
99
+ message: `${legacyRate}% of headless components still use Radix UI.`,
100
+ suggestion: 'Prioritize migration to reduce technical debt.',
101
+ });
102
+ }
103
+ }
104
+ return issues;
105
+ },
106
+ };
107
+ //# sourceMappingURL=radix-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-backend.js","sourceRoot":"","sources":["../../src/providers/radix-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Radix UI provider implementation.
3
+ */
4
+ import type { ComponentLibraryProvider } from './interface.js';
5
+ export declare const radixProvider: ComponentLibraryProvider;
6
+ //# sourceMappingURL=radix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix.d.ts","sourceRoot":"","sources":["../../src/providers/radix.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAO/D,eAAO,MAAM,aAAa,EAAE,wBAkB3B,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Radix UI provider implementation.
3
+ */
4
+ import { resolvePackage, fetchTypesWithFallback, listPrimitives, } from '../fetcher/index.js';
5
+ export const radixProvider = {
6
+ name: 'radix',
7
+ displayName: 'Radix UI',
8
+ async listPrimitives(version) {
9
+ const primitives = await listPrimitives(version);
10
+ return primitives.map((p) => p.name);
11
+ },
12
+ async resolveVersion(versionHint) {
13
+ const resolved = await resolvePackage('dialog', versionHint);
14
+ return resolved.version;
15
+ },
16
+ async fetchTypes(primitive, version) {
17
+ const content = await fetchTypesWithFallback(primitive, version);
18
+ return content.content;
19
+ },
20
+ };
21
+ //# sourceMappingURL=radix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix.js","sourceRoot":"","sources":["../../src/providers/radix.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,UAAU;IAEvB,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAmB;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,OAAe;QACjD,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;CACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Provider registry for component libraries (Agent 1 #2 - extended with backend providers).
3
+ */
4
+ import type { ComponentLibraryProvider, ProviderRegistry, BackendProvider, BackendProviderRegistry } from './interface.js';
5
+ import type { HeadlessBackend } from '../audit/types.js';
6
+ declare const providers: ProviderRegistry;
7
+ export declare function registerProvider(provider: ComponentLibraryProvider): void;
8
+ export declare function getProviderNames(): string[];
9
+ export declare function getProvider(name: string): ComponentLibraryProvider;
10
+ export { providers };
11
+ declare const backendProviders: BackendProviderRegistry;
12
+ export declare function registerBackendProvider(provider: BackendProvider): void;
13
+ export declare function getBackendProviderIds(): HeadlessBackend[];
14
+ export declare function getBackendProvider(id: HeadlessBackend): BackendProvider | undefined;
15
+ export declare function getAllBackendProviders(): BackendProvider[];
16
+ export { backendProviders };
17
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOzD,QAAA,MAAM,SAAS,EAAE,gBAA4B,CAAC;AAM9C,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAMzE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAQlE;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AAOrB,QAAA,MAAM,gBAAgB,EAAE,uBAAmC,CAAC;AAE5D,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAKvE;AAED,wBAAgB,qBAAqB,IAAI,eAAe,EAAE,CAEzD;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,eAAe,GAAG,eAAe,GAAG,SAAS,CAEnF;AAED,wBAAgB,sBAAsB,IAAI,eAAe,EAAE,CAE1D;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Provider registry for component libraries (Agent 1 #2 - extended with backend providers).
3
+ */
4
+ import { radixProvider } from './radix.js';
5
+ import { radixBackendProvider } from './radix-backend.js';
6
+ import { baseProvider } from './base.js';
7
+ // --- Component Library Providers (for type fetching) ---
8
+ const providers = new Map();
9
+ function normalizeProviderName(name) {
10
+ return name.trim().toLowerCase();
11
+ }
12
+ export function registerProvider(provider) {
13
+ const key = normalizeProviderName(provider.name);
14
+ if (providers.has(key)) {
15
+ throw new Error(`Provider "${provider.name}" is already registered`);
16
+ }
17
+ providers.set(key, provider);
18
+ }
19
+ export function getProviderNames() {
20
+ return [...providers.keys()];
21
+ }
22
+ export function getProvider(name) {
23
+ const key = normalizeProviderName(name);
24
+ const provider = providers.get(key);
25
+ if (!provider) {
26
+ const available = getProviderNames().length > 0 ? getProviderNames().join(', ') : 'none';
27
+ throw new Error(`Provider "${name}" is not registered. Available: ${available}`);
28
+ }
29
+ return provider;
30
+ }
31
+ export { providers };
32
+ // Register component library providers
33
+ registerProvider(radixProvider);
34
+ // --- Backend Providers (for detection and analysis) ---
35
+ const backendProviders = new Map();
36
+ export function registerBackendProvider(provider) {
37
+ if (backendProviders.has(provider.id)) {
38
+ throw new Error(`Backend provider "${provider.id}" is already registered`);
39
+ }
40
+ backendProviders.set(provider.id, provider);
41
+ }
42
+ export function getBackendProviderIds() {
43
+ return [...backendProviders.keys()];
44
+ }
45
+ export function getBackendProvider(id) {
46
+ return backendProviders.get(id);
47
+ }
48
+ export function getAllBackendProviders() {
49
+ return [...backendProviders.values()];
50
+ }
51
+ export { backendProviders };
52
+ // Register backend providers
53
+ registerBackendProvider(radixBackendProvider);
54
+ registerBackendProvider(baseProvider);
55
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,0DAA0D;AAE1D,MAAM,SAAS,GAAqB,IAAI,GAAG,EAAE,CAAC;AAE9C,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAkC;IACjE,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,yBAAyB,CAAC,CAAC;IACvE,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,mCAAmC,SAAS,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,uCAAuC;AACvC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAEhC,yDAAyD;AAEzD,MAAM,gBAAgB,GAA4B,IAAI,GAAG,EAAE,CAAC;AAE5D,MAAM,UAAU,uBAAuB,CAAC,QAAyB;IAC/D,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,EAAE,yBAAyB,CAAC,CAAC;IAC7E,CAAC;IACD,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAmB;IACpD,OAAO,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,6BAA6B;AAC7B,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;AAC9C,uBAAuB,CAAC,YAAY,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ComponentIR } from '../analysis/ir/types.js';
2
+ import type { EvaluationResult, Ruleset } from './types.js';
3
+ export declare function evaluateRuleset(ir: ComponentIR, ruleset: Ruleset): EvaluationResult;
4
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/rules/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAa,OAAO,EAAE,MAAM,YAAY,CAAC;AAGvE,wBAAgB,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAsCnF"}