@codefast/cli 0.3.13-canary.0 → 0.3.13-canary.2

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 (390) hide show
  1. package/dist/bin.d.ts +3 -0
  2. package/dist/bin.d.ts.map +1 -0
  3. package/dist/{bin.mjs → bin.js} +1 -4
  4. package/dist/commands/arrange.d.ts +3 -0
  5. package/dist/commands/arrange.d.ts.map +1 -0
  6. package/dist/commands/arrange.js +129 -0
  7. package/dist/commands/mirror.d.ts +4 -0
  8. package/dist/commands/mirror.d.ts.map +1 -0
  9. package/dist/commands/mirror.js +75 -0
  10. package/dist/commands/tag.d.ts +3 -0
  11. package/dist/commands/tag.d.ts.map +1 -0
  12. package/dist/commands/tag.js +41 -0
  13. package/dist/lib/arrange/application/analyze.d.ts +17 -0
  14. package/dist/lib/arrange/application/analyze.d.ts.map +1 -0
  15. package/dist/lib/arrange/application/analyze.js +24 -0
  16. package/dist/lib/arrange/application/group-file-preview.d.ts +17 -0
  17. package/dist/lib/arrange/application/group-file-preview.d.ts.map +1 -0
  18. package/dist/lib/arrange/application/group-file-preview.js +46 -0
  19. package/dist/lib/arrange/application/group-file.d.ts +5 -0
  20. package/dist/lib/arrange/application/group-file.d.ts.map +1 -0
  21. package/dist/lib/arrange/application/group-file.js +40 -0
  22. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts +5 -0
  23. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts.map +1 -0
  24. package/dist/lib/arrange/application/ports/file-walker.port.d.ts +5 -0
  25. package/dist/lib/arrange/application/ports/file-walker.port.d.ts.map +1 -0
  26. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts +6 -0
  27. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts.map +1 -0
  28. package/dist/lib/arrange/application/requests/analyze-directory.request.js +4 -0
  29. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts +18 -0
  30. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts.map +1 -0
  31. package/dist/lib/arrange/application/requests/arrange-sync.request.js +15 -0
  32. package/dist/lib/arrange/application/run-target.d.ts +19 -0
  33. package/dist/lib/arrange/application/run-target.d.ts.map +1 -0
  34. package/dist/lib/arrange/application/run-target.js +85 -0
  35. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts +12 -0
  36. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts.map +1 -0
  37. package/dist/lib/arrange/domain/arrange-analyze.service.js +116 -0
  38. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts +53 -0
  39. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts.map +1 -0
  40. package/dist/lib/arrange/domain/arrange-grouping.service.js +106 -0
  41. package/dist/lib/arrange/domain/ast/ast-helpers.d.ts +28 -0
  42. package/dist/lib/arrange/domain/ast/ast-helpers.d.ts.map +1 -0
  43. package/dist/lib/arrange/domain/ast/ast-helpers.js +130 -0
  44. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts +179 -0
  45. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts.map +1 -0
  46. package/dist/lib/arrange/domain/ast/ast-node.model.js +210 -0
  47. package/dist/lib/arrange/domain/ast/collectors-cn.d.ts +7 -0
  48. package/dist/lib/arrange/domain/ast/collectors-cn.d.ts.map +1 -0
  49. package/dist/lib/arrange/domain/ast/collectors-cn.js +70 -0
  50. package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts +4 -0
  51. package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts.map +1 -0
  52. package/dist/lib/arrange/domain/ast/collectors-jsx.js +21 -0
  53. package/dist/lib/arrange/domain/ast/collectors-tv.d.ts +13 -0
  54. package/dist/lib/arrange/domain/ast/collectors-tv.d.ts.map +1 -0
  55. package/dist/lib/arrange/domain/ast/collectors-tv.js +302 -0
  56. package/dist/lib/arrange/domain/ast/targets.d.ts +8 -0
  57. package/dist/lib/arrange/domain/ast/targets.d.ts.map +1 -0
  58. package/dist/lib/arrange/domain/ast/targets.js +147 -0
  59. package/dist/lib/arrange/domain/constants.d.ts +68 -0
  60. package/dist/lib/arrange/domain/constants.d.ts.map +1 -0
  61. package/dist/lib/arrange/domain/constants.js +180 -0
  62. package/dist/lib/arrange/domain/errors.d.ts +14 -0
  63. package/dist/lib/arrange/domain/errors.d.ts.map +1 -0
  64. package/dist/lib/arrange/domain/errors.js +16 -0
  65. package/dist/lib/arrange/domain/grouping.d.ts +41 -0
  66. package/dist/lib/arrange/domain/grouping.d.ts.map +1 -0
  67. package/dist/lib/arrange/domain/grouping.js +307 -0
  68. package/dist/lib/arrange/domain/imports.d.ts +7 -0
  69. package/dist/lib/arrange/domain/imports.d.ts.map +1 -0
  70. package/dist/lib/arrange/domain/imports.js +80 -0
  71. package/dist/lib/arrange/domain/source-text-formatters.d.ts +16 -0
  72. package/dist/lib/arrange/domain/source-text-formatters.d.ts.map +1 -0
  73. package/dist/lib/arrange/domain/source-text-formatters.js +55 -0
  74. package/dist/lib/arrange/domain/tokenizer.d.ts +45 -0
  75. package/dist/lib/arrange/domain/tokenizer.d.ts.map +1 -0
  76. package/dist/lib/arrange/domain/tokenizer.js +466 -0
  77. package/dist/lib/arrange/domain/types.d.ts +112 -0
  78. package/dist/lib/arrange/domain/types.d.ts.map +1 -0
  79. package/dist/lib/arrange/domain/types.js +7 -0
  80. package/dist/lib/arrange/index.d.ts +45 -0
  81. package/dist/lib/arrange/index.d.ts.map +1 -0
  82. package/dist/lib/arrange/index.js +41 -0
  83. package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts +14 -0
  84. package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts.map +1 -0
  85. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts +11 -0
  86. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts.map +1 -0
  87. package/dist/lib/arrange/infra/domain-source-parser.adapter.js +19 -0
  88. package/dist/lib/arrange/infra/ensure-cn-import.d.ts +3 -0
  89. package/dist/lib/arrange/infra/ensure-cn-import.d.ts.map +1 -0
  90. package/dist/lib/arrange/infra/ensure-cn-import.js +6 -0
  91. package/dist/lib/arrange/infra/file-walker.adapter.d.ts +8 -0
  92. package/dist/lib/arrange/infra/file-walker.adapter.d.ts.map +1 -0
  93. package/dist/lib/arrange/infra/file-walker.adapter.js +17 -0
  94. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts +8 -0
  95. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts.map +1 -0
  96. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.js +25 -0
  97. package/dist/lib/arrange/infra/ts-ast-translator.d.ts +10 -0
  98. package/dist/lib/arrange/infra/ts-ast-translator.d.ts.map +1 -0
  99. package/dist/lib/arrange/infra/ts-ast-translator.js +363 -0
  100. package/dist/lib/arrange/presentation/formatters.d.ts +3 -0
  101. package/dist/lib/arrange/presentation/formatters.d.ts.map +1 -0
  102. package/dist/lib/arrange/presentation/formatters.js +2 -0
  103. package/dist/lib/arrange/presentation/report.d.ts +4 -0
  104. package/dist/lib/arrange/presentation/report.d.ts.map +1 -0
  105. package/dist/lib/arrange/presentation/report.js +37 -0
  106. package/dist/lib/config/domain/schema.d.ts +50 -0
  107. package/dist/lib/config/domain/schema.d.ts.map +1 -0
  108. package/dist/lib/config/domain/schema.js +43 -0
  109. package/dist/lib/config/index.d.ts +4 -0
  110. package/dist/lib/config/index.d.ts.map +1 -0
  111. package/dist/lib/config/index.js +2 -0
  112. package/dist/lib/config/infra/loader.d.ts +11 -0
  113. package/dist/lib/config/infra/loader.d.ts.map +1 -0
  114. package/dist/lib/config/infra/loader.js +90 -0
  115. package/dist/lib/core/application/architecture-boundaries.d.ts +19 -0
  116. package/dist/lib/core/application/architecture-boundaries.d.ts.map +1 -0
  117. package/dist/lib/core/application/architecture-boundaries.js +263 -0
  118. package/dist/lib/core/application/ports/cli-io.port.d.ts +27 -0
  119. package/dist/lib/core/application/ports/cli-io.port.d.ts.map +1 -0
  120. package/dist/lib/core/application/schema-parse.d.ts +8 -0
  121. package/dist/lib/core/application/schema-parse.d.ts.map +1 -0
  122. package/dist/lib/core/application/schema-parse.js +20 -0
  123. package/dist/lib/core/application/utils/caught-unknown-message.d.ts +6 -0
  124. package/dist/lib/core/application/utils/caught-unknown-message.d.ts.map +1 -0
  125. package/dist/lib/core/application/utils/caught-unknown-message.js +34 -0
  126. package/dist/lib/core/application/utils/verbose-diagnostics.d.ts +5 -0
  127. package/dist/lib/core/application/utils/verbose-diagnostics.d.ts.map +1 -0
  128. package/dist/lib/core/application/utils/verbose-diagnostics.js +7 -0
  129. package/dist/lib/core/domain/errors.d.ts +11 -0
  130. package/dist/lib/core/domain/errors.d.ts.map +1 -0
  131. package/dist/lib/core/domain/errors.js +9 -0
  132. package/dist/lib/core/domain/result.d.ts +15 -0
  133. package/dist/lib/core/domain/result.d.ts.map +1 -0
  134. package/dist/lib/core/domain/result.js +9 -0
  135. package/dist/lib/core/infra/container.d.ts +34 -0
  136. package/dist/lib/core/infra/container.d.ts.map +1 -0
  137. package/dist/lib/core/infra/container.js +65 -0
  138. package/dist/lib/core/infra/logging-decorator.d.ts +12 -0
  139. package/dist/lib/core/infra/logging-decorator.d.ts.map +1 -0
  140. package/dist/lib/core/infra/logging-decorator.js +75 -0
  141. package/dist/lib/core/presentation/cli-executor.d.ts +33 -0
  142. package/dist/lib/core/presentation/cli-executor.d.ts.map +1 -0
  143. package/dist/lib/core/presentation/cli-executor.js +73 -0
  144. package/dist/lib/core/presentation/create-command-handler.d.ts +20 -0
  145. package/dist/lib/core/presentation/create-command-handler.d.ts.map +1 -0
  146. package/dist/lib/core/presentation/create-command-handler.js +70 -0
  147. package/dist/lib/core/presentation/format-app-error.d.ts +6 -0
  148. package/dist/lib/core/presentation/format-app-error.d.ts.map +1 -0
  149. package/dist/lib/core/presentation/format-app-error.js +19 -0
  150. package/dist/lib/infra/caught-unknown-message.d.ts +2 -0
  151. package/dist/lib/infra/caught-unknown-message.d.ts.map +1 -0
  152. package/dist/lib/infra/caught-unknown-message.js +1 -0
  153. package/dist/lib/infra/config-reporter.d.ts +4 -0
  154. package/dist/lib/infra/config-reporter.d.ts.map +1 -0
  155. package/dist/lib/infra/config-reporter.js +9 -0
  156. package/dist/lib/infra/fs-contract.d.ts +2 -0
  157. package/dist/lib/infra/fs-contract.d.ts.map +1 -0
  158. package/dist/lib/infra/fs-contract.js +1 -0
  159. package/dist/lib/infra/node-io.d.ts +4 -0
  160. package/dist/lib/infra/node-io.d.ts.map +1 -0
  161. package/dist/lib/infra/node-io.js +27 -0
  162. package/dist/lib/infra/workspace/repo-root.d.ts +7 -0
  163. package/dist/lib/infra/workspace/repo-root.d.ts.map +1 -0
  164. package/dist/lib/infra/workspace/repo-root.js +23 -0
  165. package/dist/lib/mirror/application/engine.d.ts +10 -0
  166. package/dist/lib/mirror/application/engine.d.ts.map +1 -0
  167. package/dist/lib/mirror/application/engine.js +271 -0
  168. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts +6 -0
  169. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts.map +1 -0
  170. package/dist/lib/mirror/application/ports/file-system-service.port.js +1 -0
  171. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts +27 -0
  172. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts.map +1 -0
  173. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.js +1 -0
  174. package/dist/lib/mirror/application/ports/package-repository.port.d.ts +16 -0
  175. package/dist/lib/mirror/application/ports/package-repository.port.d.ts.map +1 -0
  176. package/dist/lib/mirror/application/ports/package-repository.port.js +1 -0
  177. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts +7 -0
  178. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts.map +1 -0
  179. package/dist/lib/mirror/application/ports/workspace-service.port.js +1 -0
  180. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts +10 -0
  181. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts.map +1 -0
  182. package/dist/lib/mirror/application/requests/mirror-sync.request.js +8 -0
  183. package/dist/lib/mirror/application/sync.d.ts +19 -0
  184. package/dist/lib/mirror/application/sync.d.ts.map +1 -0
  185. package/dist/lib/mirror/application/sync.js +168 -0
  186. package/dist/lib/mirror/domain/constants.d.ts +6 -0
  187. package/dist/lib/mirror/domain/constants.d.ts.map +1 -0
  188. package/dist/lib/mirror/domain/constants.js +5 -0
  189. package/dist/lib/mirror/domain/errors.d.ts +10 -0
  190. package/dist/lib/mirror/domain/errors.d.ts.map +1 -0
  191. package/dist/lib/mirror/domain/errors.js +12 -0
  192. package/dist/lib/mirror/domain/types.d.ts +65 -0
  193. package/dist/lib/mirror/domain/types.d.ts.map +1 -0
  194. package/dist/lib/mirror/domain/types.js +1 -0
  195. package/dist/lib/mirror/index.d.ts +6 -0
  196. package/dist/lib/mirror/index.d.ts.map +1 -0
  197. package/dist/lib/mirror/index.js +1 -0
  198. package/dist/lib/mirror/infra/dirent-list.d.ts +9 -0
  199. package/dist/lib/mirror/infra/dirent-list.d.ts.map +1 -0
  200. package/dist/lib/mirror/infra/dirent-list.js +13 -0
  201. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts +7 -0
  202. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts.map +1 -0
  203. package/dist/lib/mirror/infra/file-system-service.adapter.js +47 -0
  204. package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts +14 -0
  205. package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts.map +1 -0
  206. package/dist/lib/mirror/infra/mirror-sync-cli-options.js +1 -0
  207. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts +3 -0
  208. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts.map +1 -0
  209. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.js +13 -0
  210. package/dist/lib/mirror/infra/package-filter.d.ts +8 -0
  211. package/dist/lib/mirror/infra/package-filter.d.ts.map +1 -0
  212. package/dist/lib/mirror/infra/package-filter.js +33 -0
  213. package/dist/lib/mirror/infra/package-repository.adapter.d.ts +17 -0
  214. package/dist/lib/mirror/infra/package-repository.adapter.d.ts.map +1 -0
  215. package/dist/lib/mirror/infra/package-repository.adapter.js +17 -0
  216. package/dist/lib/mirror/infra/path-normalizer.d.ts +2 -0
  217. package/dist/lib/mirror/infra/path-normalizer.d.ts.map +1 -0
  218. package/dist/lib/mirror/infra/path-normalizer.js +4 -0
  219. package/dist/lib/mirror/infra/update-pkg.d.ts +19 -0
  220. package/dist/lib/mirror/infra/update-pkg.d.ts.map +1 -0
  221. package/dist/lib/mirror/infra/update-pkg.js +156 -0
  222. package/dist/lib/mirror/infra/workspace-packages.d.ts +26 -0
  223. package/dist/lib/mirror/infra/workspace-packages.d.ts.map +1 -0
  224. package/dist/lib/mirror/infra/workspace-packages.js +170 -0
  225. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts +8 -0
  226. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts.map +1 -0
  227. package/dist/lib/mirror/infra/workspace-service.adapter.js +10 -0
  228. package/dist/lib/mirror/presentation/reporter.d.ts +25 -0
  229. package/dist/lib/mirror/presentation/reporter.d.ts.map +1 -0
  230. package/dist/lib/mirror/presentation/reporter.js +140 -0
  231. package/dist/lib/shared/source-code/domain/text-edit.d.ts +14 -0
  232. package/dist/lib/shared/source-code/domain/text-edit.d.ts.map +1 -0
  233. package/dist/lib/shared/source-code/domain/text-edit.js +30 -0
  234. package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts +4 -0
  235. package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts.map +1 -0
  236. package/dist/lib/shared/source-code/infra/tsx-file-walk.js +37 -0
  237. package/dist/lib/tag/application/engine.d.ts +23 -0
  238. package/dist/lib/tag/application/engine.d.ts.map +1 -0
  239. package/dist/lib/tag/application/engine.js +357 -0
  240. package/dist/lib/tag/application/ports/target-resolver.port.d.ts +6 -0
  241. package/dist/lib/tag/application/ports/target-resolver.port.d.ts.map +1 -0
  242. package/dist/lib/tag/application/ports/target-resolver.port.js +1 -0
  243. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts +6 -0
  244. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts.map +1 -0
  245. package/dist/lib/tag/application/ports/typescript-tree-walk.port.js +1 -0
  246. package/dist/lib/tag/application/requests/tag-sync.request.d.ts +10 -0
  247. package/dist/lib/tag/application/requests/tag-sync.request.d.ts.map +1 -0
  248. package/dist/lib/tag/application/requests/tag-sync.request.js +8 -0
  249. package/dist/lib/tag/domain/types.d.ts +56 -0
  250. package/dist/lib/tag/domain/types.d.ts.map +1 -0
  251. package/dist/lib/tag/domain/types.js +1 -0
  252. package/dist/lib/tag/index.d.ts +14 -0
  253. package/dist/lib/tag/index.d.ts.map +1 -0
  254. package/dist/lib/tag/index.js +10 -0
  255. package/dist/lib/tag/infra/tag-sync-cli-options.d.ts +14 -0
  256. package/dist/lib/tag/infra/tag-sync-cli-options.d.ts.map +1 -0
  257. package/dist/lib/tag/infra/tag-sync-cli-options.js +1 -0
  258. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts +3 -0
  259. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts.map +1 -0
  260. package/dist/lib/tag/infra/tag-target-resolver.adapter.js +4 -0
  261. package/dist/lib/tag/infra/target-resolver.d.ts +4 -0
  262. package/dist/lib/tag/infra/target-resolver.d.ts.map +1 -0
  263. package/dist/lib/tag/infra/target-resolver.js +200 -0
  264. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts +3 -0
  265. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts.map +1 -0
  266. package/dist/lib/tag/infra/typescript-tree-walk.adapter.js +4 -0
  267. package/dist/lib/tag/presentation/colors.d.ts +8 -0
  268. package/dist/lib/tag/presentation/colors.d.ts.map +1 -0
  269. package/dist/lib/tag/presentation/colors.js +9 -0
  270. package/dist/lib/tag/presentation/tag-presenter.d.ts +20 -0
  271. package/dist/lib/tag/presentation/tag-presenter.d.ts.map +1 -0
  272. package/dist/lib/tag/presentation/tag-presenter.js +92 -0
  273. package/dist/program.d.ts +4 -0
  274. package/dist/program.d.ts.map +1 -0
  275. package/dist/program.js +40 -0
  276. package/package.json +8 -5
  277. package/dist/analyze-DvtJ3j9m.mjs +0 -92
  278. package/dist/arrange-Bbh62DrU.mjs +0 -107
  279. package/dist/arrange-BqP2DI3w.mjs +0 -8
  280. package/dist/ast-helpers-MDRYuIAk.mjs +0 -115
  281. package/dist/caught-unknown-message-CRhkDWO7.mjs +0 -20
  282. package/dist/collectors-cn-BS8TTQ8O.mjs +0 -61
  283. package/dist/collectors-jsx-D9tL2ZPM.mjs +0 -20
  284. package/dist/collectors-tv-D2PXZaRt.mjs +0 -170
  285. package/dist/colors-BjdkCfGK.mjs +0 -12
  286. package/dist/commands/arrange.mjs +0 -2
  287. package/dist/commands/mirror.mjs +0 -2
  288. package/dist/commands/mirror.test.mjs +0 -48
  289. package/dist/commands/tag.mjs +0 -2
  290. package/dist/config-DVia_f9a.mjs +0 -3
  291. package/dist/config-reporter-SCcWDZc1.mjs +0 -10
  292. package/dist/constants-AtPhF-Ct.mjs +0 -169
  293. package/dist/constants-Bq5wdyLC.mjs +0 -8
  294. package/dist/dirent-list-BSDeRG5i.mjs +0 -14
  295. package/dist/engine-CcWEHSCq.mjs +0 -287
  296. package/dist/engine-DRTdkc5u.mjs +0 -236
  297. package/dist/errors-CFH4w6ic.mjs +0 -15
  298. package/dist/errors-CpU1ogfA.mjs +0 -19
  299. package/dist/formatters-DGE8jJ53.mjs +0 -52
  300. package/dist/group-file-ClW7XdD6.mjs +0 -113
  301. package/dist/grouping-c1grpCQT.mjs +0 -235
  302. package/dist/imports-DSVq1xhB.mjs +0 -54
  303. package/dist/lib/arrange/application/analyze.mjs +0 -2
  304. package/dist/lib/arrange/application/analyze.test.mjs +0 -171
  305. package/dist/lib/arrange/application/group-file.mjs +0 -2
  306. package/dist/lib/arrange/application/group-file.test.mjs +0 -273
  307. package/dist/lib/arrange/application/run-target.mjs +0 -2
  308. package/dist/lib/arrange/application/run-target.test.mjs +0 -97
  309. package/dist/lib/arrange/domain/ast/ast-helpers.mjs +0 -2
  310. package/dist/lib/arrange/domain/ast/ast-helpers.test.mjs +0 -148
  311. package/dist/lib/arrange/domain/ast/collectors-cn.mjs +0 -2
  312. package/dist/lib/arrange/domain/ast/collectors-cn.test.mjs +0 -58
  313. package/dist/lib/arrange/domain/ast/collectors-jsx.mjs +0 -2
  314. package/dist/lib/arrange/domain/ast/collectors-jsx.test.mjs +0 -20
  315. package/dist/lib/arrange/domain/ast/collectors-tv.mjs +0 -2
  316. package/dist/lib/arrange/domain/ast/collectors-tv.test.mjs +0 -145
  317. package/dist/lib/arrange/domain/ast/targets.mjs +0 -2
  318. package/dist/lib/arrange/domain/ast/targets.test.mjs +0 -50
  319. package/dist/lib/arrange/domain/constants.mjs +0 -2
  320. package/dist/lib/arrange/domain/errors.mjs +0 -2
  321. package/dist/lib/arrange/domain/grouping.mjs +0 -2
  322. package/dist/lib/arrange/domain/grouping.test.mjs +0 -186
  323. package/dist/lib/arrange/domain/imports.mjs +0 -2
  324. package/dist/lib/arrange/domain/imports.test.mjs +0 -48
  325. package/dist/lib/arrange/domain/tokenizer.mjs +0 -2
  326. package/dist/lib/arrange/domain/tokenizer.test.mjs +0 -165
  327. package/dist/lib/arrange/index.mjs +0 -16
  328. package/dist/lib/arrange/infra/walk.mjs +0 -2
  329. package/dist/lib/arrange/infra/walk.test.mjs +0 -50
  330. package/dist/lib/arrange/presentation/formatters.mjs +0 -2
  331. package/dist/lib/arrange/presentation/formatters.test.mjs +0 -73
  332. package/dist/lib/arrange/presentation/report.mjs +0 -2
  333. package/dist/lib/config/domain/schema.mjs +0 -2
  334. package/dist/lib/config/index.mjs +0 -4
  335. package/dist/lib/config/infra/loader.mjs +0 -2
  336. package/dist/lib/config/infra/loader.test.mjs +0 -116
  337. package/dist/lib/infra/caught-unknown-message.mjs +0 -2
  338. package/dist/lib/infra/config-reporter.mjs +0 -2
  339. package/dist/lib/infra/node-io.mjs +0 -2
  340. package/dist/lib/infra/workspace/repo-root.mjs +0 -2
  341. package/dist/lib/infra/workspace/repo-root.test.mjs +0 -45
  342. package/dist/lib/mirror/application/engine.mjs +0 -2
  343. package/dist/lib/mirror/application/sync.mjs +0 -2
  344. package/dist/lib/mirror/application/sync.test.mjs +0 -482
  345. package/dist/lib/mirror/domain/constants.mjs +0 -2
  346. package/dist/lib/mirror/domain/errors.mjs +0 -2
  347. package/dist/lib/mirror/index.mjs +0 -3
  348. package/dist/lib/mirror/infra/dirent-list.mjs +0 -2
  349. package/dist/lib/mirror/infra/dirent-list.test.mjs +0 -18
  350. package/dist/lib/mirror/infra/package-filter.mjs +0 -2
  351. package/dist/lib/mirror/infra/package-filter.test.mjs +0 -32
  352. package/dist/lib/mirror/infra/path-normalizer.mjs +0 -2
  353. package/dist/lib/mirror/infra/update-pkg.mjs +0 -2
  354. package/dist/lib/mirror/infra/workspace-packages.mjs +0 -2
  355. package/dist/lib/mirror/infra/workspace-packages.test.mjs +0 -167
  356. package/dist/lib/mirror/presentation/reporter.mjs +0 -2
  357. package/dist/lib/tag/application/engine.mjs +0 -2
  358. package/dist/lib/tag/application/engine.test.mjs +0 -159
  359. package/dist/lib/tag/index.mjs +0 -5
  360. package/dist/lib/tag/infra/target-resolver.mjs +0 -2
  361. package/dist/lib/tag/presentation/colors.mjs +0 -2
  362. package/dist/lib/tag/presentation/tag-presenter.mjs +0 -2
  363. package/dist/lib/tag/presentation/tag-presenter.test.mjs +0 -29
  364. package/dist/loader-DpN-zl5g.mjs +0 -78
  365. package/dist/mirror-CbGiLXKT.mjs +0 -2
  366. package/dist/mirror-DqJE3ejL.mjs +0 -66
  367. package/dist/node-io-DFRbHO6m.mjs +0 -30
  368. package/dist/package-filter-C_8ryqvz.mjs +0 -26
  369. package/dist/path-normalizer-D4ceBO3l.mjs +0 -7
  370. package/dist/program-DR-H4tH3.mjs +0 -34
  371. package/dist/program.mjs +0 -2
  372. package/dist/repo-root-HmtIEm6J.mjs +0 -22
  373. package/dist/report-DYxvw34T.mjs +0 -24
  374. package/dist/reporter-CwIe_tAM.mjs +0 -108
  375. package/dist/run-target-CJWrqNT4.mjs +0 -65
  376. package/dist/schema-Or8RAARd.mjs +0 -25
  377. package/dist/sync-e1Sp-shi.mjs +0 -157
  378. package/dist/tag-Cd9JujU5.mjs +0 -2
  379. package/dist/tag-hEKVZ_-7.mjs +0 -58
  380. package/dist/tag-presenter-Cs66UBsH.mjs +0 -63
  381. package/dist/target-resolver-CR3FXMTy.mjs +0 -170
  382. package/dist/targets-pCTslnFh.mjs +0 -106
  383. package/dist/tokenizer-CeZx73Zu.mjs +0 -216
  384. package/dist/update-pkg-CnGfjWBy.mjs +0 -37
  385. package/dist/walk-DjgQn66n.mjs +0 -33
  386. package/dist/workspace-packages-K2NYTHJq.mjs +0 -159
  387. /package/dist/lib/arrange/{domain/types.mjs → application/ports/domain-source-parser.port.js} +0 -0
  388. /package/dist/lib/{infra/fs-contract.mjs → arrange/application/ports/file-walker.port.js} +0 -0
  389. /package/dist/lib/{mirror/domain/types.mjs → arrange/infra/arrange-sync-cli-options.js} +0 -0
  390. /package/dist/lib/{tag/domain/types.mjs → core/application/ports/cli-io.port.js} +0 -0
