@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
@@ -0,0 +1,7 @@
1
+ import type { ArrangeSuggestGroupsRequest } from "#lib/arrange/application/requests/suggest-groups.request";
2
+ export type ArrangeSuggestGroupsOutput = {
3
+ readonly primaryLine: string;
4
+ readonly bucketsCommentLine: string;
5
+ };
6
+ export declare function suggestCnGroupsForCli(request: ArrangeSuggestGroupsRequest): ArrangeSuggestGroupsOutput;
7
+ //# sourceMappingURL=suggest-cn-groups.use-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest-cn-groups.use-case.d.ts","sourceRoot":"","sources":["../../../../../src/lib/arrange/application/use-cases/suggest-cn-groups.use-case.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0DAA0D,CAAC;AAI5G,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,2BAA2B,GACnC,0BAA0B,CAO5B"}
@@ -0,0 +1,10 @@
1
+ import { suggestCnGroups, summarizeGroupBucketLabels } from "#lib/arrange/domain/grouping.domain";
2
+ import { formatArray, formatCnCall } from "#lib/arrange/domain/source-text-formatters.formatter";
3
+ export function suggestCnGroupsForCli(request) {
4
+ const groups = suggestCnGroups(request.inlineClasses);
5
+ const primaryLine = request.emitTvStyleArray
6
+ ? formatArray(groups)
7
+ : formatCnCall(groups, { trailingClassName: request.trailingClassName });
8
+ const bucketsCommentLine = `// Buckets: ${JSON.stringify(summarizeGroupBucketLabels(groups))}`;
9
+ return { primaryLine, bucketsCommentLine };
10
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Rich domain: Tailwind/cn/tv analysis rules (counts, long literals, nested cn in tv).
3
+ * Pure orchestration of domain collectors and invariants — no I/O.
4
+ */
5
+ import type { AnalyzeReport } from "#lib/arrange/domain/types.domain";
6
+ import { type DomainSourceFile } from "#lib/arrange/domain/ast/ast-node.model";
7
+ export declare function createEmptyAnalyzeReport(): AnalyzeReport;
8
+ /**
9
+ * Accumulates findings for one parsed source file into `report` (mutates report).
10
+ */
11
+ export declare function accumulateAnalyzeReportForSourceFile(report: AnalyzeReport, domainSf: DomainSourceFile, sourceText: string, filePath: string): void;
12
+ //# sourceMappingURL=arrange-analyze.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrange-analyze.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/arrange/domain/arrange-analyze.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAatE,OAAO,EAIL,KAAK,gBAAgB,EAKtB,MAAM,wCAAwC,CAAC;AAQhD,wBAAgB,wBAAwB,IAAI,aAAa,CAUxD;AAmGD;;GAEG;AACH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,IAAI,CAeN"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Rich domain: Tailwind/cn/tv analysis rules (counts, long literals, nested cn in tv).
3
+ * Pure orchestration of domain collectors and invariants — no I/O.
4
+ */
5
+ import { LONG_STRING_TOKEN_THRESHOLD } from "#lib/arrange/domain/constants.domain";
6
+ import { tokenizeClassString } from "#lib/arrange/domain/tokenizer.util";
7
+ import { forEachStringLiteralInClassExpression } from "#lib/arrange/domain/ast/collectors-cn.collector";
8
+ import { jsxClassNameStaticLiteral } from "#lib/arrange/domain/ast/collectors-jsx.collector";
9
+ import { collectCnCallsInsideTv, traverseTvObject, } from "#lib/arrange/domain/ast/collectors-tv.collector";
10
+ import { buildKnownCnTvBindings, isCnOrTvIdentifier, lineOf, } from "#lib/arrange/domain/ast/ast-helpers.helper";
11
+ import { isDomainCallExpression, isDomainJsxAttribute, isDomainObjectLiteralExpression, forEachDomainChild, } from "#lib/arrange/domain/ast/ast-node.model";
12
+ const PREVIEW_MAX_LENGTH = 72;
13
+ function previewText(text) {
14
+ return text.length > PREVIEW_MAX_LENGTH ? `${text.slice(0, PREVIEW_MAX_LENGTH)}…` : text;
15
+ }
16
+ export function createEmptyAnalyzeReport() {
17
+ return {
18
+ files: 0,
19
+ cnCallExpressions: 0,
20
+ tvCallExpressions: 0,
21
+ cnInsideTvCalls: [],
22
+ longCnStringLiterals: [],
23
+ longTvStringLiterals: [],
24
+ longJsxClassNameLiterals: [],
25
+ };
26
+ }
27
+ function analyzeCnCall(domainSf, call, report) {
28
+ for (const arg of call.arguments) {
29
+ forEachStringLiteralInClassExpression(arg, (lit) => {
30
+ const text = lit.text;
31
+ const tokenCount = tokenizeClassString(text).length;
32
+ if (tokenCount >= LONG_STRING_TOKEN_THRESHOLD) {
33
+ report.longCnStringLiterals.push({
34
+ file: domainSf.fileName,
35
+ line: lineOf(domainSf, lit),
36
+ tokenCount,
37
+ preview: previewText(text),
38
+ });
39
+ }
40
+ });
41
+ }
42
+ }
43
+ function visitCallExpressionForArrangeAnalyze(callExpression, domainSf, sourceText, knownBindings, report) {
44
+ if (isCnOrTvIdentifier(callExpression.expression, "cn", knownBindings)) {
45
+ report.cnCallExpressions++;
46
+ analyzeCnCall(domainSf, callExpression, report);
47
+ return;
48
+ }
49
+ if (!isCnOrTvIdentifier(callExpression.expression, "tv", knownBindings)) {
50
+ return;
51
+ }
52
+ report.tvCallExpressions++;
53
+ const arg0 = callExpression.arguments[0];
54
+ if (!arg0 || !isDomainObjectLiteralExpression(arg0)) {
55
+ return;
56
+ }
57
+ for (const nestedCn of collectCnCallsInsideTv(domainSf, arg0, knownBindings, 0)) {
58
+ const src = sourceText.slice(nestedCn.pos, nestedCn.end);
59
+ report.cnInsideTvCalls.push({
60
+ file: domainSf.fileName,
61
+ line: lineOf(domainSf, nestedCn),
62
+ argCount: nestedCn.arguments.length,
63
+ preview: previewText(src),
64
+ });
65
+ }
66
+ traverseTvObject(domainSf, arg0, (classLiteral) => {
67
+ const text = classLiteral.text;
68
+ const tokenCount = tokenizeClassString(text).length;
69
+ if (tokenCount >= LONG_STRING_TOKEN_THRESHOLD) {
70
+ report.longTvStringLiterals.push({
71
+ file: domainSf.fileName,
72
+ line: lineOf(domainSf, classLiteral),
73
+ tokenCount,
74
+ preview: previewText(text),
75
+ });
76
+ }
77
+ }, 0, knownBindings);
78
+ }
79
+ function visitJsxAttributeForArrangeAnalyze(jsxClassAttribute, domainSf, filePath, report) {
80
+ if (!filePath.endsWith(".tsx")) {
81
+ return;
82
+ }
83
+ const parsed = jsxClassNameStaticLiteral(jsxClassAttribute);
84
+ if (!parsed) {
85
+ return;
86
+ }
87
+ const text = parsed.lit.text;
88
+ const tokenCount = tokenizeClassString(text).length;
89
+ if (tokenCount >= LONG_STRING_TOKEN_THRESHOLD) {
90
+ report.longJsxClassNameLiterals.push({
91
+ file: domainSf.fileName,
92
+ line: lineOf(domainSf, parsed.lit),
93
+ tokenCount,
94
+ preview: previewText(text),
95
+ });
96
+ }
97
+ }
98
+ /**
99
+ * Accumulates findings for one parsed source file into `report` (mutates report).
100
+ */
101
+ export function accumulateAnalyzeReportForSourceFile(report, domainSf, sourceText, filePath) {
102
+ report.files++;
103
+ const knownBindings = buildKnownCnTvBindings(domainSf);
104
+ const visitTypeScriptSubtree = (tsNode) => {
105
+ if (isDomainCallExpression(tsNode)) {
106
+ visitCallExpressionForArrangeAnalyze(tsNode, domainSf, sourceText, knownBindings, report);
107
+ }
108
+ if (isDomainJsxAttribute(tsNode)) {
109
+ visitJsxAttributeForArrangeAnalyze(tsNode, domainSf, filePath, report);
110
+ }
111
+ forEachDomainChild(tsNode, visitTypeScriptSubtree);
112
+ };
113
+ for (const stmt of domainSf.statements) {
114
+ visitTypeScriptSubtree(stmt);
115
+ }
116
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Rich domain: plan Tailwind class grouping / cn-in-tv unwrap for a single file.
3
+ * Pure: only DomainSourceFile, source strings, and options — no I/O.
4
+ */
5
+ import type { GroupFileResult, PlannedGroupEdit } from "#lib/arrange/domain/types.domain";
6
+ import type { DomainCallExpression, DomainSourceFile } from "#lib/arrange/domain/ast/ast-node.model";
7
+ export type GroupFileUnwrapPlan = {
8
+ readonly start: number;
9
+ readonly end: number;
10
+ readonly replacement: string;
11
+ readonly call: DomainCallExpression;
12
+ };
13
+ export type GroupFileUnwrapState = {
14
+ readonly cnInTvCalls: readonly DomainCallExpression[];
15
+ readonly unwrapReplacementByCall: ReadonlyMap<DomainCallExpression, string>;
16
+ readonly unwrapEdits: readonly GroupFileUnwrapPlan[];
17
+ readonly textAfterUnwrap: string;
18
+ readonly cnInTvNoReplacement: number;
19
+ };
20
+ export type GroupFileWorkPlan = {
21
+ readonly filePath: string;
22
+ readonly sourceText: string;
23
+ readonly textAfterUnwrap: string;
24
+ readonly domainSfForLineNumbers: DomainSourceFile;
25
+ readonly domainSfGrouped: DomainSourceFile;
26
+ readonly cnInTvCalls: readonly DomainCallExpression[];
27
+ readonly unwrapReplacementByCall: ReadonlyMap<DomainCallExpression, string>;
28
+ readonly unwrapEdits: readonly GroupFileUnwrapPlan[];
29
+ readonly plannedGroupEdits: readonly PlannedGroupEdit[];
30
+ readonly cnInTvNoReplacement: number;
31
+ readonly reportTotal: number;
32
+ readonly editSitesCount: number;
33
+ };
34
+ export declare function buildGroupFileUnwrapState(domainSfInitial: DomainSourceFile, sourceText: string): GroupFileUnwrapState;
35
+ /**
36
+ * `domainSfGrouped` must be a parse of `unwrap.textAfterUnwrap` (same `text` as source).
37
+ * Returns `null` when there is no cn-in-tv and no grouping targets.
38
+ */
39
+ export declare function tryBuildGroupFileWorkPlan(input: {
40
+ readonly filePath: string;
41
+ readonly sourceText: string;
42
+ readonly domainSfInitial: DomainSourceFile;
43
+ readonly domainSfGrouped: DomainSourceFile;
44
+ readonly withClassName: boolean;
45
+ readonly unwrap: GroupFileUnwrapState;
46
+ }): GroupFileWorkPlan | null;
47
+ export declare function groupFileDryRunNoEdits(filePath: string): GroupFileResult;
48
+ export declare function groupFilePreviewTotals(work: GroupFileWorkPlan): GroupFileResult;
49
+ export declare function mergeGroupFileBodyText(work: GroupFileWorkPlan): string;
50
+ export declare function groupFileEditsTouchJsxCn(work: GroupFileWorkPlan): boolean;
51
+ export declare function countPersistedGroupFileEdits(work: GroupFileWorkPlan): number;
52
+ export declare function groupFileWorkHasNothingToReport(work: GroupFileWorkPlan): boolean;
53
+ //# sourceMappingURL=arrange-grouping.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrange-grouping.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/arrange/domain/arrange-grouping.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAY1F,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,QAAQ,CAAC,uBAAuB,EAAE,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC5E,QAAQ,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACrD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;IAClD,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,QAAQ,CAAC,uBAAuB,EAAE,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC5E,QAAQ,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACrD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACxD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC,CAAC;AAiBF,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,gBAAgB,EACjC,UAAU,EAAE,MAAM,GACjB,oBAAoB,CAoBtB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACvC,GAAG,iBAAiB,GAAG,IAAI,CA+C3B;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAExE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,eAAe,CAM/E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAWtE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAEzE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAE5E;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAEhF"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Rich domain: plan Tailwind class grouping / cn-in-tv unwrap for a single file.
3
+ * Pure: only DomainSourceFile, source strings, and options — no I/O.
4
+ */
5
+ import { applyEditsDescending, buildKnownCnTvBindings, unwrapCnInsideTvCallReplacement, } from "#lib/arrange/domain/ast/ast-helpers.helper";
6
+ import { listAllCnCallsInsideTvInSourceFile } from "#lib/arrange/domain/ast/collectors-tv.collector";
7
+ import { collectGroupTargets, planGroupEditForTarget, targetReplaceStart, } from "#lib/arrange/domain/ast/targets.model";
8
+ function toUnwrapPlans(cnInTvCalls, sourceText) {
9
+ return cnInTvCalls
10
+ .map((call) => {
11
+ const replacement = unwrapCnInsideTvCallReplacement(call, sourceText);
12
+ if (replacement === undefined) {
13
+ return undefined;
14
+ }
15
+ return { start: call.pos, end: call.end, replacement, call };
16
+ })
17
+ .filter((plan) => plan !== undefined);
18
+ }
19
+ export function buildGroupFileUnwrapState(domainSfInitial, sourceText) {
20
+ const knownBindings = buildKnownCnTvBindings(domainSfInitial);
21
+ const cnInTvCalls = listAllCnCallsInsideTvInSourceFile(domainSfInitial, knownBindings);
22
+ const unwrapPlans = toUnwrapPlans(cnInTvCalls, sourceText);
23
+ const unwrapReplacementByCall = new Map(unwrapPlans.map((unwrapPlan) => [unwrapPlan.call, unwrapPlan.replacement]));
24
+ const unwrapEdits = unwrapPlans.filter((unwrapPlan) => sourceText.slice(unwrapPlan.start, unwrapPlan.end) !== unwrapPlan.replacement);
25
+ const textAfterUnwrap = unwrapEdits.length > 0 ? applyEditsDescending(sourceText, [...unwrapEdits]) : sourceText;
26
+ const cnInTvNoReplacement = cnInTvCalls.length - unwrapPlans.length;
27
+ return {
28
+ cnInTvCalls,
29
+ unwrapReplacementByCall,
30
+ unwrapEdits,
31
+ textAfterUnwrap,
32
+ cnInTvNoReplacement,
33
+ };
34
+ }
35
+ /**
36
+ * `domainSfGrouped` must be a parse of `unwrap.textAfterUnwrap` (same `text` as source).
37
+ * Returns `null` when there is no cn-in-tv and no grouping targets.
38
+ */
39
+ export function tryBuildGroupFileWorkPlan(input) {
40
+ const { filePath, sourceText, domainSfInitial, domainSfGrouped, withClassName, unwrap } = input;
41
+ if (domainSfGrouped.text !== unwrap.textAfterUnwrap) {
42
+ throw new Error("Domain invariant: domainSfGrouped.text must match unwrap phase textAfterUnwrap");
43
+ }
44
+ const groupTargets = collectGroupTargets(domainSfGrouped, filePath);
45
+ if (unwrap.cnInTvCalls.length === 0 && groupTargets.length === 0) {
46
+ return null;
47
+ }
48
+ const sortedTargets = [...groupTargets].sort((leftTarget, rightTarget) => targetReplaceStart(rightTarget) - targetReplaceStart(leftTarget));
49
+ const plannedGroupEdits = [];
50
+ for (const groupTarget of sortedTargets) {
51
+ const plan = planGroupEditForTarget(groupTarget, unwrap.textAfterUnwrap, withClassName);
52
+ if (plan === undefined) {
53
+ continue;
54
+ }
55
+ if (unwrap.textAfterUnwrap.slice(plan.start, plan.end) === plan.replacement) {
56
+ continue;
57
+ }
58
+ plannedGroupEdits.push(plan);
59
+ }
60
+ const editSitesCount = unwrap.unwrapEdits.length + plannedGroupEdits.length;
61
+ const reportTotal = editSitesCount + unwrap.cnInTvNoReplacement;
62
+ return {
63
+ filePath,
64
+ sourceText,
65
+ textAfterUnwrap: unwrap.textAfterUnwrap,
66
+ domainSfForLineNumbers: domainSfInitial,
67
+ domainSfGrouped,
68
+ cnInTvCalls: unwrap.cnInTvCalls,
69
+ unwrapReplacementByCall: unwrap.unwrapReplacementByCall,
70
+ unwrapEdits: unwrap.unwrapEdits,
71
+ plannedGroupEdits,
72
+ cnInTvNoReplacement: unwrap.cnInTvNoReplacement,
73
+ reportTotal,
74
+ editSitesCount,
75
+ };
76
+ }
77
+ export function groupFileDryRunNoEdits(filePath) {
78
+ return { filePath, totalFound: 0, changed: 0 };
79
+ }
80
+ export function groupFilePreviewTotals(work) {
81
+ return {
82
+ filePath: work.filePath,
83
+ totalFound: work.reportTotal,
84
+ changed: 0,
85
+ };
86
+ }
87
+ export function mergeGroupFileBodyText(work) {
88
+ const groupEdits = work.plannedGroupEdits.map((plannedEdit) => ({
89
+ start: plannedEdit.start,
90
+ end: plannedEdit.end,
91
+ replacement: plannedEdit.replacement,
92
+ jsxCn: plannedEdit.jsxCn,
93
+ }));
94
+ return groupEdits.length > 0
95
+ ? applyEditsDescending(work.textAfterUnwrap, groupEdits)
96
+ : work.textAfterUnwrap;
97
+ }
98
+ export function groupFileEditsTouchJsxCn(work) {
99
+ return work.plannedGroupEdits.some((plannedEdit) => plannedEdit.jsxCn);
100
+ }
101
+ export function countPersistedGroupFileEdits(work) {
102
+ return work.unwrapEdits.length + work.plannedGroupEdits.length;
103
+ }
104
+ export function groupFileWorkHasNothingToReport(work) {
105
+ return work.editSitesCount === 0 && work.cnInTvNoReplacement === 0;
106
+ }
@@ -0,0 +1,28 @@
1
+ import { applyEditsDescending, indentOfLineContaining } from "#lib/shared/source-code/domain/text-edit.model";
2
+ import { type DomainAstNode, type DomainCallExpression, type DomainPropertyAssignment, type DomainSourceFile } from "#lib/arrange/domain/ast/ast-node.model";
3
+ /** Known module specifiers that export `cn` / `tv`. */
4
+ export declare const KNOWN_CN_TV_MODULES: Set<string>;
5
+ /**
6
+ * True for typical shadcn-style re-exports: `./utils`, `@/lib/utils`, `…/utils/…`,
7
+ * or a dedicated `cn.ts` / `cn.tsx` module.
8
+ */
9
+ export declare function moduleLooksLikeCnTvReexport(moduleSpecifier: string): boolean;
10
+ /**
11
+ * Build a set of local binding names that are imported from a known cn/tv
12
+ * module in `sourceFile`.
13
+ */
14
+ export declare function buildKnownCnTvBindings(sourceFile: DomainSourceFile): Set<string>;
15
+ /**
16
+ * Returns true when `expr` is an identifier whose name matches `name` AND
17
+ * that name is listed in `knownBindings` from a recognized import.
18
+ */
19
+ export declare function isCnOrTvIdentifier(expr: DomainAstNode, name: "cn" | "tv", knownBindings?: Set<string>): boolean;
20
+ export declare function propertyAssignmentNameText(prop: DomainPropertyAssignment): string | undefined;
21
+ export declare function lineOf(sourceFile: DomainSourceFile, node: DomainAstNode): number;
22
+ export { applyEditsDescending, indentOfLineContaining };
23
+ /**
24
+ * Replace `cn(...)` nested in `tv({...})` with a plain string (one arg) or a string
25
+ * array (multiple args). Returns undefined when there are zero arguments.
26
+ */
27
+ export declare function unwrapCnInsideTvCallReplacement(call: DomainCallExpression, sourceText: string): string | undefined;
28
+ //# sourceMappingURL=ast-helpers.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-helpers.helper.d.ts","sourceRoot":"","sources":["../../../../../src/lib/arrange/domain/ast/ast-helpers.helper.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EAQtB,MAAM,wCAAwC,CAAC;AAEhD,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,aAU9B,CAAC;AAEH;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAY5E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC,CAsChF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,aAAa,GAAE,GAAG,CAAC,MAAM,CAAwB,GAChD,OAAO,CAWT;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,GAAG,SAAS,CAQ7F;AAED,wBAAgB,MAAM,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAEhF;AAED,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,CAAC;AAExD;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,oBAAoB,EAC1B,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAsBpB"}
@@ -0,0 +1,130 @@
1
+ import { EMPTY_CN_TV_BINDINGS } from "#lib/arrange/domain/constants.domain";
2
+ import { applyEditsDescending, indentOfLineContaining, } from "#lib/shared/source-code/domain/text-edit.model";
3
+ import { isDomainIdentifier, isDomainImportDeclaration, isDomainNamedImports, isDomainNamespaceImport, isDomainPropertyAccessExpression, isDomainStringLiteral, lineOfSourcePosition, } from "#lib/arrange/domain/ast/ast-node.model";
4
+ /** Known module specifiers that export `cn` / `tv`. */
5
+ export const KNOWN_CN_TV_MODULES = new Set([
6
+ "@codefast/tailwind-variants",
7
+ "clsx",
8
+ "class-variance-authority",
9
+ // Backward compatibility only: keep detection for existing user code that still imports
10
+ // from "tailwind-variants"; new code should prefer "@codefast/tailwind-variants".
11
+ "tailwind-variants",
12
+ "#lib/utils",
13
+ "~/lib/utils",
14
+ "@/lib/utils",
15
+ ]);
16
+ /**
17
+ * True for typical shadcn-style re-exports: `./utils`, `@/lib/utils`, `…/utils/…`,
18
+ * or a dedicated `cn.ts` / `cn.tsx` module.
19
+ */
20
+ export function moduleLooksLikeCnTvReexport(moduleSpecifier) {
21
+ const norm = moduleSpecifier.replace(/\\/g, "/");
22
+ if (/(?:^|[./])utils(?:\/|$)/.test(norm)) {
23
+ return true;
24
+ }
25
+ if (/\/utils\//.test(norm) || /\/utils$/.test(norm)) {
26
+ return true;
27
+ }
28
+ if (/(?:^|\/)cn\.tsx?$/.test(norm)) {
29
+ return true;
30
+ }
31
+ return false;
32
+ }
33
+ /**
34
+ * Build a set of local binding names that are imported from a known cn/tv
35
+ * module in `sourceFile`.
36
+ */
37
+ export function buildKnownCnTvBindings(sourceFile) {
38
+ const bindings = new Set();
39
+ for (const stmt of sourceFile.statements) {
40
+ if (!isDomainImportDeclaration(stmt) || !stmt.importClause) {
41
+ continue;
42
+ }
43
+ if (stmt.importClause.isTypeOnly) {
44
+ continue;
45
+ }
46
+ const spec = stmt.moduleSpecifier;
47
+ if (!isDomainStringLiteral(spec)) {
48
+ continue;
49
+ }
50
+ const moduleSpecifierText = spec.text;
51
+ const isKnown = KNOWN_CN_TV_MODULES.has(moduleSpecifierText);
52
+ if (!isKnown && !moduleLooksLikeCnTvReexport(moduleSpecifierText)) {
53
+ continue;
54
+ }
55
+ const clause = stmt.importClause;
56
+ if (clause.name) {
57
+ bindings.add(clause.name.text);
58
+ }
59
+ const { namedBindings } = clause;
60
+ if (!namedBindings) {
61
+ continue;
62
+ }
63
+ if (isDomainNamedImports(namedBindings)) {
64
+ for (const namedImport of namedBindings.elements) {
65
+ bindings.add(namedImport.name.text);
66
+ }
67
+ continue;
68
+ }
69
+ if (isDomainNamespaceImport(namedBindings)) {
70
+ bindings.add(namedBindings.name.text);
71
+ }
72
+ }
73
+ return bindings;
74
+ }
75
+ /**
76
+ * Returns true when `expr` is an identifier whose name matches `name` AND
77
+ * that name is listed in `knownBindings` from a recognized import.
78
+ */
79
+ export function isCnOrTvIdentifier(expr, name, knownBindings = EMPTY_CN_TV_BINDINGS) {
80
+ if (knownBindings.size === 0) {
81
+ return false;
82
+ }
83
+ if (isDomainIdentifier(expr) && expr.text === name) {
84
+ return knownBindings.has(expr.text);
85
+ }
86
+ if (isDomainPropertyAccessExpression(expr) && expr.name.text === name) {
87
+ return isDomainIdentifier(expr.expression) && knownBindings.has(expr.expression.text);
88
+ }
89
+ return false;
90
+ }
91
+ export function propertyAssignmentNameText(prop) {
92
+ if (isDomainIdentifier(prop.name)) {
93
+ return prop.name.text;
94
+ }
95
+ if (isDomainStringLiteral(prop.name)) {
96
+ return prop.name.text;
97
+ }
98
+ return undefined;
99
+ }
100
+ export function lineOf(sourceFile, node) {
101
+ return lineOfSourcePosition(sourceFile.text, node.pos);
102
+ }
103
+ export { applyEditsDescending, indentOfLineContaining };
104
+ /**
105
+ * Replace `cn(...)` nested in `tv({...})` with a plain string (one arg) or a string
106
+ * array (multiple args). Returns undefined when there are zero arguments.
107
+ */
108
+ export function unwrapCnInsideTvCallReplacement(call, sourceText) {
109
+ const args = call.arguments;
110
+ if (args.length === 0) {
111
+ return undefined;
112
+ }
113
+ const baseIndent = indentOfLineContaining(sourceText, call.pos);
114
+ const innerIndent = `${baseIndent} `;
115
+ if (args.length === 1) {
116
+ const firstArg = args[0];
117
+ return sourceText.slice(firstArg.pos, firstArg.end);
118
+ }
119
+ const lines = ["["];
120
+ for (let i = 0; i < args.length; i++) {
121
+ const arg = args[i];
122
+ const piece = sourceText.slice(arg.pos, arg.end);
123
+ // Trailing comma on every element — intentional (Prettier-compatible style;
124
+ // keeps array diffs clean when arguments are later added or removed).
125
+ const comma = i < args.length - 1 || args.length > 1 ? "," : "";
126
+ lines.push(`${innerIndent}${piece}${comma}`);
127
+ }
128
+ lines.push(`${baseIndent}]`);
129
+ return lines.join("\n");
130
+ }
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Pure-domain AST shapes for arrange analysis. No TypeScript compiler types.
3
+ * Positions mirror `getStart(sourceFile)` / `getEnd()` semantics from translation.
4
+ */
5
+ export declare enum DomainSyntaxKind {
6
+ Unknown = 1,
7
+ Identifier = 2,
8
+ StringLiteral = 3,
9
+ NoSubstitutionTemplateLiteral = 4,
10
+ ImportDeclaration = 5,
11
+ ImportClause = 6,
12
+ NamedImports = 7,
13
+ NamespaceImport = 8,
14
+ ImportSpecifier = 9,
15
+ CallExpression = 10,
16
+ PropertyAccessExpression = 11,
17
+ ObjectLiteralExpression = 12,
18
+ PropertyAssignment = 13,
19
+ ArrayLiteralExpression = 14,
20
+ SpreadElement = 15,
21
+ ParenthesizedExpression = 16,
22
+ AsExpression = 17,
23
+ SatisfiesExpression = 18,
24
+ NonNullExpression = 19,
25
+ ConditionalExpression = 20,
26
+ BinaryExpression = 21,
27
+ ExpressionStatement = 22,
28
+ JsxAttribute = 23,
29
+ JsxExpression = 24
30
+ }
31
+ export declare enum DomainBinaryOperator {
32
+ Plus = 0,
33
+ Other = 1
34
+ }
35
+ export interface DomainSourceFile {
36
+ readonly fileName: string;
37
+ readonly text: string;
38
+ readonly statements: readonly DomainAstNode[];
39
+ }
40
+ interface DomainNodeBase {
41
+ readonly kind: DomainSyntaxKind;
42
+ readonly pos: number;
43
+ readonly end: number;
44
+ readonly parent: DomainAstNode | null;
45
+ }
46
+ export interface DomainUnknownAstNode extends DomainNodeBase {
47
+ readonly kind: DomainSyntaxKind.Unknown;
48
+ readonly children: readonly DomainAstNode[];
49
+ }
50
+ export interface DomainIdentifier extends DomainNodeBase {
51
+ readonly kind: DomainSyntaxKind.Identifier;
52
+ readonly text: string;
53
+ }
54
+ export interface DomainStringLiteral extends DomainNodeBase {
55
+ readonly kind: DomainSyntaxKind.StringLiteral;
56
+ readonly text: string;
57
+ }
58
+ export interface DomainNoSubstitutionTemplateLiteral extends DomainNodeBase {
59
+ readonly kind: DomainSyntaxKind.NoSubstitutionTemplateLiteral;
60
+ readonly text: string;
61
+ }
62
+ export interface DomainImportDeclaration extends DomainNodeBase {
63
+ readonly kind: DomainSyntaxKind.ImportDeclaration;
64
+ readonly importClause: DomainImportClause | undefined;
65
+ readonly moduleSpecifier: DomainAstNode;
66
+ }
67
+ export interface DomainImportClause extends DomainNodeBase {
68
+ readonly kind: DomainSyntaxKind.ImportClause;
69
+ readonly isTypeOnly: boolean;
70
+ readonly name: DomainIdentifier | undefined;
71
+ readonly namedBindings: DomainNamedImports | DomainNamespaceImport | undefined;
72
+ }
73
+ export interface DomainNamedImports extends DomainNodeBase {
74
+ readonly kind: DomainSyntaxKind.NamedImports;
75
+ readonly elements: readonly DomainImportSpecifier[];
76
+ }
77
+ export interface DomainNamespaceImport extends DomainNodeBase {
78
+ readonly kind: DomainSyntaxKind.NamespaceImport;
79
+ readonly name: DomainIdentifier;
80
+ }
81
+ export interface DomainImportSpecifier extends DomainNodeBase {
82
+ readonly kind: DomainSyntaxKind.ImportSpecifier;
83
+ readonly name: DomainIdentifier;
84
+ readonly propertyName: DomainIdentifier | undefined;
85
+ }
86
+ export interface DomainCallExpression extends DomainNodeBase {
87
+ readonly kind: DomainSyntaxKind.CallExpression;
88
+ readonly expression: DomainAstNode;
89
+ readonly arguments: readonly DomainAstNode[];
90
+ }
91
+ export interface DomainPropertyAccessExpression extends DomainNodeBase {
92
+ readonly kind: DomainSyntaxKind.PropertyAccessExpression;
93
+ readonly expression: DomainAstNode;
94
+ readonly name: DomainIdentifier;
95
+ }
96
+ export interface DomainObjectLiteralExpression extends DomainNodeBase {
97
+ readonly kind: DomainSyntaxKind.ObjectLiteralExpression;
98
+ readonly properties: readonly DomainAstNode[];
99
+ }
100
+ export interface DomainPropertyAssignment extends DomainNodeBase {
101
+ readonly kind: DomainSyntaxKind.PropertyAssignment;
102
+ readonly name: DomainAstNode;
103
+ readonly initializer: DomainAstNode;
104
+ }
105
+ export interface DomainArrayLiteralExpression extends DomainNodeBase {
106
+ readonly kind: DomainSyntaxKind.ArrayLiteralExpression;
107
+ readonly elements: readonly DomainAstNode[];
108
+ }
109
+ export interface DomainSpreadElement extends DomainNodeBase {
110
+ readonly kind: DomainSyntaxKind.SpreadElement;
111
+ readonly expression: DomainAstNode;
112
+ }
113
+ export interface DomainParenthesizedExpression extends DomainNodeBase {
114
+ readonly kind: DomainSyntaxKind.ParenthesizedExpression;
115
+ readonly expression: DomainAstNode;
116
+ }
117
+ export interface DomainAsExpression extends DomainNodeBase {
118
+ readonly kind: DomainSyntaxKind.AsExpression;
119
+ readonly expression: DomainAstNode;
120
+ }
121
+ export interface DomainSatisfiesExpression extends DomainNodeBase {
122
+ readonly kind: DomainSyntaxKind.SatisfiesExpression;
123
+ readonly expression: DomainAstNode;
124
+ }
125
+ export interface DomainNonNullExpression extends DomainNodeBase {
126
+ readonly kind: DomainSyntaxKind.NonNullExpression;
127
+ readonly expression: DomainAstNode;
128
+ }
129
+ export interface DomainConditionalExpression extends DomainNodeBase {
130
+ readonly kind: DomainSyntaxKind.ConditionalExpression;
131
+ readonly condition: DomainAstNode;
132
+ readonly whenTrue: DomainAstNode;
133
+ readonly whenFalse: DomainAstNode;
134
+ }
135
+ export interface DomainBinaryExpression extends DomainNodeBase {
136
+ readonly kind: DomainSyntaxKind.BinaryExpression;
137
+ readonly left: DomainAstNode;
138
+ readonly operator: DomainBinaryOperator;
139
+ readonly right: DomainAstNode;
140
+ }
141
+ export interface DomainExpressionStatement extends DomainNodeBase {
142
+ readonly kind: DomainSyntaxKind.ExpressionStatement;
143
+ readonly expression: DomainAstNode;
144
+ }
145
+ export interface DomainJsxAttribute extends DomainNodeBase {
146
+ readonly kind: DomainSyntaxKind.JsxAttribute;
147
+ readonly name: DomainAstNode;
148
+ readonly initializer: DomainAstNode | undefined;
149
+ }
150
+ export interface DomainJsxExpression extends DomainNodeBase {
151
+ readonly kind: DomainSyntaxKind.JsxExpression;
152
+ readonly expression: DomainAstNode | undefined;
153
+ }
154
+ export type DomainAstNode = DomainUnknownAstNode | DomainIdentifier | DomainStringLiteral | DomainNoSubstitutionTemplateLiteral | DomainImportDeclaration | DomainImportClause | DomainNamedImports | DomainNamespaceImport | DomainImportSpecifier | DomainCallExpression | DomainPropertyAccessExpression | DomainObjectLiteralExpression | DomainPropertyAssignment | DomainArrayLiteralExpression | DomainSpreadElement | DomainParenthesizedExpression | DomainAsExpression | DomainSatisfiesExpression | DomainNonNullExpression | DomainConditionalExpression | DomainBinaryExpression | DomainExpressionStatement | DomainJsxAttribute | DomainJsxExpression;
155
+ export type DomainTailwindClassLiteral = DomainStringLiteral | DomainNoSubstitutionTemplateLiteral;
156
+ export declare function isDomainIdentifier(node: DomainAstNode): node is DomainIdentifier;
157
+ export declare function isDomainStringLiteral(node: DomainAstNode): node is DomainStringLiteral;
158
+ export declare function isDomainNoSubstitutionTemplateLiteral(node: DomainAstNode): node is DomainNoSubstitutionTemplateLiteral;
159
+ export declare function isDomainTailwindClassLiteral(node: DomainAstNode): node is DomainTailwindClassLiteral;
160
+ export declare function isDomainImportDeclaration(node: DomainAstNode): node is DomainImportDeclaration;
161
+ export declare function isDomainImportClause(node: DomainAstNode | undefined): node is DomainImportClause;
162
+ export declare function isDomainNamedImports(node: DomainAstNode): node is DomainNamedImports;
163
+ export declare function isDomainNamespaceImport(node: DomainAstNode): node is DomainNamespaceImport;
164
+ export declare function isDomainCallExpression(node: DomainAstNode): node is DomainCallExpression;
165
+ export declare function isDomainObjectLiteralExpression(node: DomainAstNode): node is DomainObjectLiteralExpression;
166
+ export declare function isDomainPropertyAssignment(node: DomainAstNode): node is DomainPropertyAssignment;
167
+ export declare function isDomainArrayLiteralExpression(node: DomainAstNode): node is DomainArrayLiteralExpression;
168
+ export declare function isDomainSpreadElement(node: DomainAstNode): node is DomainSpreadElement;
169
+ export declare function isDomainPropertyAccessExpression(node: DomainAstNode): node is DomainPropertyAccessExpression;
170
+ export declare function isDomainJsxAttribute(node: DomainAstNode): node is DomainJsxAttribute;
171
+ export declare function isDomainJsxExpression(node: DomainAstNode): node is DomainJsxExpression;
172
+ export declare function isDomainExpressionStatement(node: DomainAstNode): node is DomainExpressionStatement;
173
+ export declare function forEachDomainChild(node: DomainAstNode, visit: (child: DomainAstNode) => void): void;
174
+ export declare function forEachDomainDescendant(node: DomainAstNode, visit: (n: DomainAstNode) => void): void;
175
+ export declare function forEachDomainDescendantFromSourceFile(sourceFile: DomainSourceFile, visit: (n: DomainAstNode) => void): void;
176
+ export declare function findFirstDomainDescendantWhere(sourceFile: DomainSourceFile, predicate: (n: DomainAstNode) => boolean): DomainAstNode | undefined;
177
+ export declare function lineOfSourcePosition(sourceText: string, pos: number): number;
178
+ export {};
179
+ //# sourceMappingURL=ast-node.model.d.ts.map