@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,25 @@
1
+ /**
2
+ * Contract differ module for detecting changes between Radix versions.
3
+ */
4
+ import type { RadixChange, RadixDiff } from './types.js';
5
+ export * from './types.js';
6
+ export { diffContracts, diffProps, diffSubComponents } from './props.js';
7
+ export { getSeverity, isBreaking, isWarning, isInfo, getBreakingTypes, sortBySeverity, } from './severity.js';
8
+ export { generateHint, generateDescription } from './hints.js';
9
+ export { parseUnionMembers, isNarrowing, isWidening } from './props.js';
10
+ /**
11
+ * Diff a single primitive between two versions.
12
+ */
13
+ export declare function diffPrimitive(primitiveSlug: string, fromVersion: string, toVersion: string): Promise<RadixChange[]>;
14
+ /**
15
+ * Diff all primitives (or a subset) between two Radix versions.
16
+ * Version resolution (fromVersion/toVersion) is based on the first primitive
17
+ * in the list; all primitives are assumed to share the same Radix version.
18
+ *
19
+ * @param fromVersion - Starting version
20
+ * @param toVersion - Ending version (default: 'latest')
21
+ * @param primitives - Optional list of primitives to diff (default: all)
22
+ * @returns RadixDiff with all changes and summary
23
+ */
24
+ export declare function diffVersions(fromVersion: string, toVersion?: string, primitives?: string[]): Promise<RadixDiff>;
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/differ/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAYtE,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EACL,WAAW,EACX,UAAU,EACV,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAyDxE;;GAEG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,EAAE,CAAC,CAOxB;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAiB,EAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,SAAS,CAAC,CAgDpB"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Contract differ module for detecting changes between Radix versions.
3
+ */
4
+ import { diffContracts } from './props.js';
5
+ import { sortBySeverity } from './severity.js';
6
+ import { resolvePackage, fetchTypesWithFallback, } from '../fetcher/index.js';
7
+ import { extractPrimitive } from '../extractor/index.js';
8
+ import { getFromCache, saveToCache } from '../cache/index.js';
9
+ import { listPrimitives } from '../fetcher/npm-registry.js';
10
+ // Re-export types and utilities
11
+ export * from './types.js';
12
+ export { diffContracts, diffProps, diffSubComponents } from './props.js';
13
+ export { getSeverity, isBreaking, isWarning, isInfo, getBreakingTypes, sortBySeverity, } from './severity.js';
14
+ export { generateHint, generateDescription } from './hints.js';
15
+ export { parseUnionMembers, isNarrowing, isWidening } from './props.js';
16
+ /**
17
+ * Convert primitive name to PascalCase.
18
+ */
19
+ function toPascalCase(name) {
20
+ return name
21
+ .split('-')
22
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
23
+ .join('');
24
+ }
25
+ /**
26
+ * Calculate summary counts from changes.
27
+ */
28
+ function calculateSummary(changes) {
29
+ return {
30
+ totalChanges: changes.length,
31
+ breaking: changes.filter((c) => c.severity === 'breaking').length,
32
+ warnings: changes.filter((c) => c.severity === 'warning').length,
33
+ info: changes.filter((c) => c.severity === 'info').length,
34
+ };
35
+ }
36
+ /**
37
+ * Fetch or load extracted primitive data for a given version.
38
+ */
39
+ async function getExtractedPrimitive(primitiveSlug, version) {
40
+ const primitiveName = toPascalCase(primitiveSlug);
41
+ // Try cache first
42
+ const cached = await getFromCache(primitiveName, version, {
43
+ ignoreExpired: true, // For diffing, we want any cached version
44
+ });
45
+ if (cached) {
46
+ return cached;
47
+ }
48
+ // Fetch and extract
49
+ const resolved = await resolvePackage(primitiveSlug, version);
50
+ const content = await fetchTypesWithFallback(primitiveSlug, version);
51
+ const extracted = extractPrimitive(content.content, primitiveName, resolved.version, content.resolved.packageName);
52
+ // Save to cache
53
+ await saveToCache(primitiveName, resolved.version, extracted);
54
+ return extracted;
55
+ }
56
+ /**
57
+ * Diff a single primitive between two versions.
58
+ */
59
+ export async function diffPrimitive(primitiveSlug, fromVersion, toVersion) {
60
+ const [before, after] = await Promise.all([
61
+ getExtractedPrimitive(primitiveSlug, fromVersion),
62
+ getExtractedPrimitive(primitiveSlug, toVersion),
63
+ ]);
64
+ return diffContracts(before, after);
65
+ }
66
+ /**
67
+ * Diff all primitives (or a subset) between two Radix versions.
68
+ * Version resolution (fromVersion/toVersion) is based on the first primitive
69
+ * in the list; all primitives are assumed to share the same Radix version.
70
+ *
71
+ * @param fromVersion - Starting version
72
+ * @param toVersion - Ending version (default: 'latest')
73
+ * @param primitives - Optional list of primitives to diff (default: all)
74
+ * @returns RadixDiff with all changes and summary
75
+ */
76
+ export async function diffVersions(fromVersion, toVersion = 'latest', primitives) {
77
+ // Get list of primitives to diff
78
+ let primitivesToDiff;
79
+ if (primitives && primitives.length > 0) {
80
+ primitivesToDiff = primitives.map((p) => p.toLowerCase());
81
+ }
82
+ else {
83
+ const allPrimitives = await listPrimitives();
84
+ primitivesToDiff = allPrimitives.map((p) => p.name);
85
+ }
86
+ if (primitivesToDiff.length === 0) {
87
+ throw new Error('No primitives to diff (list is empty)');
88
+ }
89
+ // Resolve actual versions (using first primitive as reference)
90
+ const resolvedFrom = await resolvePackage(primitivesToDiff[0], fromVersion);
91
+ const resolvedTo = await resolvePackage(primitivesToDiff[0], toVersion);
92
+ // Diff each primitive
93
+ const allChanges = [];
94
+ for (const primitiveSlug of primitivesToDiff) {
95
+ try {
96
+ const changes = await diffPrimitive(primitiveSlug, resolvedFrom.version, resolvedTo.version);
97
+ allChanges.push(...changes);
98
+ }
99
+ catch (error) {
100
+ // Skip primitives that fail (might not exist in one version)
101
+ console.warn(`Failed to diff ${primitiveSlug}: ${error instanceof Error ? error.message : 'Unknown error'}`);
102
+ }
103
+ }
104
+ // Sort and calculate summary
105
+ const sortedChanges = sortBySeverity(allChanges);
106
+ const summary = calculateSummary(sortedChanges);
107
+ return {
108
+ fromVersion: resolvedFrom.version,
109
+ toVersion: resolvedTo.version,
110
+ hasBreakingChanges: summary.breaking > 0,
111
+ summary,
112
+ changes: sortedChanges,
113
+ };
114
+ }
115
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/differ/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Props diffing logic for detecting changes between contract versions.
3
+ */
4
+ import type { ExtractedPrimitive, PropDefinition, SubComponentDefinition } from '../types/index.js';
5
+ import type { RadixChange } from './types.js';
6
+ /**
7
+ * Parse a union type string into its member types.
8
+ * @example 'string | number' -> ['string', 'number']
9
+ * @example '"left" | "right" | "center"' -> ['"left"', '"right"', '"center"']
10
+ */
11
+ export declare function parseUnionMembers(typeString: string): string[];
12
+ /**
13
+ * Check if a type change represents narrowing (breaking).
14
+ * Narrowing occurs when the new type accepts fewer values than before.
15
+ * @example 'string | number' -> 'string' is narrowing
16
+ */
17
+ export declare function isNarrowing(before: string, after: string): boolean;
18
+ /**
19
+ * Check if a type change represents widening (safe/info).
20
+ * Widening occurs when the new type accepts more values than before.
21
+ * @example 'string' -> 'string | number' is widening
22
+ */
23
+ export declare function isWidening(before: string, after: string): boolean;
24
+ /**
25
+ * Diff props between two arrays of PropDefinitions.
26
+ */
27
+ export declare function diffProps(before: PropDefinition[], after: PropDefinition[], primitive: string, subComponent?: string): RadixChange[];
28
+ /**
29
+ * Diff sub-components between two ExtractedPrimitives.
30
+ */
31
+ export declare function diffSubComponents(before: SubComponentDefinition[], after: SubComponentDefinition[], primitive: string): RadixChange[];
32
+ /**
33
+ * Diff two ExtractedPrimitive objects to find all changes.
34
+ */
35
+ export declare function diffContracts(before: ExtractedPrimitive, after: ExtractedPrimitive): RadixChange[];
36
+ //# sourceMappingURL=props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/differ/props.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAI1D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAyC9D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAmBlE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAejE;AAqCD;;GAEG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,cAAc,EAAE,EACxB,KAAK,EAAE,cAAc,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,WAAW,EAAE,CAqHf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,sBAAsB,EAAE,EAChC,KAAK,EAAE,sBAAsB,EAAE,EAC/B,SAAS,EAAE,MAAM,GAChB,WAAW,EAAE,CAkCf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,kBAAkB,GACxB,WAAW,EAAE,CAiBf"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Props diffing logic for detecting changes between contract versions.
3
+ */
4
+ import { getSeverity } from './severity.js';
5
+ import { generateHint, generateDescription } from './hints.js';
6
+ /**
7
+ * Parse a union type string into its member types.
8
+ * @example 'string | number' -> ['string', 'number']
9
+ * @example '"left" | "right" | "center"' -> ['"left"', '"right"', '"center"']
10
+ */
11
+ export function parseUnionMembers(typeString) {
12
+ // Handle simple cases first
13
+ if (!typeString.includes('|')) {
14
+ return [typeString.trim()];
15
+ }
16
+ // Split by | but respect nested types (generics, parentheses)
17
+ const members = [];
18
+ let current = '';
19
+ let depth = 0;
20
+ let prevChar = '';
21
+ for (const char of typeString) {
22
+ if (char === '<' || char === '(' || char === '{' || char === '[') {
23
+ depth++;
24
+ current += char;
25
+ }
26
+ else if (char === ')' || char === '}' || char === ']') {
27
+ depth--;
28
+ current += char;
29
+ }
30
+ else if (char === '>') {
31
+ // Only treat '>' as a closing bracket if it's not part of '=>' (arrow function)
32
+ if (prevChar !== '=') {
33
+ depth--;
34
+ }
35
+ current += char;
36
+ }
37
+ else if (char === '|' && depth === 0) {
38
+ if (current.trim()) {
39
+ members.push(current.trim());
40
+ }
41
+ current = '';
42
+ }
43
+ else {
44
+ current += char;
45
+ }
46
+ prevChar = char;
47
+ }
48
+ if (current.trim()) {
49
+ members.push(current.trim());
50
+ }
51
+ return members;
52
+ }
53
+ /**
54
+ * Check if a type change represents narrowing (breaking).
55
+ * Narrowing occurs when the new type accepts fewer values than before.
56
+ * @example 'string | number' -> 'string' is narrowing
57
+ */
58
+ export function isNarrowing(before, after) {
59
+ const beforeMembers = parseUnionMembers(before);
60
+ const afterMembers = parseUnionMembers(after);
61
+ // If same members, not narrowing
62
+ if (beforeMembers.length === afterMembers.length) {
63
+ const beforeSet = new Set(beforeMembers);
64
+ const afterSet = new Set(afterMembers);
65
+ if ([...afterSet].every((m) => beforeSet.has(m))) {
66
+ return false;
67
+ }
68
+ }
69
+ // Narrowing: all after members exist in before, and fewer members
70
+ const beforeSet = new Set(beforeMembers);
71
+ return (afterMembers.every((m) => beforeSet.has(m)) &&
72
+ afterMembers.length < beforeMembers.length);
73
+ }
74
+ /**
75
+ * Check if a type change represents widening (safe/info).
76
+ * Widening occurs when the new type accepts more values than before.
77
+ * @example 'string' -> 'string | number' is widening
78
+ */
79
+ export function isWidening(before, after) {
80
+ const beforeMembers = parseUnionMembers(before);
81
+ const afterMembers = parseUnionMembers(after);
82
+ // If same members, not widening
83
+ if (beforeMembers.length === afterMembers.length) {
84
+ return false;
85
+ }
86
+ // Widening: all before members exist in after, and more members
87
+ const afterSet = new Set(afterMembers);
88
+ return (beforeMembers.every((m) => afterSet.has(m)) &&
89
+ afterMembers.length > beforeMembers.length);
90
+ }
91
+ /**
92
+ * Normalize a type string for comparison.
93
+ */
94
+ function normalizeType(type) {
95
+ return type
96
+ .replace(/\s+/g, ' ')
97
+ .replace(/\s*\|\s*/g, ' | ')
98
+ .trim();
99
+ }
100
+ /**
101
+ * Create a RadixChange object.
102
+ */
103
+ function createChange(type, target, primitive, before, after, subComponent) {
104
+ const context = { target, before, after, primitive, subComponent };
105
+ return {
106
+ type,
107
+ severity: getSeverity(type),
108
+ primitive,
109
+ subComponent,
110
+ target,
111
+ before,
112
+ after,
113
+ description: generateDescription(type, context),
114
+ migration: generateHint(type, context),
115
+ };
116
+ }
117
+ /**
118
+ * Diff props between two arrays of PropDefinitions.
119
+ */
120
+ export function diffProps(before, after, primitive, subComponent) {
121
+ const changes = [];
122
+ const beforeMap = new Map(before.map((p) => [p.name, p]));
123
+ const afterMap = new Map(after.map((p) => [p.name, p]));
124
+ // Check for removed props
125
+ for (const [name, beforeProp] of beforeMap) {
126
+ if (!afterMap.has(name)) {
127
+ changes.push(createChange('prop_removed', name, primitive, beforeProp.type, null, subComponent));
128
+ }
129
+ }
130
+ // Check for added props
131
+ for (const [name, afterProp] of afterMap) {
132
+ if (!beforeMap.has(name)) {
133
+ changes.push(createChange('prop_added', name, primitive, null, afterProp.type, subComponent));
134
+ }
135
+ }
136
+ // Check for changed props
137
+ for (const [name, beforeProp] of beforeMap) {
138
+ const afterProp = afterMap.get(name);
139
+ if (!afterProp)
140
+ continue;
141
+ // Check for required change (optional -> required is breaking)
142
+ if (!beforeProp.required && afterProp.required) {
143
+ changes.push(createChange('prop_required', name, primitive, 'optional', 'required', subComponent));
144
+ }
145
+ // Check for type changes
146
+ const beforeType = normalizeType(beforeProp.type);
147
+ const afterType = normalizeType(afterProp.type);
148
+ if (beforeType !== afterType) {
149
+ if (isNarrowing(beforeType, afterType)) {
150
+ changes.push(createChange('type_narrowed', name, primitive, beforeType, afterType, subComponent));
151
+ }
152
+ else if (isWidening(beforeType, afterType)) {
153
+ changes.push(createChange('type_widened', name, primitive, beforeType, afterType, subComponent));
154
+ }
155
+ else {
156
+ changes.push(createChange('type_changed', name, primitive, beforeType, afterType, subComponent));
157
+ }
158
+ }
159
+ // Check for default value changes
160
+ if (beforeProp.defaultValue !== afterProp.defaultValue &&
161
+ (beforeProp.defaultValue || afterProp.defaultValue)) {
162
+ changes.push(createChange('default_changed', name, primitive, beforeProp.defaultValue ?? 'undefined', afterProp.defaultValue ?? 'undefined', subComponent));
163
+ }
164
+ }
165
+ return changes;
166
+ }
167
+ /**
168
+ * Diff sub-components between two ExtractedPrimitives.
169
+ */
170
+ export function diffSubComponents(before, after, primitive) {
171
+ const changes = [];
172
+ const beforeMap = new Map(before.map((sc) => [sc.name, sc]));
173
+ const afterMap = new Map(after.map((sc) => [sc.name, sc]));
174
+ // Check for removed sub-components
175
+ for (const [name] of beforeMap) {
176
+ if (!afterMap.has(name)) {
177
+ changes.push(createChange('subcomponent_removed', name, primitive, name, null));
178
+ }
179
+ }
180
+ // Check for added sub-components
181
+ for (const [name] of afterMap) {
182
+ if (!beforeMap.has(name)) {
183
+ changes.push(createChange('subcomponent_added', name, primitive, null, name));
184
+ }
185
+ }
186
+ // Check props within each sub-component
187
+ for (const [name, beforeSc] of beforeMap) {
188
+ const afterSc = afterMap.get(name);
189
+ if (!afterSc)
190
+ continue;
191
+ const propChanges = diffProps(beforeSc.props, afterSc.props, primitive, name);
192
+ changes.push(...propChanges);
193
+ }
194
+ return changes;
195
+ }
196
+ /**
197
+ * Diff two ExtractedPrimitive objects to find all changes.
198
+ */
199
+ export function diffContracts(before, after) {
200
+ const changes = [];
201
+ const primitive = before.name;
202
+ // Diff root props
203
+ const rootChanges = diffProps(before.rootProps, after.rootProps, primitive, 'Root');
204
+ changes.push(...rootChanges);
205
+ // Diff sub-components
206
+ const subComponentChanges = diffSubComponents(before.subComponents, after.subComponents, primitive);
207
+ changes.push(...subComponentChanges);
208
+ return changes;
209
+ }
210
+ //# sourceMappingURL=props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.js","sourceRoot":"","sources":["../../src/differ/props.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Severity classification for contract changes.
3
+ */
4
+ import type { ChangeType, ChangeSeverity } from './types.js';
5
+ /**
6
+ * Get the severity level for a change type.
7
+ */
8
+ export declare function getSeverity(changeType: ChangeType): ChangeSeverity;
9
+ /**
10
+ * Check if a change type is breaking.
11
+ */
12
+ export declare function isBreaking(changeType: ChangeType): boolean;
13
+ /**
14
+ * Check if a change type is a warning.
15
+ */
16
+ export declare function isWarning(changeType: ChangeType): boolean;
17
+ /**
18
+ * Check if a change type is informational.
19
+ */
20
+ export declare function isInfo(changeType: ChangeType): boolean;
21
+ /**
22
+ * Get all breaking change types.
23
+ */
24
+ export declare function getBreakingTypes(): ChangeType[];
25
+ /**
26
+ * Sort changes by severity (breaking first, then warning, then info).
27
+ */
28
+ export declare function sortBySeverity<T extends {
29
+ severity: ChangeSeverity;
30
+ }>(changes: T[]): T[];
31
+ //# sourceMappingURL=severity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"severity.d.ts","sourceRoot":"","sources":["../../src/differ/severity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAuB7D;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CAElE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,EAAE,CAI/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,cAAc,CAAA;CAAE,EACnE,OAAO,EAAE,CAAC,EAAE,GACX,CAAC,EAAE,CAUL"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Severity classification for contract changes.
3
+ */
4
+ /**
5
+ * Map change types to their severity levels.
6
+ */
7
+ const SEVERITY_MAP = {
8
+ // Breaking changes - will break existing code
9
+ prop_removed: 'breaking',
10
+ prop_required: 'breaking',
11
+ subcomponent_removed: 'breaking',
12
+ type_narrowed: 'breaking',
13
+ // Warning changes - might cause issues
14
+ prop_deprecated: 'warning',
15
+ type_changed: 'warning',
16
+ default_changed: 'warning',
17
+ // Info changes - additive, safe
18
+ prop_added: 'info',
19
+ subcomponent_added: 'info',
20
+ type_widened: 'info',
21
+ };
22
+ /**
23
+ * Get the severity level for a change type.
24
+ */
25
+ export function getSeverity(changeType) {
26
+ return SEVERITY_MAP[changeType];
27
+ }
28
+ /**
29
+ * Check if a change type is breaking.
30
+ */
31
+ export function isBreaking(changeType) {
32
+ return SEVERITY_MAP[changeType] === 'breaking';
33
+ }
34
+ /**
35
+ * Check if a change type is a warning.
36
+ */
37
+ export function isWarning(changeType) {
38
+ return SEVERITY_MAP[changeType] === 'warning';
39
+ }
40
+ /**
41
+ * Check if a change type is informational.
42
+ */
43
+ export function isInfo(changeType) {
44
+ return SEVERITY_MAP[changeType] === 'info';
45
+ }
46
+ /**
47
+ * Get all breaking change types.
48
+ */
49
+ export function getBreakingTypes() {
50
+ return Object.entries(SEVERITY_MAP)
51
+ .filter(([, severity]) => severity === 'breaking')
52
+ .map(([type]) => type);
53
+ }
54
+ /**
55
+ * Sort changes by severity (breaking first, then warning, then info).
56
+ */
57
+ export function sortBySeverity(changes) {
58
+ const severityOrder = {
59
+ breaking: 0,
60
+ warning: 1,
61
+ info: 2,
62
+ };
63
+ return [...changes].sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity]);
64
+ }
65
+ //# sourceMappingURL=severity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"severity.js","sourceRoot":"","sources":["../../src/differ/severity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,YAAY,GAAuC;IACvD,8CAA8C;IAC9C,YAAY,EAAE,UAAU;IACxB,aAAa,EAAE,UAAU;IACzB,oBAAoB,EAAE,UAAU;IAChC,aAAa,EAAE,UAAU;IAEzB,uCAAuC;IACvC,eAAe,EAAE,SAAS;IAC1B,YAAY,EAAE,SAAS;IACvB,eAAe,EAAE,SAAS;IAE1B,gCAAgC;IAChC,UAAU,EAAE,MAAM;IAClB,kBAAkB,EAAE,MAAM;IAC1B,YAAY,EAAE,MAAM;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,UAAsB;IAChD,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,UAAsB;IAC/C,OAAO,YAAY,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,UAAsB;IAC9C,OAAO,YAAY,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,UAAsB;IAC3C,OAAO,YAAY,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,KAAK,UAAU,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAkB,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAY;IAEZ,MAAM,aAAa,GAAmC;QACpD,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;KACR,CAAC;IAEF,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAChE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Type definitions for the Radix contract differ.
3
+ */
4
+ /**
5
+ * Severity levels for contract changes.
6
+ */
7
+ export type ChangeSeverity = 'breaking' | 'warning' | 'info';
8
+ /**
9
+ * Types of changes that can occur in a contract.
10
+ */
11
+ export type ChangeType = 'prop_removed' | 'prop_required' | 'subcomponent_removed' | 'type_narrowed' | 'prop_deprecated' | 'type_changed' | 'default_changed' | 'prop_added' | 'subcomponent_added' | 'type_widened';
12
+ /**
13
+ * A single change detected between two contract versions.
14
+ */
15
+ export interface RadixChange {
16
+ /**
17
+ * The type of change detected.
18
+ */
19
+ type: ChangeType;
20
+ /**
21
+ * Severity classification of the change.
22
+ */
23
+ severity: ChangeSeverity;
24
+ /**
25
+ * The primitive this change affects.
26
+ */
27
+ primitive: string;
28
+ /**
29
+ * The sub-component this change affects (e.g., "Content", "Trigger").
30
+ * Undefined for root-level changes.
31
+ */
32
+ subComponent?: string;
33
+ /**
34
+ * The target of the change (prop name, subcomponent name, etc.).
35
+ */
36
+ target: string;
37
+ /**
38
+ * The value/type before the change. Null for additions.
39
+ */
40
+ before: string | null;
41
+ /**
42
+ * The value/type after the change. Null for removals.
43
+ */
44
+ after: string | null;
45
+ /**
46
+ * Human-readable description of the change.
47
+ */
48
+ description: string;
49
+ /**
50
+ * Migration hint for addressing the change.
51
+ */
52
+ migration?: string;
53
+ }
54
+ /**
55
+ * Summary counts for a diff operation.
56
+ */
57
+ export interface DiffSummary {
58
+ totalChanges: number;
59
+ breaking: number;
60
+ warnings: number;
61
+ info: number;
62
+ }
63
+ /**
64
+ * Result of diffing two Radix versions.
65
+ */
66
+ export interface RadixDiff {
67
+ /**
68
+ * The starting version.
69
+ */
70
+ fromVersion: string;
71
+ /**
72
+ * The ending version.
73
+ */
74
+ toVersion: string;
75
+ /**
76
+ * Whether any breaking changes were detected.
77
+ */
78
+ hasBreakingChanges: boolean;
79
+ /**
80
+ * Summary counts by severity.
81
+ */
82
+ summary: DiffSummary;
83
+ /**
84
+ * All detected changes.
85
+ */
86
+ changes: RadixChange[];
87
+ }
88
+ /**
89
+ * Result of checking for updates.
90
+ */
91
+ export interface UpdateCheckResult {
92
+ /**
93
+ * The currently cached/used version.
94
+ */
95
+ currentVersion: string;
96
+ /**
97
+ * The latest available version.
98
+ */
99
+ latestVersion: string;
100
+ /**
101
+ * Whether an update is available.
102
+ */
103
+ hasUpdate: boolean;
104
+ /**
105
+ * Diff details if an update is available.
106
+ */
107
+ diff?: RadixDiff;
108
+ }
109
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/differ/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,UAAU,GAElB,cAAc,GACd,eAAe,GACf,sBAAsB,GACtB,eAAe,GAGf,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GAGjB,YAAY,GACZ,oBAAoB,GACpB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,OAAO,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for the Radix contract differ.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/differ/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}