@codefast/cli 0.3.13-canary.1 → 0.3.13-canary.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 (364) hide show
  1. package/README.md +1 -1
  2. package/dist/bin.d.ts +3 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/{bin.mjs → bin.js} +1 -4
  5. package/dist/commands/arrange.d.ts +3 -0
  6. package/dist/commands/arrange.d.ts.map +1 -0
  7. package/dist/commands/arrange.js +108 -0
  8. package/dist/commands/mirror.d.ts +3 -0
  9. package/dist/commands/mirror.d.ts.map +1 -0
  10. package/dist/commands/mirror.js +36 -0
  11. package/dist/commands/tag.d.ts +3 -0
  12. package/dist/commands/tag.d.ts.map +1 -0
  13. package/dist/commands/tag.js +44 -0
  14. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts +5 -0
  15. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts.map +1 -0
  16. package/dist/lib/arrange/application/ports/file-walker.port.d.ts +5 -0
  17. package/dist/lib/arrange/application/ports/file-walker.port.d.ts.map +1 -0
  18. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts +6 -0
  19. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts.map +1 -0
  20. package/dist/lib/arrange/application/requests/analyze-directory.request.js +4 -0
  21. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts +18 -0
  22. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts.map +1 -0
  23. package/dist/lib/arrange/application/requests/arrange-sync.request.js +15 -0
  24. package/dist/lib/arrange/application/requests/suggest-groups.request.d.ts +8 -0
  25. package/dist/lib/arrange/application/requests/suggest-groups.request.d.ts.map +1 -0
  26. package/dist/lib/arrange/application/requests/suggest-groups.request.js +8 -0
  27. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.d.ts +17 -0
  28. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.d.ts.map +1 -0
  29. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.js +24 -0
  30. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.d.ts +17 -0
  31. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.d.ts.map +1 -0
  32. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.js +46 -0
  33. package/dist/lib/arrange/application/use-cases/group-file.use-case.d.ts +5 -0
  34. package/dist/lib/arrange/application/use-cases/group-file.use-case.d.ts.map +1 -0
  35. package/dist/lib/arrange/application/use-cases/group-file.use-case.js +40 -0
  36. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.d.ts +19 -0
  37. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.d.ts.map +1 -0
  38. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.js +85 -0
  39. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.d.ts +7 -0
  40. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.d.ts.map +1 -0
  41. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.js +10 -0
  42. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts +12 -0
  43. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts.map +1 -0
  44. package/dist/lib/arrange/domain/arrange-analyze.service.js +116 -0
  45. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts +53 -0
  46. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts.map +1 -0
  47. package/dist/lib/arrange/domain/arrange-grouping.service.js +106 -0
  48. package/dist/lib/arrange/domain/ast/ast-helpers.helper.d.ts +28 -0
  49. package/dist/lib/arrange/domain/ast/ast-helpers.helper.d.ts.map +1 -0
  50. package/dist/lib/arrange/domain/ast/ast-helpers.helper.js +130 -0
  51. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts +179 -0
  52. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts.map +1 -0
  53. package/dist/lib/arrange/domain/ast/ast-node.model.js +210 -0
  54. package/dist/lib/arrange/domain/ast/collectors-cn.collector.d.ts +7 -0
  55. package/dist/lib/arrange/domain/ast/collectors-cn.collector.d.ts.map +1 -0
  56. package/dist/lib/arrange/domain/ast/collectors-cn.collector.js +70 -0
  57. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.d.ts +4 -0
  58. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.d.ts.map +1 -0
  59. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.js +21 -0
  60. package/dist/lib/arrange/domain/ast/collectors-tv.collector.d.ts +13 -0
  61. package/dist/lib/arrange/domain/ast/collectors-tv.collector.d.ts.map +1 -0
  62. package/dist/lib/arrange/domain/ast/collectors-tv.collector.js +302 -0
  63. package/dist/lib/arrange/domain/ast/targets.model.d.ts +8 -0
  64. package/dist/lib/arrange/domain/ast/targets.model.d.ts.map +1 -0
  65. package/dist/lib/arrange/domain/ast/targets.model.js +147 -0
  66. package/dist/lib/arrange/domain/constants.domain.d.ts +70 -0
  67. package/dist/lib/arrange/domain/constants.domain.d.ts.map +1 -0
  68. package/dist/lib/arrange/domain/constants.domain.js +182 -0
  69. package/dist/lib/arrange/domain/errors.domain.d.ts +14 -0
  70. package/dist/lib/arrange/domain/errors.domain.d.ts.map +1 -0
  71. package/dist/lib/arrange/domain/errors.domain.js +16 -0
  72. package/dist/lib/arrange/domain/grouping.domain.d.ts +41 -0
  73. package/dist/lib/arrange/domain/grouping.domain.d.ts.map +1 -0
  74. package/dist/lib/arrange/domain/grouping.domain.js +371 -0
  75. package/dist/lib/arrange/domain/imports.domain.d.ts +7 -0
  76. package/dist/lib/arrange/domain/imports.domain.d.ts.map +1 -0
  77. package/dist/lib/arrange/domain/imports.domain.js +80 -0
  78. package/dist/lib/arrange/domain/source-text-formatters.formatter.d.ts +16 -0
  79. package/dist/lib/arrange/domain/source-text-formatters.formatter.d.ts.map +1 -0
  80. package/dist/lib/arrange/domain/source-text-formatters.formatter.js +55 -0
  81. package/dist/lib/arrange/domain/tokenizer.util.d.ts +45 -0
  82. package/dist/lib/arrange/domain/tokenizer.util.d.ts.map +1 -0
  83. package/dist/lib/arrange/domain/tokenizer.util.js +469 -0
  84. package/dist/lib/arrange/domain/types.domain.d.ts +115 -0
  85. package/dist/lib/arrange/domain/types.domain.d.ts.map +1 -0
  86. package/dist/lib/arrange/domain/types.domain.js +10 -0
  87. package/dist/lib/arrange/index.d.ts +45 -0
  88. package/dist/lib/arrange/index.d.ts.map +1 -0
  89. package/dist/lib/arrange/index.js +41 -0
  90. package/dist/lib/arrange/infra/arrange-sync-cli-options.adapter.d.ts +14 -0
  91. package/dist/lib/arrange/infra/arrange-sync-cli-options.adapter.d.ts.map +1 -0
  92. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts +11 -0
  93. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts.map +1 -0
  94. package/dist/lib/arrange/infra/domain-source-parser.adapter.js +19 -0
  95. package/dist/lib/arrange/infra/ensure-cn-import.adapter.d.ts +3 -0
  96. package/dist/lib/arrange/infra/ensure-cn-import.adapter.d.ts.map +1 -0
  97. package/dist/lib/arrange/infra/ensure-cn-import.adapter.js +6 -0
  98. package/dist/lib/arrange/infra/file-walker.adapter.d.ts +8 -0
  99. package/dist/lib/arrange/infra/file-walker.adapter.d.ts.map +1 -0
  100. package/dist/lib/arrange/infra/file-walker.adapter.js +17 -0
  101. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.d.ts +8 -0
  102. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.d.ts.map +1 -0
  103. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.js +25 -0
  104. package/dist/lib/arrange/infra/ts-ast-translator.adapter.d.ts +10 -0
  105. package/dist/lib/arrange/infra/ts-ast-translator.adapter.d.ts.map +1 -0
  106. package/dist/lib/arrange/infra/ts-ast-translator.adapter.js +363 -0
  107. package/dist/lib/arrange/presentation/arrange-prelude.presenter.d.ts +14 -0
  108. package/dist/lib/arrange/presentation/arrange-prelude.presenter.d.ts.map +1 -0
  109. package/dist/lib/arrange/presentation/arrange-prelude.presenter.js +24 -0
  110. package/dist/lib/arrange/presentation/formatters.presenter.d.ts +3 -0
  111. package/dist/lib/arrange/presentation/formatters.presenter.d.ts.map +1 -0
  112. package/dist/lib/arrange/presentation/formatters.presenter.js +2 -0
  113. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.d.ts +4 -0
  114. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.d.ts.map +1 -0
  115. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.js +4 -0
  116. package/dist/lib/arrange/presentation/report.presenter.d.ts +4 -0
  117. package/dist/lib/arrange/presentation/report.presenter.d.ts.map +1 -0
  118. package/dist/lib/arrange/presentation/report.presenter.js +37 -0
  119. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.d.ts +2 -0
  120. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.d.ts.map +1 -0
  121. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.js +7 -0
  122. package/dist/lib/config/domain/schema.domain.d.ts +50 -0
  123. package/dist/lib/config/domain/schema.domain.d.ts.map +1 -0
  124. package/dist/lib/config/domain/schema.domain.js +43 -0
  125. package/dist/lib/config/index.d.ts +4 -0
  126. package/dist/lib/config/index.d.ts.map +1 -0
  127. package/dist/lib/config/index.js +2 -0
  128. package/dist/lib/config/infra/loader.adapter.d.ts +11 -0
  129. package/dist/lib/config/infra/loader.adapter.d.ts.map +1 -0
  130. package/dist/lib/config/infra/loader.adapter.js +90 -0
  131. package/dist/lib/core/application/architecture-boundaries.policy.d.ts +19 -0
  132. package/dist/lib/core/application/architecture-boundaries.policy.d.ts.map +1 -0
  133. package/dist/lib/core/application/architecture-boundaries.policy.js +370 -0
  134. package/dist/lib/core/application/ports/cli-io.port.d.ts +31 -0
  135. package/dist/lib/core/application/ports/cli-io.port.d.ts.map +1 -0
  136. package/dist/lib/core/application/schema-parse.util.d.ts +8 -0
  137. package/dist/lib/core/application/schema-parse.util.d.ts.map +1 -0
  138. package/dist/lib/core/application/schema-parse.util.js +20 -0
  139. package/dist/lib/core/application/utils/caught-unknown-message.util.d.ts +6 -0
  140. package/dist/lib/core/application/utils/caught-unknown-message.util.d.ts.map +1 -0
  141. package/dist/lib/core/application/utils/caught-unknown-message.util.js +34 -0
  142. package/dist/lib/core/application/utils/verbose-diagnostics.util.d.ts +5 -0
  143. package/dist/lib/core/application/utils/verbose-diagnostics.util.d.ts.map +1 -0
  144. package/dist/lib/core/application/utils/verbose-diagnostics.util.js +7 -0
  145. package/dist/lib/core/domain/errors.domain.d.ts +11 -0
  146. package/dist/lib/core/domain/errors.domain.d.ts.map +1 -0
  147. package/dist/lib/core/domain/errors.domain.js +9 -0
  148. package/dist/lib/core/domain/result.model.d.ts +17 -0
  149. package/dist/lib/core/domain/result.model.d.ts.map +1 -0
  150. package/dist/lib/core/domain/result.model.js +15 -0
  151. package/dist/lib/core/infra/container.adapter.d.ts +58 -0
  152. package/dist/lib/core/infra/container.adapter.d.ts.map +1 -0
  153. package/dist/lib/core/infra/container.adapter.js +80 -0
  154. package/dist/lib/core/infra/logging-decorator.adapter.d.ts +12 -0
  155. package/dist/lib/core/infra/logging-decorator.adapter.d.ts.map +1 -0
  156. package/dist/lib/core/infra/logging-decorator.adapter.js +75 -0
  157. package/dist/lib/core/presentation/cli-executor.presenter.d.ts +33 -0
  158. package/dist/lib/core/presentation/cli-executor.presenter.d.ts.map +1 -0
  159. package/dist/lib/core/presentation/cli-executor.presenter.js +73 -0
  160. package/dist/lib/core/presentation/format-app-error.presenter.d.ts +6 -0
  161. package/dist/lib/core/presentation/format-app-error.presenter.d.ts.map +1 -0
  162. package/dist/lib/core/presentation/format-app-error.presenter.js +19 -0
  163. package/dist/lib/core/presentation/global-cli-options.presenter.d.ts +9 -0
  164. package/dist/lib/core/presentation/global-cli-options.presenter.d.ts.map +1 -0
  165. package/dist/lib/core/presentation/global-cli-options.presenter.js +8 -0
  166. package/dist/lib/core/presentation/load-codefast-config.presenter.d.ts +8 -0
  167. package/dist/lib/core/presentation/load-codefast-config.presenter.d.ts.map +1 -0
  168. package/dist/lib/core/presentation/load-codefast-config.presenter.js +15 -0
  169. package/dist/lib/core/presentation/parse-cli-schema.presenter.d.ts +5 -0
  170. package/dist/lib/core/presentation/parse-cli-schema.presenter.d.ts.map +1 -0
  171. package/dist/lib/core/presentation/parse-cli-schema.presenter.js +4 -0
  172. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.d.ts +6 -0
  173. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.d.ts.map +1 -0
  174. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.js +17 -0
  175. package/dist/lib/core/presentation/workspace-root-strict.presenter.d.ts +5 -0
  176. package/dist/lib/core/presentation/workspace-root-strict.presenter.d.ts.map +1 -0
  177. package/dist/lib/core/presentation/workspace-root-strict.presenter.js +12 -0
  178. package/dist/lib/infra/config-reporter.adapter.d.ts +4 -0
  179. package/dist/lib/infra/config-reporter.adapter.d.ts.map +1 -0
  180. package/dist/lib/infra/config-reporter.adapter.js +9 -0
  181. package/dist/lib/infra/fs-contract.port.d.ts +2 -0
  182. package/dist/lib/infra/fs-contract.port.d.ts.map +1 -0
  183. package/dist/lib/infra/fs-contract.port.js +1 -0
  184. package/dist/lib/infra/node-io.adapter.d.ts +4 -0
  185. package/dist/lib/infra/node-io.adapter.d.ts.map +1 -0
  186. package/dist/lib/infra/node-io.adapter.js +37 -0
  187. package/dist/lib/infra/workspace/repo-root.adapter.d.ts +7 -0
  188. package/dist/lib/infra/workspace/repo-root.adapter.d.ts.map +1 -0
  189. package/dist/lib/infra/workspace/repo-root.adapter.js +23 -0
  190. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts +6 -0
  191. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts.map +1 -0
  192. package/dist/lib/mirror/application/ports/file-system-service.port.js +1 -0
  193. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts +27 -0
  194. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts.map +1 -0
  195. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.js +1 -0
  196. package/dist/lib/mirror/application/ports/package-repository.port.d.ts +16 -0
  197. package/dist/lib/mirror/application/ports/package-repository.port.d.ts.map +1 -0
  198. package/dist/lib/mirror/application/ports/package-repository.port.js +1 -0
  199. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts +7 -0
  200. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts.map +1 -0
  201. package/dist/lib/mirror/application/ports/workspace-service.port.js +1 -0
  202. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts +10 -0
  203. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts.map +1 -0
  204. package/dist/lib/mirror/application/requests/mirror-sync.request.js +8 -0
  205. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.d.ts +10 -0
  206. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.d.ts.map +1 -0
  207. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.js +271 -0
  208. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.d.ts +19 -0
  209. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.d.ts.map +1 -0
  210. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.js +168 -0
  211. package/dist/lib/mirror/domain/constants.domain.d.ts +6 -0
  212. package/dist/lib/mirror/domain/constants.domain.d.ts.map +1 -0
  213. package/dist/lib/mirror/domain/constants.domain.js +5 -0
  214. package/dist/lib/mirror/domain/errors.domain.d.ts +10 -0
  215. package/dist/lib/mirror/domain/errors.domain.d.ts.map +1 -0
  216. package/dist/lib/mirror/domain/errors.domain.js +12 -0
  217. package/dist/lib/mirror/domain/types.domain.d.ts +65 -0
  218. package/dist/lib/mirror/domain/types.domain.d.ts.map +1 -0
  219. package/dist/lib/mirror/domain/types.domain.js +1 -0
  220. package/dist/lib/mirror/index.d.ts +6 -0
  221. package/dist/lib/mirror/index.d.ts.map +1 -0
  222. package/dist/lib/mirror/index.js +1 -0
  223. package/dist/lib/mirror/infra/dirent-list.adapter.d.ts +9 -0
  224. package/dist/lib/mirror/infra/dirent-list.adapter.d.ts.map +1 -0
  225. package/dist/lib/mirror/infra/dirent-list.adapter.js +13 -0
  226. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts +7 -0
  227. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts.map +1 -0
  228. package/dist/lib/mirror/infra/file-system-service.adapter.js +47 -0
  229. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.d.ts +14 -0
  230. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.d.ts.map +1 -0
  231. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.js +1 -0
  232. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts +3 -0
  233. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts.map +1 -0
  234. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.js +13 -0
  235. package/dist/lib/mirror/infra/package-filter.adapter.d.ts +8 -0
  236. package/dist/lib/mirror/infra/package-filter.adapter.d.ts.map +1 -0
  237. package/dist/lib/mirror/infra/package-filter.adapter.js +33 -0
  238. package/dist/lib/mirror/infra/package-repository.adapter.d.ts +17 -0
  239. package/dist/lib/mirror/infra/package-repository.adapter.d.ts.map +1 -0
  240. package/dist/lib/mirror/infra/package-repository.adapter.js +17 -0
  241. package/dist/lib/mirror/infra/path-normalizer.adapter.d.ts +2 -0
  242. package/dist/lib/mirror/infra/path-normalizer.adapter.d.ts.map +1 -0
  243. package/dist/lib/mirror/infra/path-normalizer.adapter.js +4 -0
  244. package/dist/lib/mirror/infra/update-pkg.adapter.d.ts +19 -0
  245. package/dist/lib/mirror/infra/update-pkg.adapter.d.ts.map +1 -0
  246. package/dist/lib/mirror/infra/update-pkg.adapter.js +156 -0
  247. package/dist/lib/mirror/infra/workspace-packages.adapter.d.ts +26 -0
  248. package/dist/lib/mirror/infra/workspace-packages.adapter.d.ts.map +1 -0
  249. package/dist/lib/mirror/infra/workspace-packages.adapter.js +170 -0
  250. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts +8 -0
  251. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts.map +1 -0
  252. package/dist/lib/mirror/infra/workspace-service.adapter.js +10 -0
  253. package/dist/lib/mirror/presentation/mirror-prelude.presenter.d.ts +17 -0
  254. package/dist/lib/mirror/presentation/mirror-prelude.presenter.d.ts.map +1 -0
  255. package/dist/lib/mirror/presentation/mirror-prelude.presenter.js +35 -0
  256. package/dist/lib/mirror/presentation/reporter.presenter.d.ts +25 -0
  257. package/dist/lib/mirror/presentation/reporter.presenter.d.ts.map +1 -0
  258. package/dist/lib/mirror/presentation/reporter.presenter.js +140 -0
  259. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.d.ts +11 -0
  260. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.d.ts.map +1 -0
  261. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.js +27 -0
  262. package/dist/lib/shared/source-code/domain/text-edit.model.d.ts +14 -0
  263. package/dist/lib/shared/source-code/domain/text-edit.model.d.ts.map +1 -0
  264. package/dist/lib/shared/source-code/domain/text-edit.model.js +30 -0
  265. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.d.ts +4 -0
  266. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.d.ts.map +1 -0
  267. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.js +37 -0
  268. package/dist/lib/tag/application/ports/target-resolver.port.d.ts +6 -0
  269. package/dist/lib/tag/application/ports/target-resolver.port.d.ts.map +1 -0
  270. package/dist/lib/tag/application/ports/target-resolver.port.js +1 -0
  271. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts +6 -0
  272. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts.map +1 -0
  273. package/dist/lib/tag/application/ports/typescript-tree-walk.port.js +1 -0
  274. package/dist/lib/tag/application/requests/tag-sync.request.d.ts +10 -0
  275. package/dist/lib/tag/application/requests/tag-sync.request.d.ts.map +1 -0
  276. package/dist/lib/tag/application/requests/tag-sync.request.js +8 -0
  277. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.d.ts +23 -0
  278. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.d.ts.map +1 -0
  279. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.js +357 -0
  280. package/dist/lib/tag/domain/types.domain.d.ts +56 -0
  281. package/dist/lib/tag/domain/types.domain.d.ts.map +1 -0
  282. package/dist/lib/tag/domain/types.domain.js +1 -0
  283. package/dist/lib/tag/index.d.ts +14 -0
  284. package/dist/lib/tag/index.d.ts.map +1 -0
  285. package/dist/lib/tag/index.js +10 -0
  286. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.d.ts +14 -0
  287. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.d.ts.map +1 -0
  288. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.js +1 -0
  289. package/dist/lib/tag/infra/tag-target-candidates.adapter.d.ts +4 -0
  290. package/dist/lib/tag/infra/tag-target-candidates.adapter.d.ts.map +1 -0
  291. package/dist/lib/tag/infra/tag-target-candidates.adapter.js +200 -0
  292. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts +3 -0
  293. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts.map +1 -0
  294. package/dist/lib/tag/infra/tag-target-resolver.adapter.js +4 -0
  295. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts +3 -0
  296. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts.map +1 -0
  297. package/dist/lib/tag/infra/typescript-tree-walk.adapter.js +4 -0
  298. package/dist/lib/tag/presentation/colors.presenter.d.ts +8 -0
  299. package/dist/lib/tag/presentation/colors.presenter.d.ts.map +1 -0
  300. package/dist/lib/tag/presentation/colors.presenter.js +9 -0
  301. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.d.ts +8 -0
  302. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.d.ts.map +1 -0
  303. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.js +10 -0
  304. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.d.ts +8 -0
  305. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.d.ts.map +1 -0
  306. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.js +10 -0
  307. package/dist/lib/tag/presentation/tag-prelude.presenter.d.ts +15 -0
  308. package/dist/lib/tag/presentation/tag-prelude.presenter.d.ts.map +1 -0
  309. package/dist/lib/tag/presentation/tag-prelude.presenter.js +31 -0
  310. package/dist/lib/tag/presentation/tag-sync.presenter.d.ts +20 -0
  311. package/dist/lib/tag/presentation/tag-sync.presenter.d.ts.map +1 -0
  312. package/dist/lib/tag/presentation/tag-sync.presenter.js +92 -0
  313. package/dist/program.d.ts +4 -0
  314. package/dist/program.d.ts.map +1 -0
  315. package/dist/program.js +40 -0
  316. package/package.json +8 -5
  317. package/dist/commands/arrange.mjs +0 -107
  318. package/dist/commands/mirror.mjs +0 -66
  319. package/dist/commands/tag.mjs +0 -58
  320. package/dist/lib/arrange/application/analyze.mjs +0 -92
  321. package/dist/lib/arrange/application/group-file.mjs +0 -113
  322. package/dist/lib/arrange/application/run-target.mjs +0 -65
  323. package/dist/lib/arrange/domain/ast/ast-helpers.mjs +0 -115
  324. package/dist/lib/arrange/domain/ast/collectors-cn.mjs +0 -61
  325. package/dist/lib/arrange/domain/ast/collectors-jsx.mjs +0 -20
  326. package/dist/lib/arrange/domain/ast/collectors-tv.mjs +0 -170
  327. package/dist/lib/arrange/domain/ast/targets.mjs +0 -106
  328. package/dist/lib/arrange/domain/constants.mjs +0 -169
  329. package/dist/lib/arrange/domain/errors.mjs +0 -19
  330. package/dist/lib/arrange/domain/grouping.mjs +0 -235
  331. package/dist/lib/arrange/domain/imports.mjs +0 -54
  332. package/dist/lib/arrange/domain/tokenizer.mjs +0 -216
  333. package/dist/lib/arrange/index.mjs +0 -15
  334. package/dist/lib/arrange/infra/walk.mjs +0 -33
  335. package/dist/lib/arrange/presentation/formatters.mjs +0 -52
  336. package/dist/lib/arrange/presentation/report.mjs +0 -24
  337. package/dist/lib/config/domain/schema.mjs +0 -25
  338. package/dist/lib/config/index.mjs +0 -3
  339. package/dist/lib/config/infra/loader.mjs +0 -78
  340. package/dist/lib/infra/caught-unknown-message.mjs +0 -20
  341. package/dist/lib/infra/config-reporter.mjs +0 -10
  342. package/dist/lib/infra/node-io.mjs +0 -30
  343. package/dist/lib/infra/workspace/repo-root.mjs +0 -22
  344. package/dist/lib/mirror/application/engine.mjs +0 -248
  345. package/dist/lib/mirror/application/sync.mjs +0 -162
  346. package/dist/lib/mirror/domain/constants.mjs +0 -12
  347. package/dist/lib/mirror/domain/errors.mjs +0 -15
  348. package/dist/lib/mirror/index.mjs +0 -2
  349. package/dist/lib/mirror/infra/dirent-list.mjs +0 -14
  350. package/dist/lib/mirror/infra/package-filter.mjs +0 -26
  351. package/dist/lib/mirror/infra/path-normalizer.mjs +0 -7
  352. package/dist/lib/mirror/infra/update-pkg.mjs +0 -105
  353. package/dist/lib/mirror/infra/workspace-packages.mjs +0 -159
  354. package/dist/lib/mirror/presentation/reporter.mjs +0 -111
  355. package/dist/lib/tag/application/engine.mjs +0 -287
  356. package/dist/lib/tag/index.mjs +0 -4
  357. package/dist/lib/tag/infra/target-resolver.mjs +0 -170
  358. package/dist/lib/tag/presentation/colors.mjs +0 -12
  359. package/dist/lib/tag/presentation/tag-presenter.mjs +0 -63
  360. package/dist/program.mjs +0 -34
  361. /package/dist/lib/arrange/{domain/types.mjs → application/ports/domain-source-parser.port.js} +0 -0
  362. /package/dist/lib/{infra/fs-contract.mjs → arrange/application/ports/file-walker.port.js} +0 -0
  363. /package/dist/lib/{mirror/domain/types.mjs → arrange/infra/arrange-sync-cli-options.adapter.js} +0 -0
  364. /package/dist/lib/{tag/domain/types.mjs → core/application/ports/cli-io.port.js} +0 -0