@@ -1,145 +0,0 @@
1
- import "../../../../constants-AtPhF-Ct.mjs";
2
- import { r as buildKnownCnTvBindings } from "../../../../ast-helpers-MDRYuIAk.mjs";
3
- import { a as listAllCnCallsInsideTvInSourceFile, c as traverseTvObject, n as collectGroupableStringNodes, s as slotClassString, t as collectCnCallsInsideTv } from "../../../../collectors-tv-D2PXZaRt.mjs";
4
- import "../../../../arrange-BqP2DI3w.mjs";
5
- import ts from "typescript";
6
- //#region src/lib/arrange/domain/ast/collectors-tv.test.ts
7
- describe("collectGroupableStringNodes", () => {
8
- it("collects cn/tv static class slots eligible for grouping", () => {
9
- const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
10
- export const styles = tv({
11
- base: cn("flex gap-2 text-sm rounded-md border px-3"),
12
- });
13
- `, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
14
- expect(nodes.length).toBeGreaterThan(0);
15
- expect(slotClassString(nodes[0])).toContain("flex gap-2");
16
- });
17
- it("collects tv array slots without cn()", () => {
18
- const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { tv } from "@codefast/tailwind-variants";
19
- export const styles = tv({
20
- base: ["flex gap-2 text-sm rounded-md border px-3", "shadow-xs"],
21
- });
22
- `, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
23
- expect(nodes.length).toBeGreaterThan(0);
24
- expect(nodes.some((stringNode) => slotClassString(stringNode).includes("shadow-xs"))).toBe(true);
25
- });
26
- it("collects compoundVariants className string slots", () => {
27
- const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { tv } from "@codefast/tailwind-variants";
28
- export const styles = tv({
29
- compoundVariants: [{ className: "flex gap-2 text-sm rounded-md border px-3" }],
30
- });
31
- `, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
32
- expect(nodes.length).toBeGreaterThan(0);
33
- });
34
- it("collects compoundVariants class array with mixed strings and cn()", () => {
35
- const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
36
- export const styles = tv({
37
- compoundVariants: [{ class: ["py-1", cn("flex gap-2 text-sm rounded-md border px-3")] }],
38
- });
39
- `, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
40
- expect(nodes.length).toBeGreaterThan(0);
41
- expect(nodes.some((stringNode) => slotClassString(stringNode).includes("flex gap-2"))).toBe(true);
42
- });
43
- it("collects direct cn(...) entries inside tv arrays and ignores unsafe nested array literals", () => {
44
- const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
45
- export const styles = tv({
46
- base: [cn(["skip-a", "skip-b"]), cn("flex gap-2 text-sm rounded-md border px-3")],
47
- });
48
- `, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
49
- expect(nodes.length).toBeGreaterThan(0);
50
- expect(nodes.some((stringNode) => slotClassString(stringNode).includes("flex gap-2 text-sm"))).toBe(true);
51
- expect(nodes.some((stringNode) => slotClassString(stringNode).includes("skip-a"))).toBe(false);
52
- });
53
- it("collects compoundVariants class set directly to cn(...) call", () => {
54
- const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
55
- export const styles = tv({
56
- compoundVariants: [{ class: cn("flex gap-2 text-sm rounded-md border px-3") }],
57
- });
58
- `, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
59
- expect(nodes.length).toBeGreaterThan(0);
60
- expect(nodes.some((stringNode) => slotClassString(stringNode).includes("rounded-md border px-3"))).toBe(true);
61
- });
62
- it("returns empty when file has no cn/tv candidates", () => {
63
- const sf = ts.createSourceFile("x.ts", "export const only = 1;", ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
64
- expect(collectGroupableStringNodes(sf)).toEqual([]);
65
- });
66
- it("documents that tv object traversal stops safely when nesting exceeds the configured depth limit", () => {
67
- let nestedObject = "{ className: \"flex gap-2 text-sm rounded-md border px-3\" }";
68
- for (let i = 0; i < 14; i += 1) nestedObject = `{ layer${i}: ${nestedObject} }`;
69
- const source = `import { tv } from "@codefast/tailwind-variants";
70
- export const styles = tv(${nestedObject});
71
- `;
72
- const sf = ts.createSourceFile("x.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
73
- expect(() => collectGroupableStringNodes(sf)).not.toThrow();
74
- expect(collectGroupableStringNodes(sf)).toEqual([]);
75
- });
76
- it("accepts legacy tailwind-variants import for tv slot collection (backward compat)", () => {
77
- const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { cn, tv } from "tailwind-variants";
78
- export const styles = tv({
79
- base: cn("flex gap-2 text-sm rounded-md border px-3"),
80
- });
81
- `, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
82
- expect(nodes.length).toBeGreaterThan(0);
83
- expect(slotClassString(nodes[0])).toContain("flex gap-2");
84
- });
85
- });
86
- describe("tv collector helpers", () => {
87
- it("traverseTvObject visits nested className/class string literals and cn call literals", () => {
88
- const sf = ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
89
- const cfg = {
90
- base: [{ className: ["flex gap-2", "text-sm"] }, { class: cn("rounded-md border", "px-3") }],
91
- variants: {
92
- intent: { primary: { className: "font-medium shadow-xs" } },
93
- },
94
- };
95
- tv(cfg);
96
- `, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
97
- const knownBindings = buildKnownCnTvBindings(sf);
98
- const obj = sf.statements[1].declarationList.declarations[0].initializer;
99
- const visited = [];
100
- traverseTvObject(sf, obj, (classLiteral) => {
101
- visited.push(classLiteral.text);
102
- }, 0, knownBindings);
103
- expect(visited).toEqual(expect.arrayContaining([
104
- "flex gap-2",
105
- "text-sm",
106
- "rounded-md border",
107
- "px-3",
108
- "font-medium shadow-xs"
109
- ]));
110
- });
111
- it("collectCnCallsInsideTv finds cn calls from arrays, class fields, and nested objects", () => {
112
- const sf = ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
113
- tv({
114
- base: [cn("flex gap-2"), { class: cn("text-sm rounded-md") }],
115
- variants: {
116
- intent: {
117
- primary: { className: cn("border px-3") },
118
- },
119
- },
120
- });
121
- `, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
122
- const knownBindings = buildKnownCnTvBindings(sf);
123
- const tvObj = sf.statements[1].expression.arguments[0];
124
- const calls = collectCnCallsInsideTv(sf, tvObj, knownBindings, 0);
125
- expect(calls).toHaveLength(3);
126
- expect(calls.map((call) => call.getText(sf))).toEqual(expect.arrayContaining([
127
- "cn(\"flex gap-2\")",
128
- "cn(\"text-sm rounded-md\")",
129
- "cn(\"border px-3\")"
130
- ]));
131
- });
132
- it("listAllCnCallsInsideTvInSourceFile collects cn calls only from tv() object arguments", () => {
133
- const sf = ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
134
- cn("outside call should not be counted");
135
- tv({
136
- base: [cn("inside-tv one"), { className: cn("inside-tv two") }],
137
- });
138
- `, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
139
- const calls = listAllCnCallsInsideTvInSourceFile(sf, buildKnownCnTvBindings(sf));
140
- expect(calls).toHaveLength(2);
141
- expect(calls.map((call) => call.getText(sf))).toEqual(expect.arrayContaining(["cn(\"inside-tv one\")", "cn(\"inside-tv two\")"]));
142
- });
143
- });
144
- //#endregion
145
- export {};
@@ -1,2 +0,0 @@
1
- import { a as targetReplaceStart, i as planGroupEditForTarget, n as collectLongJsxClassNameTargets, r as formatCnCallReplacement, t as collectGroupTargets } from "../../../../targets-pCTslnFh.mjs";
2
- export { collectGroupTargets, collectLongJsxClassNameTargets, formatCnCallReplacement, planGroupEditForTarget, targetReplaceStart };
@@ -1,50 +0,0 @@
1
- import { n as collectGroupableStringNodes } from "../../../../collectors-tv-D2PXZaRt.mjs";
2
- import { i as planGroupEditForTarget, r as formatCnCallReplacement, t as collectGroupTargets } from "../../../../targets-pCTslnFh.mjs";
3
- import ts from "typescript";
4
- //#region src/lib/arrange/domain/ast/targets.test.ts
5
- describe("formatCnCallReplacement", () => {
6
- it("keeps multiline trailing comma behavior explicit for multi-arg cn calls", () => {
7
- const source = `import { cn } from "@codefast/tailwind-variants";
8
- export function Row(className: string) {
9
- return cn("flex gap-2 text-sm rounded-md border px-3", className);
10
- }
11
- `;
12
- const stringNode = collectGroupableStringNodes(ts.createSourceFile("x.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS))[0];
13
- const out = formatCnCallReplacement(stringNode, source, false);
14
- expect(out).toContain("className,");
15
- expect(out).toContain("\"flex gap-2\"");
16
- });
17
- });
18
- describe("collectGroupTargets + planGroupEditForTarget", () => {
19
- it("collects JSX className targets in tsx files", () => {
20
- const targets = collectGroupTargets(ts.createSourceFile("x.tsx", `export function C() {
21
- return <div className="flex items-center gap-2 px-4 py-2 text-sm rounded-md border bg-card" />;
22
- }`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX), "x.tsx");
23
- expect(targets.some((groupTarget) => groupTarget.kind === "jsxClassName")).toBe(true);
24
- });
25
- it("plans undefined when groups length <= 1", () => {
26
- const source = `import { cn } from "@codefast/tailwind-variants"; cn("flex gap-2");`;
27
- const cnTarget = collectGroupTargets(ts.createSourceFile("x.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS), "x.ts").find((groupTarget) => groupTarget.kind === "cnArg");
28
- expect(cnTarget).toBeDefined();
29
- const plan = planGroupEditForTarget(cnTarget, source, false);
30
- expect(plan).toBeUndefined();
31
- });
32
- it("includes trailing className when withClassName=true", () => {
33
- const source = `import { cn } from "@codefast/tailwind-variants";
34
- export function C(className: string) {
35
- return cn("flex gap-2 text-sm rounded-md border px-3 font-medium", className);
36
- }`;
37
- const plan = planGroupEditForTarget(collectGroupTargets(ts.createSourceFile("x.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS), "x.ts").find((groupTarget) => groupTarget.kind === "cnArg"), source, true);
38
- expect(plan?.replacement).toContain("className");
39
- });
40
- it("accepts legacy tailwind-variants import when planning cn target edits (backward compat)", () => {
41
- const source = `import { cn } from "tailwind-variants";
42
- export function C(className: string) {
43
- return cn("flex gap-2 text-sm rounded-md border px-3 font-medium", className);
44
- }`;
45
- const plan = planGroupEditForTarget(collectGroupTargets(ts.createSourceFile("x.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS), "x.ts").find((groupTarget) => groupTarget.kind === "cnArg"), source, true);
46
- expect(plan?.replacement).toContain("className");
47
- });
48
- });
49
- //#endregion
50
- export {};
@@ -1,2 +0,0 @@
1
- import { a as EMPTY_CN_TV_BINDINGS, c as MAX_GROUPS_BASE, d as MAX_OBJECT_DEPTH, f as MAX_REPORT_LINES, g as STATE_PREFIXES, h as RESPONSIVE_PREFIX, i as DEFAULT_ARRANGE_TARGET, l as MAX_GROUPS_CAP, m as MIN_GROUP_TOKENS, n as BUCKET_ORDER, o as LONG_STRING_TOKEN_THRESHOLD, p as MAX_STRIP_VARIANT_PASSES, r as COMPATIBLE_BUCKET_SETS, s as MAX_CLASS_EXPR_DEPTH, t as APPLY_MIN_TOKENS, u as MAX_GROUPS_HEADROOM } from "../../../constants-AtPhF-Ct.mjs";
2
- export { APPLY_MIN_TOKENS, BUCKET_ORDER, COMPATIBLE_BUCKET_SETS, DEFAULT_ARRANGE_TARGET, EMPTY_CN_TV_BINDINGS, LONG_STRING_TOKEN_THRESHOLD, MAX_CLASS_EXPR_DEPTH, MAX_GROUPS_BASE, MAX_GROUPS_CAP, MAX_GROUPS_HEADROOM, MAX_OBJECT_DEPTH, MAX_REPORT_LINES, MAX_STRIP_VARIANT_PASSES, MIN_GROUP_TOKENS, RESPONSIVE_PREFIX, STATE_PREFIXES };
@@ -1,2 +0,0 @@
1
- import { n as ArrangeErrorCode, t as ArrangeError } from "../../../errors-CpU1ogfA.mjs";
2
- export { ArrangeError, ArrangeErrorCode };
@@ -1,2 +0,0 @@
1
- import { a as suggestCnGroups, i as mergeSingletons, n as capGroups, o as summarizeGroupBucketLabels, r as mergeEaseTimingIntoFollowingAnimatedState, t as areCnTailwindPartitionsEquivalent } from "../../../grouping-c1grpCQT.mjs";
2
- export { areCnTailwindPartitionsEquivalent, capGroups, mergeEaseTimingIntoFollowingAnimatedState, mergeSingletons, suggestCnGroups, summarizeGroupBucketLabels };
@@ -1,186 +0,0 @@
1
- import { a as suggestCnGroups, i as mergeSingletons, n as capGroups, o as summarizeGroupBucketLabels, r as mergeEaseTimingIntoFollowingAnimatedState, t as areCnTailwindPartitionsEquivalent } from "../../../grouping-c1grpCQT.mjs";
2
- import "../../../arrange-BqP2DI3w.mjs";
3
- //#region src/lib/arrange/domain/grouping.test.ts
4
- const CHECKBOX_GROUP_ITEM_INPUT = "peer flex size-4 shrink-0 items-center justify-center rounded-sm border border-input text-primary-foreground shadow-xs outline-hidden transition hover:not-disabled:not-aria-checked:border-ring/60 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:opacity-50 aria-checked:border-primary aria-checked:bg-primary focus-visible:aria-checked:ring-primary/20 aria-invalid:border-destructive aria-invalid:ring-destructive/20 hover:not-disabled:not-aria-checked:aria-invalid:border-destructive/60 aria-checked:aria-invalid:bg-destructive dark:bg-input/30 dark:focus-visible:aria-checked:ring-primary/40 dark:aria-invalid:ring-destructive/40";
5
- const CHECKBOX_GROUP_ITEM_GROUPS = [
6
- "peer flex items-center justify-center size-4 shrink-0",
7
- "rounded-sm border border-input shadow-xs outline-hidden",
8
- "text-primary-foreground",
9
- "transition",
10
- "hover:not-disabled:not-aria-checked:border-ring/60",
11
- "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",
12
- "disabled:opacity-50",
13
- "aria-checked:border-primary aria-checked:bg-primary",
14
- "focus-visible:aria-checked:ring-primary/20",
15
- "aria-invalid:border-destructive aria-invalid:ring-destructive/20",
16
- "hover:not-disabled:not-aria-checked:aria-invalid:border-destructive/60",
17
- "aria-checked:aria-invalid:bg-destructive",
18
- "dark:bg-input/30",
19
- "dark:focus-visible:aria-checked:ring-primary/40",
20
- "dark:aria-invalid:ring-destructive/40"
21
- ];
22
- function sortedTokens(classString) {
23
- return classString.trim().split(/\s+/).filter(Boolean).sort();
24
- }
25
- describe("suggestCnGroups", () => {
26
- it.each([
27
- ["", []],
28
- [" ", []],
29
- ["\n ", []],
30
- ["flex gap-2", ["flex gap-2"]],
31
- ["flex gap-2 text-sm", ["flex gap-2 text-sm"]],
32
- ["w-4 h-4 rounded-md", ["w-4 h-4", "rounded-md"]],
33
- ["transition outline-hidden", ["outline-hidden", "transition"]],
34
- ["text-sm transition outline-hidden", [
35
- "outline-hidden",
36
- "text-sm",
37
- "transition"
38
- ]],
39
- ["ease-ui data-open:animate-in data-open:fade-in-0", ["ease-ui data-open:animate-in data-open:fade-in-0"]],
40
- ["fixed inset-0 overflow-auto", ["fixed inset-0", "overflow-auto"]],
41
- ["fixed inset-0 grid overflow-auto", ["fixed inset-0 grid overflow-auto"]],
42
- ["sm:text-sm", ["sm:text-sm"]],
43
- ["group-hover:bg-red-500", ["group-hover:bg-red-500"]],
44
- ["not-disabled:opacity-50", ["not-disabled:opacity-50"]],
45
- ["focus:bg-accent focus:text-accent-foreground aria-disabled:opacity-50", ["focus:bg-accent focus:text-accent-foreground", "aria-disabled:opacity-50"]],
46
- ["grid", ["grid"]],
47
- ["@3xl:flex @3xl:gap-4 p-4", ["p-4", "@3xl:flex @3xl:gap-4"]],
48
- ["bg-white has-checked:bg-indigo-50", ["bg-white", "has-checked:bg-indigo-50"]],
49
- ["flex nth-3:underline", ["flex", "nth-3:underline"]],
50
- ["p-2 pointer-coarse:p-4", ["p-2", "pointer-coarse:p-4"]],
51
- ["opacity-100 inert:opacity-50", ["opacity-100", "inert:opacity-50"]],
52
- ["flex in-[.popover]:opacity-100", ["flex", "in-[.popover]:opacity-100"]],
53
- ["flex *:rounded **:text-sm", [
54
- "flex",
55
- "*:rounded",
56
- "**:text-sm"
57
- ]],
58
- ["-gap-4 flex", ["-gap-4 flex"]],
59
- ["-space-x-4 flex", ["-space-x-4 flex"]],
60
- ["grid -gap-4 p-4", ["grid -gap-4", "p-4"]],
61
- ["-tracking-widest text-sm", ["-tracking-widest text-sm"]],
62
- ["-z-10 relative", ["-z-10 relative"]],
63
- ["-scale-95 w-full", ["w-full -scale-95"]],
64
- ["data-[vaul-drawer-direction=bottom]:a data-[vaul-drawer-direction=left]:b data-[vaul-drawer-direction=right]:c", [
65
- "data-[vaul-drawer-direction=bottom]:a",
66
- "data-[vaul-drawer-direction=left]:b",
67
- "data-[vaul-drawer-direction=right]:c"
68
- ]],
69
- ["data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none", ["data-[range-end=true]:rounded-md", "data-[range-middle=true]:rounded-none"]]
70
- ])("golden groups `%s`", (input, expected) => {
71
- expect(suggestCnGroups(input)).toEqual(expected);
72
- expect(sortedTokens(input)).toEqual(sortedTokens(expected.join(" ")));
73
- });
74
- it("groups command-menu style rows deterministically", () => {
75
- const input = "group/cmd relative flex items-center gap-x-2 px-2 py-1.5 rounded-sm text-sm cursor-default outline-hidden select-none";
76
- const expected = [
77
- "group/cmd relative flex items-center gap-x-2",
78
- "px-2 py-1.5",
79
- "rounded-sm outline-hidden",
80
- "text-sm",
81
- "cursor-default select-none"
82
- ];
83
- const got = suggestCnGroups(input);
84
- expect(got).toEqual(expected);
85
- expect(sortedTokens(input)).toEqual(sortedTokens(got.join(" ")));
86
- });
87
- it("keeps checkbox-style partition stable", () => {
88
- const got = suggestCnGroups(CHECKBOX_GROUP_ITEM_INPUT);
89
- expect(got).toEqual([...CHECKBOX_GROUP_ITEM_GROUPS]);
90
- expect(sortedTokens(CHECKBOX_GROUP_ITEM_INPUT)).toEqual(sortedTokens(got.join(" ")));
91
- });
92
- it("keeps many state keys without dropping tokens", () => {
93
- const input = "flex gap-2 text-sm rounded-md border px-3 py-2 bg-card outline-hidden transition " + [
94
- "hover:a",
95
- "focus:b",
96
- "active:c",
97
- "disabled:d",
98
- "checked:e",
99
- "focus-visible:f",
100
- "aria-invalid:g",
101
- "data-open:h",
102
- "dark:i",
103
- "sm:j",
104
- "md:k",
105
- "group-hover:l",
106
- "peer-focus:m",
107
- "inert:n"
108
- ].join(" ");
109
- const groups = suggestCnGroups(input);
110
- expect(groups.length).toBeGreaterThan(8);
111
- expect(sortedTokens(input)).toEqual(sortedTokens(groups.join(" ")));
112
- });
113
- it("splits in-data variant state chunks from base utilities", () => {
114
- const got = suggestCnGroups("rounded-md bg-muted in-data-[slot=tooltip-content]:bg-background/20 font-sans text-xs font-medium text-muted-foreground in-data-[slot=tooltip-content]:text-background");
115
- expect(got.some((c) => c.includes("bg-muted") && !c.includes("in-data-"))).toBe(true);
116
- expect(got.some((c) => c.includes("in-data-[slot=tooltip-content]:bg-background/20"))).toBe(true);
117
- });
118
- it("splits arbitrary parent selectors from base chunk", () => {
119
- const got = suggestCnGroups("flex justify-center aspect-video text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-layer]:outline-hidden");
120
- expect(got[0]).not.toContain("[&");
121
- expect(got.some((c) => c.includes("[&_.recharts-layer]"))).toBe(true);
122
- });
123
- it("merges shadcn [&_svg] utilities and :not size guard into one selector chunk", () => {
124
- const input = "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6";
125
- expect(suggestCnGroups(input)).toEqual([input]);
126
- });
127
- it("keeps cap-groups headroom behavior for bg + outline-hidden", () => {
128
- const groups = suggestCnGroups("flex items-center justify-center bg-border outline-hidden focus-visible:bg-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-[orientation=horizontal]:h-px aria-[orientation=vertical]:w-px");
129
- expect(groups.some((chunk) => /\bbg-border\b/.test(chunk) && /\boutline-hidden\b/.test(chunk))).toBe(true);
130
- });
131
- });
132
- describe("areCnTailwindPartitionsEquivalent", () => {
133
- it("returns true for same partitions with different order", () => {
134
- expect(areCnTailwindPartitionsEquivalent(["b a", "d c"], ["a b", "c d"])).toBe(true);
135
- });
136
- it("returns false for different partitions", () => {
137
- expect(areCnTailwindPartitionsEquivalent(["a", "b c"], ["a b", "c"])).toBe(false);
138
- });
139
- });
140
- describe("mergeEaseTimingIntoFollowingAnimatedState", () => {
141
- it("merges ease-only chunk into later animated state chunk", () => {
142
- expect(mergeEaseTimingIntoFollowingAnimatedState(["ease-ui", "data-open:animate-in data-open:fade-in-0"])).toEqual(["ease-ui data-open:animate-in data-open:fade-in-0"]);
143
- });
144
- it("skips intermediate state chunks to merge with later animate", () => {
145
- expect(mergeEaseTimingIntoFollowingAnimatedState([
146
- "base",
147
- "ease-ui",
148
- "sm:grid-rows-1 sm:p-4",
149
- "data-open:animate-in"
150
- ])).toEqual([
151
- "base",
152
- "sm:grid-rows-1 sm:p-4",
153
- "ease-ui data-open:animate-in"
154
- ]);
155
- });
156
- });
157
- describe("mergeSingletons", () => {
158
- it("merges singleton into compatible forward neighbor", () => {
159
- expect(mergeSingletons(["bg-card", "text-white font-medium"])).toEqual(["bg-card text-white font-medium"]);
160
- });
161
- });
162
- describe("capGroups", () => {
163
- it("caps with compatible adjacent merges only", () => {
164
- const out = capGroups([
165
- "fixed inset-0",
166
- "grid",
167
- "overflow-auto",
168
- "hover:bg-accent",
169
- "focus:ring-2"
170
- ], 3);
171
- expect(out.length).toBeGreaterThanOrEqual(3);
172
- expect(out.join(" ")).toContain("fixed");
173
- expect(out.join(" ")).toContain("overflow-auto");
174
- });
175
- });
176
- describe("summarizeGroupBucketLabels", () => {
177
- it("returns bucket labels for single-bucket chunks", () => {
178
- expect(summarizeGroupBucketLabels(["flex gap-2", "text-sm"])).toEqual(["layout", "typography"]);
179
- });
180
- it("returns mixed labels for multi-bucket chunks", () => {
181
- const labels = summarizeGroupBucketLabels(["bg-card text-sm"]);
182
- expect(labels[0]).toBe("mixed:background+typography");
183
- });
184
- });
185
- //#endregion
186
- export {};
@@ -1,2 +0,0 @@
1
- import { n as ensureCnImport, t as cnModuleSpecifierForFile } from "../../../imports-DSVq1xhB.mjs";
2
- export { cnModuleSpecifierForFile, ensureCnImport };
@@ -1,48 +0,0 @@
1
- import { n as ensureCnImport, t as cnModuleSpecifierForFile } from "../../../imports-DSVq1xhB.mjs";
2
- import "../../../arrange-BqP2DI3w.mjs";
3
- //#region src/lib/arrange/domain/imports.test.ts
4
- describe("cnModuleSpecifierForFile", () => {
5
- it("documents that default module specifier is stable across file paths", () => {
6
- expect(cnModuleSpecifierForFile("/repo/packages/ui/src/components/a.tsx")).toBe("@codefast/tailwind-variants");
7
- expect(cnModuleSpecifierForFile("/repo/packages/cli/src/lib/a.ts")).toBe("@codefast/tailwind-variants");
8
- });
9
- it("documents that explicit override always takes precedence", () => {
10
- expect(cnModuleSpecifierForFile("/repo/packages/ui/src/components/a.tsx", "clsx")).toBe("clsx");
11
- });
12
- });
13
- describe("ensureCnImport", () => {
14
- it("does not change source when cn is imported as default binding", () => {
15
- const source = "import cn from \"@codefast/tailwind-variants\";\nconst x = 1;\n";
16
- expect(ensureCnImport(source, "/repo/x.ts")).toBe(source);
17
- });
18
- it("does not change source when cn already imported", () => {
19
- const source = "import { cn, tv } from \"@codefast/tailwind-variants\";\nconst x = 1;\n";
20
- expect(ensureCnImport(source, "/repo/x.ts")).toBe(source);
21
- });
22
- it("injects cn into an existing named import from matching module", () => {
23
- const out = ensureCnImport("import { tv } from \"clsx\";\nconst x = 1;\n", "/repo/x.ts", "clsx");
24
- expect(out).toContain("import { cn, tv } from \"clsx\";");
25
- });
26
- it("inserts after use client directive", () => {
27
- const out = ensureCnImport("\"use client\";\n\nexport const x = 1;\n", "/repo/x.tsx");
28
- expect(out.startsWith("\"use client\";\n\nimport { cn }")).toBe(true);
29
- });
30
- it("inserts before first import when no matching import exists", () => {
31
- const out = ensureCnImport("import { tv } from \"clsx\";\nconst x = 1;\n", "/repo/x.ts");
32
- expect(out.indexOf("import { cn } from \"@codefast/tailwind-variants\";")).toBe(0);
33
- });
34
- it("inserts at file start when there are no imports", () => {
35
- const out = ensureCnImport("const x = 1;\n", "/repo/x.ts");
36
- expect(out.startsWith("import { cn } from \"@codefast/tailwind-variants\";\n")).toBe(true);
37
- });
38
- it("respects module override when adding new import", () => {
39
- const out = ensureCnImport("const x = 1;\n", "/repo/x.ts", "clsx");
40
- expect(out.startsWith("import { cn } from \"clsx\";\n")).toBe(true);
41
- });
42
- it("keeps existing legacy tailwind-variants import unchanged (backward compat)", () => {
43
- const source = "import { cn, tv } from \"tailwind-variants\";\nconst x = 1;\n";
44
- expect(ensureCnImport(source, "/repo/x.ts")).toBe(source);
45
- });
46
- });
47
- //#endregion
48
- export {};
@@ -1,2 +0,0 @@
1
- import { a as compositeSecondaryOrder, c as selectorKey, d as tokenizeClassString, i as classifyToken, l as stateKey, n as bucketsMergeCompatible, o as indexOfFirstVariantColon, r as classifyBareUtility, s as isArbitraryParentSelectorStateToken, t as bucketsCompatible, u as stripVariants } from "../../../tokenizer-CeZx73Zu.mjs";
2
- export { bucketsCompatible, bucketsMergeCompatible, classifyBareUtility, classifyToken, compositeSecondaryOrder, indexOfFirstVariantColon, isArbitraryParentSelectorStateToken, selectorKey, stateKey, stripVariants, tokenizeClassString };
@@ -1,165 +0,0 @@
1
- import { c as selectorKey, d as tokenizeClassString, i as classifyToken, l as stateKey, n as bucketsMergeCompatible, o as indexOfFirstVariantColon, t as bucketsCompatible, u as stripVariants } from "../../../tokenizer-CeZx73Zu.mjs";
2
- import "../../../arrange-BqP2DI3w.mjs";
3
- //#region src/lib/arrange/domain/tokenizer.test.ts
4
- describe("tokenizeClassString", () => {
5
- it("trims and splits on whitespace runs", () => {
6
- expect(tokenizeClassString(" flex gap-2 ")).toEqual(["flex", "gap-2"]);
7
- });
8
- it("returns empty for whitespace-only input", () => {
9
- expect(tokenizeClassString(" \n ")).toEqual([]);
10
- });
11
- });
12
- describe("bucketsMergeCompatible", () => {
13
- it.each([
14
- [
15
- "state",
16
- "state",
17
- false
18
- ],
19
- [
20
- "starting",
21
- "starting",
22
- false
23
- ],
24
- [
25
- "layout",
26
- "sizing",
27
- true
28
- ],
29
- [
30
- "shape",
31
- "shadow",
32
- true
33
- ],
34
- [
35
- "layout",
36
- "state",
37
- false
38
- ],
39
- [
40
- "arbitrary",
41
- "arbitrary",
42
- false
43
- ],
44
- [
45
- "arbitrary",
46
- "state",
47
- false
48
- ],
49
- [
50
- "selector",
51
- "selector",
52
- false
53
- ],
54
- [
55
- "layout",
56
- "selector",
57
- false
58
- ],
59
- [
60
- "selector",
61
- "state",
62
- false
63
- ]
64
- ])("merge compatibility %s + %s -> %s", (a, b, expected) => {
65
- expect(bucketsMergeCompatible(a, b)).toBe(expected);
66
- expect(bucketsMergeCompatible(b, a)).toBe(expected);
67
- });
68
- });
69
- describe("bucketsCompatible", () => {
70
- it.each([
71
- [
72
- "layout",
73
- "layout",
74
- true
75
- ],
76
- [
77
- "layout",
78
- "sizing",
79
- true
80
- ],
81
- [
82
- "shape",
83
- "shadow",
84
- true
85
- ],
86
- [
87
- "layout",
88
- "state",
89
- false
90
- ],
91
- [
92
- "arbitrary",
93
- "state",
94
- false
95
- ],
96
- [
97
- "layout",
98
- "selector",
99
- false
100
- ]
101
- ])("compatibility %s + %s -> %s", (a, b, expected) => {
102
- expect(bucketsCompatible(a, b)).toBe(expected);
103
- expect(bucketsCompatible(b, a)).toBe(expected);
104
- });
105
- });
106
- describe("stateKey", () => {
107
- it("uses the full variant stack for unique keys", () => {
108
- expect(stateKey("@md/field-group:[&>*]:w-auto")).not.toBe(stateKey("@md/field-group:[&>[data-slot=field-label]]:flex-auto"));
109
- });
110
- it("normalizes bracketed data variant stems", () => {
111
- expect(stateKey("data-[state=open]:opacity-100")).toBe("data-[state=open]");
112
- expect(stateKey("in-data-[slot=tooltip-content]:bg-background/20")).toBe("in-data-[slot=tooltip-content]");
113
- });
114
- it("keeps distinct keys for in-data-side-* stems", () => {
115
- expect(stateKey("in-data-side-right:cursor-e-resize")).toBe("in-data-side-right");
116
- expect(stateKey("in-data-side-left:cursor-w-resize")).not.toBe(stateKey("in-data-side-right:cursor-e-resize"));
117
- });
118
- });
119
- describe("indexOfFirstVariantColon + stripVariants", () => {
120
- it("ignores colons inside square brackets", () => {
121
- const tok = "[&_a:hover]:text-red-500";
122
- expect(indexOfFirstVariantColon(tok)).toBe(11);
123
- expect(stripVariants(tok)).toBe("text-red-500");
124
- });
125
- it("strips stacked variant prefixes", () => {
126
- expect(stripVariants("@min-[600px]:@max-[900px]:hidden")).toBe("hidden");
127
- });
128
- });
129
- describe("classifyToken", () => {
130
- it.each([
131
- ["flex", "layout"],
132
- ["w-4", "sizing"],
133
- ["px-3", "spacing"],
134
- ["rounded-md", "shape"],
135
- ["text-sm", "typography"],
136
- ["transition", "motion"],
137
- ["outline-hidden", "shadow"],
138
- ["focus-visible:outline-hidden", "state"],
139
- ["hover:opacity-80", "state"],
140
- ["[&_svg]:size-4", "selector"],
141
- ["*:rounded", "selector"],
142
- ["**:text-sm", "selector"],
143
- ["has-[img]:bg-muted", "selector"],
144
- ["in-[.popover]:opacity-100", "selector"],
145
- ["group-[.is-published]:block", "selector"],
146
- ["peer-[.is-dirty]:peer-required:block", "selector"],
147
- ["not-[.prose]:mt-4", "selector"],
148
- ["starting:opacity-0", "starting"],
149
- ["cursor-default", "behavior"],
150
- ["@container/sidebar", "existence"],
151
- ["@md/sidebar:w-full", "state"]
152
- ])("classifies %s -> %s", (token, bucket) => {
153
- expect(classifyToken(token)).toBe(bucket);
154
- });
155
- });
156
- describe("selectorKey", () => {
157
- it("merges shadcn svg size guard with plain [&_svg] utilities", () => {
158
- expect(selectorKey("[&_svg]:pointer-events-none")).toBe(selectorKey("[&_svg:not([class*='size-'])]:size-6"));
159
- });
160
- it("still splits unrelated arbitrary parent selectors", () => {
161
- expect(selectorKey("[&_svg]:size-4")).not.toBe(selectorKey("[&>*]:block"));
162
- });
163
- });
164
- //#endregion
165
- export {};
@@ -1,16 +0,0 @@
1
- import { i as DEFAULT_ARRANGE_TARGET, o as LONG_STRING_TOKEN_THRESHOLD, p as MAX_STRIP_VARIANT_PASSES } from "../../constants-AtPhF-Ct.mjs";
2
- import { c as selectorKey, d as tokenizeClassString, i as classifyToken, l as stateKey, n as bucketsMergeCompatible, o as indexOfFirstVariantColon, t as bucketsCompatible, u as stripVariants } from "../../tokenizer-CeZx73Zu.mjs";
3
- import { a as mergeCnUnconditionalLiteralPoolForTest, r as forEachStringLiteralInClassExpression } from "../../collectors-cn-BS8TTQ8O.mjs";
4
- import { a as isCnOrTvIdentifier, i as indentOfLineContaining, l as unwrapCnInsideTvCallReplacement, n as applyEditsDescending, o as lineOf, r as buildKnownCnTvBindings, s as moduleLooksLikeCnTvReexport, t as KNOWN_CN_TV_MODULES } from "../../ast-helpers-MDRYuIAk.mjs";
5
- import { n as walkTsxFiles, t as DEFAULT_SKIP_DIRS } from "../../walk-DjgQn66n.mjs";
6
- import { t as analyzeDirectory } from "../../analyze-DvtJ3j9m.mjs";
7
- import { t as printAnalyzeReport } from "../../report-DYxvw34T.mjs";
8
- import { a as suggestCnGroups, i as mergeSingletons, n as capGroups, o as summarizeGroupBucketLabels, r as mergeEaseTimingIntoFollowingAnimatedState, t as areCnTailwindPartitionsEquivalent } from "../../grouping-c1grpCQT.mjs";
9
- import { a as formatJsxCnAttributeValue, i as formatCnCall, n as formatArray, r as formatCnArguments, t as escapeTsStringLiteralContent } from "../../formatters-DGE8jJ53.mjs";
10
- import { n as ensureCnImport, t as cnModuleSpecifierForFile } from "../../imports-DSVq1xhB.mjs";
11
- import { t as groupFile } from "../../group-file-ClW7XdD6.mjs";
12
- import { n as ArrangeErrorCode, t as ArrangeError } from "../../errors-CpU1ogfA.mjs";
13
- import { n as runOnTarget, t as runArrangeSync } from "../../run-target-CJWrqNT4.mjs";
14
- import { n as createNodeCliLogger, t as createNodeCliFs } from "../../node-io-DFRbHO6m.mjs";
15
- import "../../arrange-BqP2DI3w.mjs";
16
- export { ArrangeError, ArrangeErrorCode, DEFAULT_ARRANGE_TARGET, DEFAULT_SKIP_DIRS, KNOWN_CN_TV_MODULES, LONG_STRING_TOKEN_THRESHOLD, MAX_STRIP_VARIANT_PASSES, analyzeDirectory, applyEditsDescending, areCnTailwindPartitionsEquivalent, bucketsCompatible, bucketsMergeCompatible, buildKnownCnTvBindings, capGroups, classifyToken, cnModuleSpecifierForFile, createNodeCliFs, createNodeCliLogger, ensureCnImport, escapeTsStringLiteralContent, forEachStringLiteralInClassExpression, formatArray, formatCnArguments, formatCnCall, formatJsxCnAttributeValue, groupFile, indentOfLineContaining, indexOfFirstVariantColon, isCnOrTvIdentifier, lineOf, mergeCnUnconditionalLiteralPoolForTest, mergeEaseTimingIntoFollowingAnimatedState, mergeSingletons, moduleLooksLikeCnTvReexport, printAnalyzeReport, runArrangeSync, runOnTarget, selectorKey, stateKey, stripVariants, suggestCnGroups, summarizeGroupBucketLabels, tokenizeClassString, unwrapCnInsideTvCallReplacement, walkTsxFiles };
@@ -1,2 +0,0 @@
1
- import { n as walkTsxFiles, t as DEFAULT_SKIP_DIRS } from "../../../walk-DjgQn66n.mjs";
2
- export { DEFAULT_SKIP_DIRS, walkTsxFiles };