@@ -1,61 +0,0 @@
1
- import "../constants.mjs";
2
- import ts from "typescript";
3
- //#region src/lib/arrange/domain/ast/collectors-cn.ts
4
- function forEachStringLiteralInClassExpression(expr, sink, depth = 0, options) {
5
- if (depth > 12) return;
6
- if (ts.isStringLiteral(expr) || ts.isNoSubstitutionTemplateLiteral(expr)) {
7
- sink(expr);
8
- return;
9
- }
10
- if (ts.isParenthesizedExpression(expr)) {
11
- forEachStringLiteralInClassExpression(expr.expression, sink, depth + 1, options);
12
- return;
13
- }
14
- if (ts.isAsExpression(expr) || ts.isSatisfiesExpression(expr)) {
15
- forEachStringLiteralInClassExpression(expr.expression, sink, depth + 1, options);
16
- return;
17
- }
18
- if (ts.isNonNullExpression(expr)) {
19
- forEachStringLiteralInClassExpression(expr.expression, sink, depth + 1, options);
20
- return;
21
- }
22
- if (ts.isConditionalExpression(expr)) {
23
- if (options?.descendIntoConditional === false) return;
24
- forEachStringLiteralInClassExpression(expr.whenTrue, sink, depth + 1, options);
25
- forEachStringLiteralInClassExpression(expr.whenFalse, sink, depth + 1, options);
26
- return;
27
- }
28
- if (ts.isBinaryExpression(expr) && expr.operatorToken.kind === ts.SyntaxKind.PlusToken) {
29
- forEachStringLiteralInClassExpression(expr.left, sink, depth + 1, options);
30
- forEachStringLiteralInClassExpression(expr.right, sink, depth + 1, options);
31
- return;
32
- }
33
- if (ts.isArrayLiteralExpression(expr)) for (const arrayElement of expr.elements) {
34
- if (ts.isSpreadElement(arrayElement)) continue;
35
- forEachStringLiteralInClassExpression(arrayElement, sink, depth + 1, options);
36
- }
37
- }
38
- function isUnsafeLiteralForCnStyleApplySplit(classLiteral) {
39
- return ts.isArrayLiteralExpression(classLiteral.parent);
40
- }
41
- const CN_APPLY_LITERAL_WALK_OPTS = { descendIntoConditional: false };
42
- function collectUnconditionalTailwindLiteralsFromCnArguments(args) {
43
- const staticLits = [];
44
- for (const arg of args) if (ts.isStringLiteral(arg) || ts.isNoSubstitutionTemplateLiteral(arg)) {
45
- if (!isUnsafeLiteralForCnStyleApplySplit(arg)) staticLits.push(arg);
46
- } else forEachStringLiteralInClassExpression(arg, (lit) => {
47
- if (!isUnsafeLiteralForCnStyleApplySplit(lit)) staticLits.push(lit);
48
- }, 0, CN_APPLY_LITERAL_WALK_OPTS);
49
- return staticLits;
50
- }
51
- function mergeCnUnconditionalLiteralPoolForTest(argsSnippet, options) {
52
- const callee = options?.callee ?? "cn";
53
- const sourceText = `${callee}(${argsSnippet});`;
54
- const stmt = ts.createSourceFile("mergeCnUnconditionalLiteralPoolForTest.ts", sourceText, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS).statements[0];
55
- if (!ts.isExpressionStatement(stmt)) throw new Error("expected expression statement");
56
- const call = stmt.expression;
57
- if (!ts.isCallExpression(call) || !ts.isIdentifier(call.expression) || call.expression.text !== callee) throw new Error(`expected ${callee}(...) call`);
58
- return collectUnconditionalTailwindLiteralsFromCnArguments(call.arguments).map((literal) => literal.text).join(" ");
59
- }
60
- //#endregion
61
- export { CN_APPLY_LITERAL_WALK_OPTS, collectUnconditionalTailwindLiteralsFromCnArguments, forEachStringLiteralInClassExpression, isUnsafeLiteralForCnStyleApplySplit, mergeCnUnconditionalLiteralPoolForTest };
@@ -1,20 +0,0 @@
1
- import ts from "typescript";
2
- //#region src/lib/arrange/domain/ast/collectors-jsx.ts
3
- function jsxClassNameStaticLiteral(jsxClassNameAttribute) {
4
- if (!ts.isIdentifier(jsxClassNameAttribute.name) || jsxClassNameAttribute.name.text !== "className") return;
5
- const init = jsxClassNameAttribute.initializer;
6
- if (!init) return;
7
- if (ts.isStringLiteral(init) || ts.isNoSubstitutionTemplateLiteral(init)) return {
8
- lit: init,
9
- valueNode: init
10
- };
11
- if (ts.isJsxExpression(init) && init.expression) {
12
- const jsxExpressionBody = init.expression;
13
- if (ts.isStringLiteral(jsxExpressionBody) || ts.isNoSubstitutionTemplateLiteral(jsxExpressionBody)) return {
14
- lit: jsxExpressionBody,
15
- valueNode: init
16
- };
17
- }
18
- }
19
- //#endregion
20
- export { jsxClassNameStaticLiteral };
@@ -1,170 +0,0 @@
1
- import "../constants.mjs";
2
- import { tokenizeClassString } from "../tokenizer.mjs";
3
- import { CN_APPLY_LITERAL_WALK_OPTS, collectUnconditionalTailwindLiteralsFromCnArguments, forEachStringLiteralInClassExpression, isUnsafeLiteralForCnStyleApplySplit } from "./collectors-cn.mjs";
4
- import { buildKnownCnTvBindings, isCnOrTvIdentifier, propertyAssignmentNameText } from "./ast-helpers.mjs";
5
- import ts from "typescript";
6
- //#region src/lib/arrange/domain/ast/collectors-tv.ts
7
- function traverseTvObject(sf, obj, visitor, depth = 0, knownBindings) {
8
- if (depth > 12) return;
9
- for (const prop of obj.properties) {
10
- if (!ts.isPropertyAssignment(prop)) continue;
11
- const init = prop.initializer;
12
- if (ts.isStringLiteral(init) || ts.isNoSubstitutionTemplateLiteral(init)) visitor(init, sf, void 0);
13
- else if (ts.isArrayLiteralExpression(init)) for (const arrayElement of init.elements) {
14
- if (ts.isSpreadElement(arrayElement)) continue;
15
- if (ts.isStringLiteral(arrayElement) || ts.isNoSubstitutionTemplateLiteral(arrayElement)) visitor(arrayElement, sf, void 0);
16
- else if (ts.isCallExpression(arrayElement) && isCnOrTvIdentifier(arrayElement.expression, "cn", knownBindings)) for (const arg of arrayElement.arguments) forEachStringLiteralInClassExpression(arg, (lit) => {
17
- visitor(lit, sf, arrayElement);
18
- });
19
- else if (ts.isObjectLiteralExpression(arrayElement)) for (const objectProperty of arrayElement.properties) {
20
- if (!ts.isPropertyAssignment(objectProperty)) continue;
21
- const propName = propertyAssignmentNameText(objectProperty);
22
- if (propName !== "className" && propName !== "class") continue;
23
- const innerInit = objectProperty.initializer;
24
- if (ts.isStringLiteral(innerInit) || ts.isNoSubstitutionTemplateLiteral(innerInit)) visitor(innerInit, sf, void 0);
25
- else if (ts.isArrayLiteralExpression(innerInit)) for (const nestedArrayElement of innerInit.elements) {
26
- if (ts.isSpreadElement(nestedArrayElement)) continue;
27
- if (ts.isStringLiteral(nestedArrayElement) || ts.isNoSubstitutionTemplateLiteral(nestedArrayElement)) visitor(nestedArrayElement, sf, void 0);
28
- }
29
- else if (ts.isCallExpression(innerInit) && isCnOrTvIdentifier(innerInit.expression, "cn", knownBindings)) for (const arg of innerInit.arguments) forEachStringLiteralInClassExpression(arg, (lit) => {
30
- visitor(lit, sf, innerInit);
31
- });
32
- }
33
- }
34
- else if (ts.isObjectLiteralExpression(init)) traverseTvObject(sf, init, visitor, depth + 1, knownBindings);
35
- else if (ts.isCallExpression(init) && isCnOrTvIdentifier(init.expression, "cn", knownBindings)) for (const arg of init.arguments) forEachStringLiteralInClassExpression(arg, (lit) => {
36
- visitor(lit, sf, init);
37
- });
38
- }
39
- }
40
- function collectCnCallsInsideTv(sf, obj, knownBindings, depth = 0) {
41
- if (depth > 12) return [];
42
- const calls = [];
43
- for (const prop of obj.properties) {
44
- if (!ts.isPropertyAssignment(prop)) continue;
45
- const init = prop.initializer;
46
- if (ts.isArrayLiteralExpression(init)) for (const arrayElement of init.elements) {
47
- if (ts.isSpreadElement(arrayElement)) continue;
48
- if (ts.isCallExpression(arrayElement) && isCnOrTvIdentifier(arrayElement.expression, "cn", knownBindings)) calls.push(arrayElement);
49
- else if (ts.isObjectLiteralExpression(arrayElement)) for (const objectProperty of arrayElement.properties) {
50
- if (!ts.isPropertyAssignment(objectProperty)) continue;
51
- const propName = propertyAssignmentNameText(objectProperty);
52
- if (propName !== "className" && propName !== "class") continue;
53
- const innerInit = objectProperty.initializer;
54
- if (ts.isCallExpression(innerInit) && isCnOrTvIdentifier(innerInit.expression, "cn", knownBindings)) calls.push(innerInit);
55
- }
56
- }
57
- else if (ts.isObjectLiteralExpression(init)) calls.push(...collectCnCallsInsideTv(sf, init, knownBindings, depth + 1));
58
- else if (ts.isCallExpression(init) && isCnOrTvIdentifier(init.expression, "cn", knownBindings)) calls.push(init);
59
- }
60
- return calls;
61
- }
62
- function listAllCnCallsInsideTvInSourceFile(sf, knownBindings) {
63
- const calls = [];
64
- const visitTypeScriptSubtree = (tsNode) => {
65
- if (ts.isCallExpression(tsNode) && isCnOrTvIdentifier(tsNode.expression, "tv", knownBindings)) {
66
- const arg0 = tsNode.arguments[0];
67
- if (arg0 && ts.isObjectLiteralExpression(arg0)) calls.push(...collectCnCallsInsideTv(sf, arg0, knownBindings, 0));
68
- }
69
- ts.forEachChild(tsNode, visitTypeScriptSubtree);
70
- };
71
- visitTypeScriptSubtree(sf);
72
- return calls;
73
- }
74
- function makeStringNode(nodes, sf, isTvContext, cnCall) {
75
- return {
76
- nodes,
77
- sf,
78
- isTvContext,
79
- cnCall,
80
- get primaryClassLiteral() {
81
- return this.nodes[0];
82
- }
83
- };
84
- }
85
- function slotClassString(stringNode) {
86
- return stringNode.nodes.map((literal) => literal.text).join(" ");
87
- }
88
- function emitTvSlot(lits, sf, cnCall, results, seenNodePos) {
89
- if (lits.length === 0) return;
90
- const firstPos = lits[0].getStart(sf);
91
- if (seenNodePos.has(firstPos)) return;
92
- seenNodePos.add(firstPos);
93
- if (lits.reduce((accumulatedTokenCount, literal) => accumulatedTokenCount + tokenizeClassString(literal.text).length, 0) < 2) return;
94
- results.push(makeStringNode(lits, sf, true, cnCall));
95
- }
96
- function collectTvSlots(sf, obj, knownBindings, results, seenNodePos, depth = 0) {
97
- if (depth > 12) return;
98
- for (const prop of obj.properties) {
99
- if (!ts.isPropertyAssignment(prop)) continue;
100
- const init = prop.initializer;
101
- if (ts.isStringLiteral(init) || ts.isNoSubstitutionTemplateLiteral(init)) emitTvSlot([init], sf, void 0, results, seenNodePos);
102
- else if (ts.isArrayLiteralExpression(init)) {
103
- const arrayPos = init.getStart(sf);
104
- if (seenNodePos.has(arrayPos)) continue;
105
- seenNodePos.add(arrayPos);
106
- const staticLits = [];
107
- for (const arrayElement of init.elements) {
108
- if (ts.isSpreadElement(arrayElement)) continue;
109
- if (ts.isStringLiteral(arrayElement) || ts.isNoSubstitutionTemplateLiteral(arrayElement)) staticLits.push(arrayElement);
110
- else if (ts.isCallExpression(arrayElement) && isCnOrTvIdentifier(arrayElement.expression, "cn", knownBindings)) for (const arg of arrayElement.arguments) forEachStringLiteralInClassExpression(arg, (lit) => {
111
- if (!isUnsafeLiteralForCnStyleApplySplit(lit)) staticLits.push(lit);
112
- }, 0, CN_APPLY_LITERAL_WALK_OPTS);
113
- else if (ts.isObjectLiteralExpression(arrayElement)) for (const objectProperty of arrayElement.properties) {
114
- if (!ts.isPropertyAssignment(objectProperty)) continue;
115
- const propName = propertyAssignmentNameText(objectProperty);
116
- if (propName !== "className" && propName !== "class") continue;
117
- const innerInit = objectProperty.initializer;
118
- if (ts.isStringLiteral(innerInit) || ts.isNoSubstitutionTemplateLiteral(innerInit)) emitTvSlot([innerInit], sf, void 0, results, seenNodePos);
119
- else if (ts.isArrayLiteralExpression(innerInit)) {
120
- const innerLits = [];
121
- for (const nestedArrayElement of innerInit.elements) if (!ts.isSpreadElement(nestedArrayElement) && (ts.isStringLiteral(nestedArrayElement) || ts.isNoSubstitutionTemplateLiteral(nestedArrayElement))) innerLits.push(nestedArrayElement);
122
- emitTvSlot(innerLits, sf, void 0, results, seenNodePos);
123
- } else if (ts.isCallExpression(innerInit) && isCnOrTvIdentifier(innerInit.expression, "cn", knownBindings)) {
124
- const cnLits = [];
125
- for (const arg of innerInit.arguments) forEachStringLiteralInClassExpression(arg, (lit) => {
126
- if (!isUnsafeLiteralForCnStyleApplySplit(lit)) cnLits.push(lit);
127
- }, 0, CN_APPLY_LITERAL_WALK_OPTS);
128
- emitTvSlot(cnLits, sf, innerInit, results, seenNodePos);
129
- }
130
- }
131
- }
132
- if (staticLits.length > 0) emitTvSlot(staticLits, sf, void 0, results, seenNodePos);
133
- } else if (ts.isObjectLiteralExpression(init)) collectTvSlots(sf, init, knownBindings, results, seenNodePos, depth + 1);
134
- else if (ts.isCallExpression(init) && isCnOrTvIdentifier(init.expression, "cn", knownBindings)) {
135
- const cnLits = [];
136
- for (const arg of init.arguments) forEachStringLiteralInClassExpression(arg, (lit) => {
137
- if (!isUnsafeLiteralForCnStyleApplySplit(lit)) cnLits.push(lit);
138
- }, 0, CN_APPLY_LITERAL_WALK_OPTS);
139
- emitTvSlot(cnLits, sf, init, results, seenNodePos);
140
- }
141
- }
142
- }
143
- function collectGroupableStringNodes(sf) {
144
- const results = [];
145
- const seenNodePos = /* @__PURE__ */ new Set();
146
- const knownBindings = buildKnownCnTvBindings(sf);
147
- const visitTypeScriptSubtree = (tsNode) => {
148
- if (ts.isCallExpression(tsNode)) {
149
- if (isCnOrTvIdentifier(tsNode.expression, "cn", knownBindings)) {
150
- const callPos = tsNode.getStart(sf);
151
- if (seenNodePos.has(callPos)) {
152
- ts.forEachChild(tsNode, visitTypeScriptSubtree);
153
- return;
154
- }
155
- seenNodePos.add(callPos);
156
- const staticLits = collectUnconditionalTailwindLiteralsFromCnArguments(tsNode.arguments);
157
- const totalTokens = staticLits.reduce((accumulatedTokenCount, literal) => accumulatedTokenCount + tokenizeClassString(literal.text).length, 0);
158
- if (staticLits.length > 0 && totalTokens >= 2) results.push(makeStringNode(staticLits, sf, false, tsNode));
159
- } else if (isCnOrTvIdentifier(tsNode.expression, "tv", knownBindings)) {
160
- const arg0 = tsNode.arguments[0];
161
- if (arg0 && ts.isObjectLiteralExpression(arg0)) collectTvSlots(sf, arg0, knownBindings, results, seenNodePos);
162
- }
163
- }
164
- ts.forEachChild(tsNode, visitTypeScriptSubtree);
165
- };
166
- visitTypeScriptSubtree(sf);
167
- return results;
168
- }
169
- //#endregion
170
- export { collectCnCallsInsideTv, collectGroupableStringNodes, collectTvSlots, emitTvSlot, listAllCnCallsInsideTvInSourceFile, makeStringNode, slotClassString, traverseTvObject };
@@ -1,106 +0,0 @@
1
- import "../constants.mjs";
2
- import { tokenizeClassString } from "../tokenizer.mjs";
3
- import { isUnsafeLiteralForCnStyleApplySplit } from "./collectors-cn.mjs";
4
- import { jsxClassNameStaticLiteral } from "./collectors-jsx.mjs";
5
- import { indentOfLineContaining } from "./ast-helpers.mjs";
6
- import { collectGroupableStringNodes, slotClassString } from "./collectors-tv.mjs";
7
- import { areCnTailwindPartitionsEquivalent, suggestCnGroups, summarizeGroupBucketLabels } from "../grouping.mjs";
8
- import { escapeTsStringLiteralContent, formatArray, formatJsxCnAttributeValue } from "../../presentation/formatters.mjs";
9
- import ts from "typescript";
10
- //#region src/lib/arrange/domain/ast/targets.ts
11
- function targetReplaceStart(target) {
12
- if (target.kind === "cnArg") return target.item.cnCall ? target.item.cnCall.getStart(target.item.sf) : target.item.primaryClassLiteral.getStart(target.item.sf);
13
- return target.valueNode.getStart(target.sf);
14
- }
15
- function collectLongJsxClassNameTargets(sf) {
16
- const results = [];
17
- const visitTypeScriptSubtree = (tsNode) => {
18
- if (ts.isJsxAttribute(tsNode)) {
19
- const parsed = jsxClassNameStaticLiteral(tsNode);
20
- if (parsed && tokenizeClassString(parsed.lit.text).length >= 2) results.push({
21
- kind: "jsxClassName",
22
- sf,
23
- lit: parsed.lit,
24
- valueNode: parsed.valueNode
25
- });
26
- }
27
- ts.forEachChild(tsNode, visitTypeScriptSubtree);
28
- };
29
- visitTypeScriptSubtree(sf);
30
- return results;
31
- }
32
- function collectGroupTargets(sf, filePath) {
33
- const cnPart = collectGroupableStringNodes(sf).map((stringNode) => ({
34
- kind: "cnArg",
35
- item: stringNode
36
- }));
37
- if (!filePath.endsWith(".tsx")) return cnPart;
38
- return [...cnPart, ...collectLongJsxClassNameTargets(sf)];
39
- }
40
- function formatCnCallReplacement(stringNode, sourceText, withClassName) {
41
- const call = stringNode.cnCall;
42
- const sf = stringNode.sf;
43
- const baseIndent = indentOfLineContaining(sourceText, call.getStart(sf));
44
- const argIndent = `${baseIndent} `;
45
- const dynamicArgTexts = [];
46
- for (const arg of call.arguments) if (!((ts.isStringLiteral(arg) || ts.isNoSubstitutionTemplateLiteral(arg)) && !isUnsafeLiteralForCnStyleApplySplit(arg))) dynamicArgTexts.push(sourceText.slice(arg.getStart(sf), arg.getEnd()));
47
- const pool = slotClassString(stringNode);
48
- const groups = pool.trim() ? suggestCnGroups(pool) : [];
49
- const allArgs = [];
50
- if (groups.length > 1) for (const group of groups) allArgs.push(`${argIndent}"${escapeTsStringLiteralContent(group)}"`);
51
- else if (groups.length === 1) allArgs.push(`${argIndent}"${escapeTsStringLiteralContent(groups[0])}"`);
52
- for (const dynamicArgumentSource of dynamicArgTexts) allArgs.push(`${argIndent}${dynamicArgumentSource}`);
53
- if (withClassName) allArgs.push(`${argIndent}className`);
54
- const commaAfterLastArg = allArgs.length > 1;
55
- return `cn(\n${allArgs.map((argLine, lineIndex) => lineIndex < allArgs.length - 1 || commaAfterLastArg ? `${argLine},` : `${argLine}`).join("\n")}\n${baseIndent})`;
56
- }
57
- function planGroupEditForTarget(target, textAfterUnwrap, withClassName) {
58
- if (target.kind === "jsxClassName") {
59
- const groups = suggestCnGroups(target.lit.text);
60
- if (groups.length <= 1) return;
61
- const start = target.valueNode.getStart(target.sf);
62
- return {
63
- start,
64
- end: target.valueNode.getEnd(),
65
- replacement: formatJsxCnAttributeValue(groups, textAfterUnwrap, start),
66
- bucketSummary: summarizeGroupBucketLabels(groups),
67
- jsxCn: true,
68
- lineSf: target.sf,
69
- reportNode: target.lit,
70
- label: "JSX className"
71
- };
72
- }
73
- const groups = suggestCnGroups(slotClassString(target.item));
74
- if (groups.length <= 1) return;
75
- if (areCnTailwindPartitionsEquivalent(target.item.nodes.map((classLiteral) => classLiteral.text), groups)) return;
76
- if (!target.item.cnCall) {
77
- const anchorClassLiteral = target.item.primaryClassLiteral;
78
- const parentArray = target.item.nodes.length > 1 && ts.isArrayLiteralExpression(anchorClassLiteral.parent) ? anchorClassLiteral.parent : null;
79
- const start = parentArray ? parentArray.getStart(target.item.sf) : anchorClassLiteral.getStart(target.item.sf);
80
- const end = parentArray ? parentArray.getEnd() : anchorClassLiteral.getEnd();
81
- const baseIndent = indentOfLineContaining(textAfterUnwrap, start);
82
- return {
83
- start,
84
- end,
85
- replacement: formatArray(groups).split("\n").map((line, lineIndex) => lineIndex === 0 ? line : `${baseIndent}${line}`).join("\n"),
86
- bucketSummary: summarizeGroupBucketLabels(groups),
87
- jsxCn: false,
88
- lineSf: target.item.sf,
89
- reportNode: anchorClassLiteral,
90
- label: target.item.isTvContext ? "tv" : "cn"
91
- };
92
- }
93
- const call = target.item.cnCall;
94
- return {
95
- start: call.getStart(target.item.sf),
96
- end: call.getEnd(),
97
- replacement: formatCnCallReplacement(target.item, textAfterUnwrap, withClassName),
98
- bucketSummary: summarizeGroupBucketLabels(groups),
99
- jsxCn: false,
100
- lineSf: target.item.sf,
101
- reportNode: target.item.primaryClassLiteral,
102
- label: target.item.isTvContext ? "tv" : "cn"
103
- };
104
- }
105
- //#endregion
106
- export { collectGroupTargets, collectLongJsxClassNameTargets, formatCnCallReplacement, planGroupEditForTarget, targetReplaceStart };
@@ -1,169 +0,0 @@
1
- //#region src/lib/arrange/domain/constants.ts
2
- /** Analyze report: long literal threshold (token count). */
3
- const LONG_STRING_TOKEN_THRESHOLD = 18;
4
- /**
5
- * Minimum token count for a string to be considered a candidate for grouping
6
- * in the apply/preview pipeline. Intentionally much lower than
7
- * {@link LONG_STRING_TOKEN_THRESHOLD} (analyze only).
8
- */
9
- const APPLY_MIN_TOKENS = 2;
10
- /**
11
- * Minimum tokens a group must have to stand alone before singleton-merging.
12
- * Set to 2 so single-token groups are not collapsed into unrelated buckets by the merger.
13
- */
14
- const MIN_GROUP_TOKENS = 2;
15
- /** Dynamic max groups clamp: base bound. */
16
- const MAX_GROUPS_BASE = 4;
17
- /** Dynamic max groups clamp: upper cap. */
18
- const MAX_GROUPS_CAP = 24;
19
- /**
20
- * Extra slots so a few state / aria groups do not force `capGroups` to merge
21
- * unrelated buckets (e.g. `bg-border` + `outline-hidden`).
22
- */
23
- const MAX_GROUPS_HEADROOM = 2;
24
- /** Maximum findings printed per category in the analyze report. */
25
- const MAX_REPORT_LINES = 40;
26
- /** Maximum recursion depth when traversing `tv()` object literals. */
27
- const MAX_OBJECT_DEPTH = 12;
28
- /** Maximum depth when peeling conditional / parens / arrays inside `cn(...)` args. */
29
- const MAX_CLASS_EXPR_DEPTH = 12;
30
- /**
31
- * Maximum variant-stripping passes in {@link stripVariants}.
32
- * Real-world Tailwind stacks rarely exceed 4–5 segments (e.g. `@md/sidebar:group-hover:dark:focus-visible:`);
33
- * 12 is a conservative safety cap that prevents runaway loops on malformed input.
34
- */
35
- const MAX_STRIP_VARIANT_PASSES = 12;
36
- /**
37
- * Passed when optional `knownBindings` is missing — size 0 disables matching
38
- * for `cn` / `tv` identifier resolution.
39
- */
40
- const EMPTY_CN_TV_BINDINGS = /* @__PURE__ */ new Set();
41
- /**
42
- * Bucket sort order — **render pipeline** (lower → earlier in output).
43
- * Existence → Position → Layout → Sizing → Spacing → Shape → Background → Shadow
44
- * → Typography → Composite → Motion → Starting → Behavior → State (variants) → Selector variants.
45
- */
46
- const BUCKET_ORDER = {
47
- existence: 0,
48
- position: 1,
49
- layout: 2,
50
- sizing: 3,
51
- spacing: 4,
52
- shape: 5,
53
- background: 6,
54
- shadow: 7,
55
- typography: 8,
56
- composite: 9,
57
- motion: 10,
58
- starting: 11,
59
- behavior: 12,
60
- state: 13,
61
- selector: 14,
62
- other: 15,
63
- arbitrary: 16
64
- };
65
- /**
66
- * Compatible bucket **pairs** — two adjacent tokens whose buckets appear in the same
67
- * `Set` may stay in one `cn()` string chunk. Compatibility is **not transitive**: there is
68
- * no `{position, sizing}` pair, so `fixed inset-0` and `overflow-auto` become **separate**
69
- * literals unless **layout** tokens sit between them in sorted order; then
70
- * `position↔layout` and `layout↔sizing` each justify one hop and the whole “box in flow”
71
- * (place + tracks + scrollport) stays in one chunk — co-located because they jointly define
72
- * stacking and scroll behavior for the same surface.
73
- */
74
- const COMPATIBLE_BUCKET_SETS = [
75
- new Set(["existence", "position"]),
76
- new Set(["existence", "layout"]),
77
- new Set(["position", "layout"]),
78
- new Set(["layout", "sizing"]),
79
- new Set(["shape", "shadow"]),
80
- new Set(["background", "shadow"]),
81
- new Set(["background", "typography"]),
82
- new Set(["layout", "typography"]),
83
- new Set(["sizing", "typography"]),
84
- new Set(["motion", "behavior"]),
85
- new Set(["motion", "starting"]),
86
- new Set(["composite", "motion"]),
87
- new Set(["sizing", "composite"]),
88
- new Set(["sizing", "spacing"])
89
- ];
90
- /**
91
- * Responsive / variant prefix — Tailwind v4 aware.
92
- *
93
- * v3: sm: md: … — v4: @sm:, @min-[600px]:, @[480px]:, named @md/sidebar:,
94
- * viewport md/sidebar:, min-[100px]: / max-[100px]:, …
95
- */
96
- const RESPONSIVE_PREFIX = /^(?:@(?:min|max)-\[[^\]]+\]:|@\[[^\]]+\]:|@(?:[a-z0-9]+(?:-[a-z0-9]+)*)(?:\/[a-z][a-z0-9-]*)?:|(?:max-|min-)?(?:sm|md|lg|xl|2xl|3xl)(?:\/[a-z][a-z0-9-]*)?:|(?:max-|min-)\[[^\]]+\]:)/;
97
- /** State variant stems — hoisted to module scope (not recreated per call). */
98
- const STATE_PREFIXES = new Set([
99
- "hover",
100
- "focus",
101
- "focus-within",
102
- "focus-visible",
103
- "active",
104
- "visited",
105
- "link",
106
- "any-link",
107
- "disabled",
108
- "enabled",
109
- "checked",
110
- "indeterminate",
111
- "required",
112
- "optional",
113
- "valid",
114
- "invalid",
115
- "in-range",
116
- "out-of-range",
117
- "read-only",
118
- "read-write",
119
- "placeholder-shown",
120
- "default",
121
- "autofill",
122
- "open",
123
- "closed",
124
- "first",
125
- "last",
126
- "only",
127
- "odd",
128
- "even",
129
- "first-of-type",
130
- "last-of-type",
131
- "only-of-type",
132
- "first-child",
133
- "last-child",
134
- "only-child",
135
- "empty",
136
- "target",
137
- "group",
138
- "peer",
139
- "aria",
140
- "data",
141
- "dark",
142
- "light",
143
- "supports",
144
- "motion-reduce",
145
- "motion-safe",
146
- "print",
147
- "screen",
148
- "ltr",
149
- "rtl",
150
- "not",
151
- "has",
152
- "in",
153
- "nth",
154
- "file",
155
- "selection",
156
- "marker",
157
- "placeholder",
158
- "before",
159
- "after",
160
- "first-line",
161
- "first-letter",
162
- "backdrop",
163
- "details-content",
164
- "popover-open"
165
- ]);
166
- /** Default directory for arrange analyze/preview/apply when no target is passed. */
167
- const DEFAULT_ARRANGE_TARGET = "packages/ui/src/components";
168
- //#endregion
169
- 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,19 +0,0 @@
1
- //#region src/lib/arrange/domain/errors.ts
2
- /**
3
- * Structured errors for the arrange CLI library (throw from lib; handle exit in commands).
4
- */
5
- const ArrangeErrorCode = {
6
- TARGET_NOT_FOUND: "TARGET_NOT_FOUND",
7
- INVALID_INPUT: "INVALID_INPUT",
8
- INTERNAL: "INTERNAL"
9
- };
10
- var ArrangeError = class extends Error {
11
- code;
12
- constructor(code, message, options) {
13
- super(message, options);
14
- this.name = "ArrangeError";
15
- this.code = code;
16
- }
17
- };
18
- //#endregion
19
- export { ArrangeError, ArrangeErrorCode };