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

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 (426) hide show
  1. package/README.md +30 -4
  2. package/dist/{bin.js → bin.mjs} +4 -1
  3. package/dist/commands/arrange.mjs +325 -0
  4. package/dist/commands/mirror.mjs +267 -0
  5. package/dist/commands/tag.mjs +283 -0
  6. package/dist/lib/arrange/application/arrange-analyze-json.format.mjs +10 -0
  7. package/dist/lib/arrange/application/arrange-group-json.format.mjs +11 -0
  8. package/dist/lib/arrange/application/arrange-sync-cli-result.mjs +7 -0
  9. package/dist/lib/arrange/application/arrange-sync-json.format.mjs +12 -0
  10. package/dist/lib/arrange/application/services/arrange-file-processor.service.mjs +242 -0
  11. package/dist/lib/arrange/application/services/arrange-target-scanner.service.mjs +237 -0
  12. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.mjs +258 -0
  13. package/dist/lib/arrange/application/use-cases/group-file.use-case.mjs +35 -0
  14. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.mjs +283 -0
  15. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.mjs +233 -0
  16. package/dist/lib/arrange/arrange.feature.module.mjs +19 -0
  17. package/dist/lib/arrange/arrange.module.mjs +27 -0
  18. package/dist/lib/arrange/arrange.presentation.module.mjs +13 -0
  19. package/dist/lib/arrange/contracts/tokens.mjs +14 -0
  20. package/dist/lib/arrange/domain/arrange-analyze.service.mjs +95 -0
  21. package/dist/lib/arrange/domain/arrange-grouping.service.mjs +100 -0
  22. package/dist/lib/arrange/domain/ast/ast-helpers.helper.mjs +89 -0
  23. package/dist/lib/arrange/domain/ast/ast-node.model.mjs +181 -0
  24. package/dist/lib/arrange/domain/ast/collectors-cn.collector.mjs +52 -0
  25. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.mjs +20 -0
  26. package/dist/lib/arrange/domain/ast/collectors-tv.collector.mjs +174 -0
  27. package/dist/lib/arrange/domain/ast/targets.model.mjs +110 -0
  28. package/dist/lib/arrange/domain/constants.domain.mjs +154 -0
  29. package/dist/lib/arrange/domain/errors.domain.mjs +18 -0
  30. package/dist/lib/arrange/domain/grouping.domain.mjs +306 -0
  31. package/dist/lib/arrange/domain/imports.domain.mjs +55 -0
  32. package/dist/lib/arrange/domain/source-text-formatters.formatter.mjs +54 -0
  33. package/dist/lib/arrange/domain/tokenizer.util.mjs +209 -0
  34. package/dist/lib/arrange/infra/domain-source-parser.adapter.mjs +240 -0
  35. package/dist/lib/arrange/infra/ensure-cn-import.adapter.mjs +8 -0
  36. package/dist/lib/arrange/infra/file-walker.adapter.mjs +239 -0
  37. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.mjs +18 -0
  38. package/dist/lib/arrange/infra/ts-ast-translator.adapter.mjs +355 -0
  39. package/dist/lib/arrange/presentation/arrange-cli-schema.presenter.mjs +29 -0
  40. package/dist/lib/arrange/presentation/arrange-sync.presenter.mjs +12 -0
  41. package/dist/lib/arrange/presentation/formatters.presenter.mjs +2 -0
  42. package/dist/lib/arrange/presentation/group-file-preview.presenter.mjs +275 -0
  43. package/dist/lib/arrange/presentation/prepare-arrange.orchestrator.mjs +258 -0
  44. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.mjs +7 -0
  45. package/dist/lib/arrange/presentation/present-analyze-report.presenter.mjs +233 -0
  46. package/dist/lib/arrange/presentation/report.presenter.mjs +24 -0
  47. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.mjs +21 -0
  48. package/dist/lib/config/application/use-cases/load-config.use-case.mjs +17 -0
  49. package/dist/lib/config/contracts/tokens.mjs +5 -0
  50. package/dist/lib/config/infra/config-schema.adapter.mjs +25 -0
  51. package/dist/lib/config/infra/loader.adapter.mjs +84 -0
  52. package/dist/lib/core/application/architecture-boundaries.policy.mjs +311 -0
  53. package/dist/lib/core/application/ports/path.port.mjs +1 -0
  54. package/dist/lib/core/application/schema-parse.util.mjs +17 -0
  55. package/dist/lib/core/application/utils/caught-unknown-message.util.mjs +19 -0
  56. package/dist/lib/core/application/utils/verbose-diagnostics.util.mjs +9 -0
  57. package/dist/lib/core/contracts/presentation.contract.mjs +1 -0
  58. package/dist/lib/core/contracts/tokens.mjs +5 -0
  59. package/dist/lib/core/core.module.mjs +9 -0
  60. package/dist/lib/core/domain/cli-exit-codes.domain.mjs +11 -0
  61. package/dist/lib/core/domain/errors.domain.mjs +16 -0
  62. package/dist/lib/core/domain/result.model.mjs +23 -0
  63. package/dist/lib/core/infra/composition-root.mjs +21 -0
  64. package/dist/lib/core/infra/infra.module.mjs +23 -0
  65. package/dist/lib/core/infra/logging-decorator.adapter.mjs +62 -0
  66. package/dist/lib/core/infra/path.adapter.mjs +13 -0
  67. package/dist/lib/core/operational/contracts/tokens.mjs +7 -0
  68. package/dist/lib/core/presentation/cli-executor.presenter.mjs +57 -0
  69. package/dist/lib/core/presentation/command.interface.mjs +1 -0
  70. package/dist/lib/core/presentation/format-app-error.presenter.mjs +17 -0
  71. package/dist/lib/core/presentation/global-cli-options.presenter.mjs +9 -0
  72. package/dist/lib/core/presentation/load-codefast-config.presenter.mjs +18 -0
  73. package/dist/lib/core/presentation/parse-cli-schema.presenter.mjs +7 -0
  74. package/dist/lib/core/presentation/presentation.module.mjs +11 -0
  75. package/dist/lib/core/presentation/try-load-codefast-config.presenter.mjs +245 -0
  76. package/dist/lib/infra/config-reporter.adapter.mjs +9 -0
  77. package/dist/lib/infra/fs-contract.port.mjs +1 -0
  78. package/dist/lib/infra/node-io.adapter.mjs +266 -0
  79. package/dist/lib/infra/workspace/repo-root.adapter.mjs +21 -0
  80. package/dist/lib/kernel/di/command.token.mjs +5 -0
  81. package/dist/lib/mirror/application/mirror-sync-json.format.mjs +12 -0
  82. package/dist/lib/mirror/application/ports/file-system-service.port.mjs +1 -0
  83. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.mjs +1 -0
  84. package/dist/lib/mirror/application/ports/package-repository.port.mjs +1 -0
  85. package/dist/lib/mirror/application/ports/sync-workspace-package.port.mjs +1 -0
  86. package/dist/lib/mirror/application/ports/workspace-service.port.mjs +1 -0
  87. package/dist/lib/mirror/application/requests/mirror-sync.request.mjs +1 -0
  88. package/dist/lib/mirror/application/services/sync-workspace-package.service.mjs +351 -0
  89. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.mjs +219 -0
  90. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.mjs +302 -0
  91. package/dist/lib/mirror/contracts/models.mjs +1 -0
  92. package/dist/lib/mirror/contracts/presentation.contract.mjs +1 -0
  93. package/dist/lib/mirror/contracts/tokens.mjs +11 -0
  94. package/dist/lib/mirror/contracts/use-cases.contract.mjs +1 -0
  95. package/dist/lib/mirror/domain/constants.domain.mjs +16 -0
  96. package/dist/lib/mirror/domain/errors.domain.mjs +15 -0
  97. package/dist/lib/mirror/domain/types.domain.mjs +1 -0
  98. package/dist/lib/mirror/infra/dirent-list.adapter.mjs +13 -0
  99. package/dist/lib/mirror/infra/file-system-service.adapter.mjs +256 -0
  100. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.mjs +1 -0
  101. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.mjs +236 -0
  102. package/dist/lib/mirror/infra/package-filter.adapter.mjs +25 -0
  103. package/dist/lib/mirror/infra/package-repository.adapter.mjs +235 -0
  104. package/dist/lib/mirror/infra/path-normalizer.adapter.mjs +7 -0
  105. package/dist/lib/mirror/infra/update-pkg.adapter.mjs +102 -0
  106. package/dist/lib/mirror/infra/workspace-packages.adapter.mjs +154 -0
  107. package/dist/lib/mirror/infra/workspace-service.adapter.mjs +232 -0
  108. package/dist/lib/mirror/mirror.feature.module.mjs +19 -0
  109. package/dist/lib/mirror/mirror.module.mjs +23 -0
  110. package/dist/lib/mirror/mirror.presentation.module.mjs +11 -0
  111. package/dist/lib/mirror/presentation/mirror-cli-schema.presenter.mjs +12 -0
  112. package/dist/lib/mirror/presentation/prepare-mirror.orchestrator.mjs +263 -0
  113. package/dist/lib/mirror/presentation/reporter.presenter.mjs +111 -0
  114. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.mjs +20 -0
  115. package/dist/lib/shared/source-code/domain/text-edit.model.mjs +28 -0
  116. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.mjs +33 -0
  117. package/dist/lib/tag/application/ports/tag-since-writer.port.mjs +1 -0
  118. package/dist/lib/tag/application/ports/tag-version-resolver.port.mjs +1 -0
  119. package/dist/lib/tag/application/ports/target-resolver.port.mjs +1 -0
  120. package/dist/lib/tag/application/ports/typescript-tree-walk.port.mjs +1 -0
  121. package/dist/lib/tag/application/requests/tag-sync.request.mjs +1 -0
  122. package/dist/lib/tag/application/tag-sync-cli-result.mjs +11 -0
  123. package/dist/lib/tag/application/tag-sync-json.format.mjs +14 -0
  124. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.mjs +398 -0
  125. package/dist/lib/tag/contracts/models.mjs +1 -0
  126. package/dist/lib/tag/contracts/presentation.contract.mjs +1 -0
  127. package/dist/lib/tag/contracts/tokens.mjs +12 -0
  128. package/dist/lib/tag/contracts/use-cases.contract.mjs +1 -0
  129. package/dist/lib/tag/domain/types.domain.mjs +1 -0
  130. package/dist/lib/tag/infra/tag-since-writer.adapter.mjs +343 -0
  131. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.mjs +1 -0
  132. package/dist/lib/tag/infra/tag-target-candidates.adapter.mjs +170 -0
  133. package/dist/lib/tag/infra/tag-target-resolver.adapter.mjs +226 -0
  134. package/dist/lib/tag/infra/tag-version-resolver.adapter.mjs +247 -0
  135. package/dist/lib/tag/infra/typescript-tree-walk.adapter.mjs +226 -0
  136. package/dist/lib/tag/presentation/colors.presenter.mjs +12 -0
  137. package/dist/lib/tag/presentation/create-tag-progress-listener.presenter.mjs +228 -0
  138. package/dist/lib/tag/presentation/prepare-tag.orchestrator.mjs +264 -0
  139. package/dist/lib/tag/presentation/present-tag-sync-result.presenter.mjs +233 -0
  140. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.mjs +9 -0
  141. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.mjs +12 -0
  142. package/dist/lib/tag/presentation/tag-cli-schema.presenter.mjs +12 -0
  143. package/dist/lib/tag/presentation/tag-sync.presenter.mjs +78 -0
  144. package/dist/lib/tag/tag.feature.module.mjs +19 -0
  145. package/dist/lib/tag/tag.module.mjs +21 -0
  146. package/dist/lib/tag/tag.presentation.module.mjs +15 -0
  147. package/dist/program.mjs +39 -0
  148. package/package.json +16 -19
  149. package/dist/bin.d.ts +0 -3
  150. package/dist/bin.d.ts.map +0 -1
  151. package/dist/commands/arrange.d.ts +0 -3
  152. package/dist/commands/arrange.d.ts.map +0 -1
  153. package/dist/commands/arrange.js +0 -129
  154. package/dist/commands/mirror.d.ts +0 -4
  155. package/dist/commands/mirror.d.ts.map +0 -1
  156. package/dist/commands/mirror.js +0 -75
  157. package/dist/commands/tag.d.ts +0 -3
  158. package/dist/commands/tag.d.ts.map +0 -1
  159. package/dist/commands/tag.js +0 -41
  160. package/dist/lib/arrange/application/analyze.d.ts +0 -17
  161. package/dist/lib/arrange/application/analyze.d.ts.map +0 -1
  162. package/dist/lib/arrange/application/analyze.js +0 -24
  163. package/dist/lib/arrange/application/group-file-preview.d.ts +0 -17
  164. package/dist/lib/arrange/application/group-file-preview.d.ts.map +0 -1
  165. package/dist/lib/arrange/application/group-file-preview.js +0 -46
  166. package/dist/lib/arrange/application/group-file.d.ts +0 -5
  167. package/dist/lib/arrange/application/group-file.d.ts.map +0 -1
  168. package/dist/lib/arrange/application/group-file.js +0 -40
  169. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts +0 -5
  170. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts.map +0 -1
  171. package/dist/lib/arrange/application/ports/file-walker.port.d.ts +0 -5
  172. package/dist/lib/arrange/application/ports/file-walker.port.d.ts.map +0 -1
  173. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts +0 -6
  174. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts.map +0 -1
  175. package/dist/lib/arrange/application/requests/analyze-directory.request.js +0 -4
  176. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts +0 -18
  177. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts.map +0 -1
  178. package/dist/lib/arrange/application/requests/arrange-sync.request.js +0 -15
  179. package/dist/lib/arrange/application/run-target.d.ts +0 -19
  180. package/dist/lib/arrange/application/run-target.d.ts.map +0 -1
  181. package/dist/lib/arrange/application/run-target.js +0 -85
  182. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts +0 -12
  183. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts.map +0 -1
  184. package/dist/lib/arrange/domain/arrange-analyze.service.js +0 -116
  185. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts +0 -53
  186. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts.map +0 -1
  187. package/dist/lib/arrange/domain/arrange-grouping.service.js +0 -106
  188. package/dist/lib/arrange/domain/ast/ast-helpers.d.ts +0 -28
  189. package/dist/lib/arrange/domain/ast/ast-helpers.d.ts.map +0 -1
  190. package/dist/lib/arrange/domain/ast/ast-helpers.js +0 -130
  191. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts +0 -179
  192. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts.map +0 -1
  193. package/dist/lib/arrange/domain/ast/ast-node.model.js +0 -210
  194. package/dist/lib/arrange/domain/ast/collectors-cn.d.ts +0 -7
  195. package/dist/lib/arrange/domain/ast/collectors-cn.d.ts.map +0 -1
  196. package/dist/lib/arrange/domain/ast/collectors-cn.js +0 -70
  197. package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts +0 -4
  198. package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts.map +0 -1
  199. package/dist/lib/arrange/domain/ast/collectors-jsx.js +0 -21
  200. package/dist/lib/arrange/domain/ast/collectors-tv.d.ts +0 -13
  201. package/dist/lib/arrange/domain/ast/collectors-tv.d.ts.map +0 -1
  202. package/dist/lib/arrange/domain/ast/collectors-tv.js +0 -302
  203. package/dist/lib/arrange/domain/ast/targets.d.ts +0 -8
  204. package/dist/lib/arrange/domain/ast/targets.d.ts.map +0 -1
  205. package/dist/lib/arrange/domain/ast/targets.js +0 -147
  206. package/dist/lib/arrange/domain/constants.d.ts +0 -68
  207. package/dist/lib/arrange/domain/constants.d.ts.map +0 -1
  208. package/dist/lib/arrange/domain/constants.js +0 -180
  209. package/dist/lib/arrange/domain/errors.d.ts +0 -14
  210. package/dist/lib/arrange/domain/errors.d.ts.map +0 -1
  211. package/dist/lib/arrange/domain/errors.js +0 -16
  212. package/dist/lib/arrange/domain/grouping.d.ts +0 -41
  213. package/dist/lib/arrange/domain/grouping.d.ts.map +0 -1
  214. package/dist/lib/arrange/domain/grouping.js +0 -307
  215. package/dist/lib/arrange/domain/imports.d.ts +0 -7
  216. package/dist/lib/arrange/domain/imports.d.ts.map +0 -1
  217. package/dist/lib/arrange/domain/imports.js +0 -80
  218. package/dist/lib/arrange/domain/source-text-formatters.d.ts +0 -16
  219. package/dist/lib/arrange/domain/source-text-formatters.d.ts.map +0 -1
  220. package/dist/lib/arrange/domain/source-text-formatters.js +0 -55
  221. package/dist/lib/arrange/domain/tokenizer.d.ts +0 -45
  222. package/dist/lib/arrange/domain/tokenizer.d.ts.map +0 -1
  223. package/dist/lib/arrange/domain/tokenizer.js +0 -466
  224. package/dist/lib/arrange/domain/types.d.ts +0 -112
  225. package/dist/lib/arrange/domain/types.d.ts.map +0 -1
  226. package/dist/lib/arrange/domain/types.js +0 -7
  227. package/dist/lib/arrange/index.d.ts +0 -45
  228. package/dist/lib/arrange/index.d.ts.map +0 -1
  229. package/dist/lib/arrange/index.js +0 -41
  230. package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts +0 -14
  231. package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts.map +0 -1
  232. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts +0 -11
  233. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts.map +0 -1
  234. package/dist/lib/arrange/infra/domain-source-parser.adapter.js +0 -19
  235. package/dist/lib/arrange/infra/ensure-cn-import.d.ts +0 -3
  236. package/dist/lib/arrange/infra/ensure-cn-import.d.ts.map +0 -1
  237. package/dist/lib/arrange/infra/ensure-cn-import.js +0 -6
  238. package/dist/lib/arrange/infra/file-walker.adapter.d.ts +0 -8
  239. package/dist/lib/arrange/infra/file-walker.adapter.d.ts.map +0 -1
  240. package/dist/lib/arrange/infra/file-walker.adapter.js +0 -17
  241. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts +0 -8
  242. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts.map +0 -1
  243. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.js +0 -25
  244. package/dist/lib/arrange/infra/ts-ast-translator.d.ts +0 -10
  245. package/dist/lib/arrange/infra/ts-ast-translator.d.ts.map +0 -1
  246. package/dist/lib/arrange/infra/ts-ast-translator.js +0 -363
  247. package/dist/lib/arrange/presentation/formatters.d.ts +0 -3
  248. package/dist/lib/arrange/presentation/formatters.d.ts.map +0 -1
  249. package/dist/lib/arrange/presentation/formatters.js +0 -2
  250. package/dist/lib/arrange/presentation/report.d.ts +0 -4
  251. package/dist/lib/arrange/presentation/report.d.ts.map +0 -1
  252. package/dist/lib/arrange/presentation/report.js +0 -37
  253. package/dist/lib/config/domain/schema.d.ts +0 -50
  254. package/dist/lib/config/domain/schema.d.ts.map +0 -1
  255. package/dist/lib/config/domain/schema.js +0 -43
  256. package/dist/lib/config/index.d.ts +0 -4
  257. package/dist/lib/config/index.d.ts.map +0 -1
  258. package/dist/lib/config/index.js +0 -2
  259. package/dist/lib/config/infra/loader.d.ts +0 -11
  260. package/dist/lib/config/infra/loader.d.ts.map +0 -1
  261. package/dist/lib/config/infra/loader.js +0 -90
  262. package/dist/lib/core/application/architecture-boundaries.d.ts +0 -19
  263. package/dist/lib/core/application/architecture-boundaries.d.ts.map +0 -1
  264. package/dist/lib/core/application/architecture-boundaries.js +0 -263
  265. package/dist/lib/core/application/ports/cli-io.port.d.ts +0 -27
  266. package/dist/lib/core/application/ports/cli-io.port.d.ts.map +0 -1
  267. package/dist/lib/core/application/schema-parse.d.ts +0 -8
  268. package/dist/lib/core/application/schema-parse.d.ts.map +0 -1
  269. package/dist/lib/core/application/schema-parse.js +0 -20
  270. package/dist/lib/core/application/utils/caught-unknown-message.d.ts +0 -6
  271. package/dist/lib/core/application/utils/caught-unknown-message.d.ts.map +0 -1
  272. package/dist/lib/core/application/utils/caught-unknown-message.js +0 -34
  273. package/dist/lib/core/application/utils/verbose-diagnostics.d.ts +0 -5
  274. package/dist/lib/core/application/utils/verbose-diagnostics.d.ts.map +0 -1
  275. package/dist/lib/core/application/utils/verbose-diagnostics.js +0 -7
  276. package/dist/lib/core/domain/errors.d.ts +0 -11
  277. package/dist/lib/core/domain/errors.d.ts.map +0 -1
  278. package/dist/lib/core/domain/errors.js +0 -9
  279. package/dist/lib/core/domain/result.d.ts +0 -15
  280. package/dist/lib/core/domain/result.d.ts.map +0 -1
  281. package/dist/lib/core/domain/result.js +0 -9
  282. package/dist/lib/core/infra/container.d.ts +0 -34
  283. package/dist/lib/core/infra/container.d.ts.map +0 -1
  284. package/dist/lib/core/infra/container.js +0 -65
  285. package/dist/lib/core/infra/logging-decorator.d.ts +0 -12
  286. package/dist/lib/core/infra/logging-decorator.d.ts.map +0 -1
  287. package/dist/lib/core/infra/logging-decorator.js +0 -75
  288. package/dist/lib/core/presentation/cli-executor.d.ts +0 -33
  289. package/dist/lib/core/presentation/cli-executor.d.ts.map +0 -1
  290. package/dist/lib/core/presentation/cli-executor.js +0 -73
  291. package/dist/lib/core/presentation/create-command-handler.d.ts +0 -20
  292. package/dist/lib/core/presentation/create-command-handler.d.ts.map +0 -1
  293. package/dist/lib/core/presentation/create-command-handler.js +0 -70
  294. package/dist/lib/core/presentation/format-app-error.d.ts +0 -6
  295. package/dist/lib/core/presentation/format-app-error.d.ts.map +0 -1
  296. package/dist/lib/core/presentation/format-app-error.js +0 -19
  297. package/dist/lib/infra/caught-unknown-message.d.ts +0 -2
  298. package/dist/lib/infra/caught-unknown-message.d.ts.map +0 -1
  299. package/dist/lib/infra/caught-unknown-message.js +0 -1
  300. package/dist/lib/infra/config-reporter.d.ts +0 -4
  301. package/dist/lib/infra/config-reporter.d.ts.map +0 -1
  302. package/dist/lib/infra/config-reporter.js +0 -9
  303. package/dist/lib/infra/fs-contract.d.ts +0 -2
  304. package/dist/lib/infra/fs-contract.d.ts.map +0 -1
  305. package/dist/lib/infra/node-io.d.ts +0 -4
  306. package/dist/lib/infra/node-io.d.ts.map +0 -1
  307. package/dist/lib/infra/node-io.js +0 -27
  308. package/dist/lib/infra/workspace/repo-root.d.ts +0 -7
  309. package/dist/lib/infra/workspace/repo-root.d.ts.map +0 -1
  310. package/dist/lib/infra/workspace/repo-root.js +0 -23
  311. package/dist/lib/mirror/application/engine.d.ts +0 -10
  312. package/dist/lib/mirror/application/engine.d.ts.map +0 -1
  313. package/dist/lib/mirror/application/engine.js +0 -271
  314. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts +0 -6
  315. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts.map +0 -1
  316. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts +0 -27
  317. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts.map +0 -1
  318. package/dist/lib/mirror/application/ports/package-repository.port.d.ts +0 -16
  319. package/dist/lib/mirror/application/ports/package-repository.port.d.ts.map +0 -1
  320. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts +0 -7
  321. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts.map +0 -1
  322. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts +0 -10
  323. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts.map +0 -1
  324. package/dist/lib/mirror/application/requests/mirror-sync.request.js +0 -8
  325. package/dist/lib/mirror/application/sync.d.ts +0 -19
  326. package/dist/lib/mirror/application/sync.d.ts.map +0 -1
  327. package/dist/lib/mirror/application/sync.js +0 -168
  328. package/dist/lib/mirror/domain/constants.d.ts +0 -6
  329. package/dist/lib/mirror/domain/constants.d.ts.map +0 -1
  330. package/dist/lib/mirror/domain/constants.js +0 -5
  331. package/dist/lib/mirror/domain/errors.d.ts +0 -10
  332. package/dist/lib/mirror/domain/errors.d.ts.map +0 -1
  333. package/dist/lib/mirror/domain/errors.js +0 -12
  334. package/dist/lib/mirror/domain/types.d.ts +0 -65
  335. package/dist/lib/mirror/domain/types.d.ts.map +0 -1
  336. package/dist/lib/mirror/index.d.ts +0 -6
  337. package/dist/lib/mirror/index.d.ts.map +0 -1
  338. package/dist/lib/mirror/index.js +0 -1
  339. package/dist/lib/mirror/infra/dirent-list.d.ts +0 -9
  340. package/dist/lib/mirror/infra/dirent-list.d.ts.map +0 -1
  341. package/dist/lib/mirror/infra/dirent-list.js +0 -13
  342. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts +0 -7
  343. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts.map +0 -1
  344. package/dist/lib/mirror/infra/file-system-service.adapter.js +0 -47
  345. package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts +0 -14
  346. package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts.map +0 -1
  347. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts +0 -3
  348. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts.map +0 -1
  349. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.js +0 -13
  350. package/dist/lib/mirror/infra/package-filter.d.ts +0 -8
  351. package/dist/lib/mirror/infra/package-filter.d.ts.map +0 -1
  352. package/dist/lib/mirror/infra/package-filter.js +0 -33
  353. package/dist/lib/mirror/infra/package-repository.adapter.d.ts +0 -17
  354. package/dist/lib/mirror/infra/package-repository.adapter.d.ts.map +0 -1
  355. package/dist/lib/mirror/infra/package-repository.adapter.js +0 -17
  356. package/dist/lib/mirror/infra/path-normalizer.d.ts +0 -2
  357. package/dist/lib/mirror/infra/path-normalizer.d.ts.map +0 -1
  358. package/dist/lib/mirror/infra/path-normalizer.js +0 -4
  359. package/dist/lib/mirror/infra/update-pkg.d.ts +0 -19
  360. package/dist/lib/mirror/infra/update-pkg.d.ts.map +0 -1
  361. package/dist/lib/mirror/infra/update-pkg.js +0 -156
  362. package/dist/lib/mirror/infra/workspace-packages.d.ts +0 -26
  363. package/dist/lib/mirror/infra/workspace-packages.d.ts.map +0 -1
  364. package/dist/lib/mirror/infra/workspace-packages.js +0 -170
  365. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts +0 -8
  366. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts.map +0 -1
  367. package/dist/lib/mirror/infra/workspace-service.adapter.js +0 -10
  368. package/dist/lib/mirror/presentation/reporter.d.ts +0 -25
  369. package/dist/lib/mirror/presentation/reporter.d.ts.map +0 -1
  370. package/dist/lib/mirror/presentation/reporter.js +0 -140
  371. package/dist/lib/shared/source-code/domain/text-edit.d.ts +0 -14
  372. package/dist/lib/shared/source-code/domain/text-edit.d.ts.map +0 -1
  373. package/dist/lib/shared/source-code/domain/text-edit.js +0 -30
  374. package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts +0 -4
  375. package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts.map +0 -1
  376. package/dist/lib/shared/source-code/infra/tsx-file-walk.js +0 -37
  377. package/dist/lib/tag/application/engine.d.ts +0 -23
  378. package/dist/lib/tag/application/engine.d.ts.map +0 -1
  379. package/dist/lib/tag/application/engine.js +0 -357
  380. package/dist/lib/tag/application/ports/target-resolver.port.d.ts +0 -6
  381. package/dist/lib/tag/application/ports/target-resolver.port.d.ts.map +0 -1
  382. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts +0 -6
  383. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts.map +0 -1
  384. package/dist/lib/tag/application/requests/tag-sync.request.d.ts +0 -10
  385. package/dist/lib/tag/application/requests/tag-sync.request.d.ts.map +0 -1
  386. package/dist/lib/tag/application/requests/tag-sync.request.js +0 -8
  387. package/dist/lib/tag/domain/types.d.ts +0 -56
  388. package/dist/lib/tag/domain/types.d.ts.map +0 -1
  389. package/dist/lib/tag/index.d.ts +0 -14
  390. package/dist/lib/tag/index.d.ts.map +0 -1
  391. package/dist/lib/tag/index.js +0 -10
  392. package/dist/lib/tag/infra/tag-sync-cli-options.d.ts +0 -14
  393. package/dist/lib/tag/infra/tag-sync-cli-options.d.ts.map +0 -1
  394. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts +0 -3
  395. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts.map +0 -1
  396. package/dist/lib/tag/infra/tag-target-resolver.adapter.js +0 -4
  397. package/dist/lib/tag/infra/target-resolver.d.ts +0 -4
  398. package/dist/lib/tag/infra/target-resolver.d.ts.map +0 -1
  399. package/dist/lib/tag/infra/target-resolver.js +0 -200
  400. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts +0 -3
  401. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts.map +0 -1
  402. package/dist/lib/tag/infra/typescript-tree-walk.adapter.js +0 -4
  403. package/dist/lib/tag/presentation/colors.d.ts +0 -8
  404. package/dist/lib/tag/presentation/colors.d.ts.map +0 -1
  405. package/dist/lib/tag/presentation/colors.js +0 -9
  406. package/dist/lib/tag/presentation/tag-presenter.d.ts +0 -20
  407. package/dist/lib/tag/presentation/tag-presenter.d.ts.map +0 -1
  408. package/dist/lib/tag/presentation/tag-presenter.js +0 -92
  409. package/dist/program.d.ts +0 -4
  410. package/dist/program.d.ts.map +0 -1
  411. package/dist/program.js +0 -40
  412. /package/dist/lib/arrange/application/ports/{domain-source-parser.port.js → domain-source-parser.port.mjs} +0 -0
  413. /package/dist/lib/arrange/application/ports/{file-walker.port.js → file-walker.port.mjs} +0 -0
  414. /package/dist/lib/arrange/{infra/arrange-sync-cli-options.js → application/ports/group-file-preview.port.mjs} +0 -0
  415. /package/dist/lib/{core/application/ports/cli-io.port.js → arrange/application/requests/analyze-directory.request.mjs} +0 -0
  416. /package/dist/lib/{infra/fs-contract.js → arrange/application/requests/arrange-sync.request.mjs} +0 -0
  417. /package/dist/lib/{mirror/application/ports/file-system-service.port.js → arrange/application/requests/suggest-groups.request.mjs} +0 -0
  418. /package/dist/lib/{mirror/application/ports/mirror-sync-reporter.port.js → arrange/contracts/models.mjs} +0 -0
  419. /package/dist/lib/{mirror/application/ports/package-repository.port.js → arrange/contracts/presentation.contract.mjs} +0 -0
  420. /package/dist/lib/{mirror/application/ports/workspace-service.port.js → arrange/contracts/services.contract.mjs} +0 -0
  421. /package/dist/lib/{mirror/domain/types.js → arrange/contracts/use-cases.contract.mjs} +0 -0
  422. /package/dist/lib/{mirror/infra/mirror-sync-cli-options.js → arrange/domain/types.domain.mjs} +0 -0
  423. /package/dist/lib/{tag/application/ports/target-resolver.port.js → arrange/infra/arrange-sync-cli-options.adapter.mjs} +0 -0
  424. /package/dist/lib/{tag/application/ports/typescript-tree-walk.port.js → config/application/ports/config-loader.port.mjs} +0 -0
  425. /package/dist/lib/{tag/domain/types.js → config/domain/schema.domain.mjs} +0 -0
  426. /package/dist/lib/{tag/infra/tag-sync-cli-options.js → core/application/ports/cli-io.port.mjs} +0 -0
@@ -0,0 +1,209 @@
1
+ import { COMPATIBLE_BUCKET_SETS, RESPONSIVE_PREFIX, STATE_PREFIXES } from "./constants.domain.mjs";
2
+ //#region src/lib/arrange/domain/tokenizer.util.ts
3
+ /**
4
+ * Bare-token classification is **total** (always returns a {@link Bucket}). The `Result` pattern
5
+ * (`isOk` / `isErr`) belongs at arrange use-case / I/O boundaries, not on this hot path.
6
+ *
7
+ * Variant stems not covered by a single entry in STATE_PREFIXES (compound `has-*`,
8
+ * numbered `nth-*`, media features, v4 `in-[…]`, child selectors `*` / `**`, …).
9
+ * When these are missed, `isStateToken` is false and the variant is stripped — the
10
+ * utility is then bucketed as if it were unconditional, which breaks preview grouping.
11
+ */ function isCompoundOrMediaVariantPrefix(prefix) {
12
+ if (prefix === "*" || prefix === "**") return true;
13
+ if (prefix === "inert") return true;
14
+ if (prefix.startsWith("has-")) return true;
15
+ if (prefix.startsWith("in-[")) return true;
16
+ if (/^nth(?:-last)?(?:-of-type)?(?:-\d+|-\[)/.test(prefix) || /^nth-of-type-\d+$/.test(prefix) || /^nth-last-of-type-\d+$/.test(prefix)) return true;
17
+ if (/^(?:user-valid|user-invalid|contrast-more|contrast-less|forced-colors|inverted-colors)$/.test(prefix)) return true;
18
+ if (/^(?:any-)?pointer-(?:fine|coarse|none)$/.test(prefix)) return true;
19
+ if (/^(?:portrait|landscape|noscript)$/.test(prefix)) return true;
20
+ return false;
21
+ }
22
+ function tokenizeClassString(classString) {
23
+ return classString.trim().split(/\s+/).filter(Boolean);
24
+ }
25
+ /**
26
+ * Index of the first `:` that separates a Tailwind variant segment from the rest.
27
+ * Colons inside `[...]` (at positive bracket depth) are ignored so selectors like
28
+ * `[&_a:hover]:text-red-500` split as `[&_a:hover]:` + `text-red-500`.
29
+ */ function indexOfFirstVariantColon(text) {
30
+ let depth = 0;
31
+ for (let i = 0; i < text.length; i++) {
32
+ const ch = text[i];
33
+ if (ch === "[") depth++;
34
+ else if (ch === "]") depth = Math.max(0, depth - 1);
35
+ else if (ch === ":" && depth === 0) return i;
36
+ }
37
+ return -1;
38
+ }
39
+ function stripVariants(token) {
40
+ let withoutVariants = token;
41
+ const MAX_PASSES = 12;
42
+ for (let i = 0; i < MAX_PASSES; i++) {
43
+ const colonIdx = indexOfFirstVariantColon(withoutVariants);
44
+ if (colonIdx === -1) break;
45
+ withoutVariants = withoutVariants.slice(colonIdx + 1);
46
+ }
47
+ return withoutVariants;
48
+ }
49
+ /** Outermost variant segment: first `:` at bracket depth 0 → text before it. */ function firstLeadingVariantPrefix(token) {
50
+ const colonIdx = indexOfFirstVariantColon(token);
51
+ if (colonIdx === -1) return;
52
+ return token.slice(0, colonIdx);
53
+ }
54
+ function isSelectorVariantToken(token) {
55
+ const prefix = firstLeadingVariantPrefix(token);
56
+ if (prefix === void 0) return false;
57
+ if (prefix === "*" || prefix === "**") return true;
58
+ if (prefix.startsWith("has-")) return true;
59
+ if (prefix.startsWith("in-[")) return true;
60
+ if (prefix.startsWith("group-[")) return true;
61
+ if (prefix.startsWith("peer-[")) return true;
62
+ if (prefix.startsWith("not-[")) return true;
63
+ return false;
64
+ }
65
+ function isStateToken(token) {
66
+ const prefix = firstLeadingVariantPrefix(token);
67
+ if (prefix === void 0) return false;
68
+ if (RESPONSIVE_PREFIX.test(token)) return true;
69
+ if (STATE_PREFIXES.has(prefix)) return true;
70
+ if (prefix.startsWith("data-[")) return true;
71
+ if (prefix.startsWith("aria-[")) return true;
72
+ if (prefix.startsWith("supports-[")) return true;
73
+ if (prefix.startsWith("in-data-")) return true;
74
+ if (/^data-(?!\[)/.test(prefix)) return true;
75
+ if (/^aria-/.test(prefix)) return true;
76
+ if (/^(group|peer)-/.test(prefix)) return true;
77
+ if (/^not-/.test(prefix)) return true;
78
+ if (isCompoundOrMediaVariantPrefix(prefix)) return true;
79
+ if (prefix.startsWith("[") && prefix.endsWith("]")) return true;
80
+ return false;
81
+ }
82
+ /**
83
+ * Secondary sort inside the **composite** bucket: opacity / blend / isolation →
84
+ * 3D context → 3D transforms → 2D transforms → filters → will-change.
85
+ */ function compositeSecondaryOrder(bareUtility) {
86
+ const b = bareUtility;
87
+ if (/^opacity(?:-|$)/.test(b) || /^mix-blend-/.test(b) || /^isolation(?:-|$)/.test(b) || b === "isolate") return 0;
88
+ if (b === "transform-3d" || /^perspective(?:-|$)/.test(b)) return 10;
89
+ if (/^rotate-[xyz](?:-|$)/.test(b) || /^translate-z(?:-|$)/.test(b) || /^scale-z(?:-|$)/.test(b)) return 20;
90
+ if (/^translate(?:-|$)/.test(b) || /^scale(?:-|$)/.test(b) || /^rotate(?:-|$)/.test(b) || /^skew(?:-|$)/.test(b)) return 30;
91
+ if (/^transform(?:-(?:gpu|cpu|none))?$/.test(b)) return 35;
92
+ if (/^blur(?:-|$)/.test(b) || /^backdrop-/.test(b) || /^filter(?:-|$)/.test(b) || /^brightness-/.test(b) || /^contrast-/.test(b) || /^grayscale(?:-|$)/.test(b) || /^hue-rotate-/.test(b) || /^invert(?:-|$)/.test(b) || /^saturate-/.test(b) || /^sepia(?:-|$)/.test(b)) return 40;
93
+ if (/^will-change/.test(b)) return 50;
94
+ return 99;
95
+ }
96
+ /** Classify a **bare** utility (no `hover:` / `md:` / … prefixes). */ function classifyBareUtility(bareUtility) {
97
+ const b = bareUtility;
98
+ if (/^@container(?:\/[a-z][a-z0-9-]*)?$/i.test(b)) return "existence";
99
+ if (/^(?:hidden|contents|sr-only|not-sr-only|list-item|flow-root)$/.test(b) || /^(?:block|inline-block|inline)$/.test(b)) return "existence";
100
+ if (/^table(?:$|-)/.test(b)) return "existence";
101
+ if (/^contain-/.test(b)) return "existence";
102
+ if (/^(?:group|peer)(?:\/[a-z][a-z0-9-]*)?$/.test(b)) return "existence";
103
+ if (/^(?:static|relative|absolute|fixed|sticky)$/.test(b)) return "position";
104
+ if (/^-?(?:inset|top|right|bottom|left|start|end)(?:-|\/|$)/.test(b) || /^-?(?:inset-x|inset-y|inset-s|inset-e)-/.test(b)) return "position";
105
+ if (/^-?z-/.test(b) || b === "z-auto") return "position";
106
+ if (/^(?:flex|inline-flex|grid|inline-grid|subgrid|masonry)(?:$|-)/.test(b) || /^(?:items|justify|justify-items|justify-self|content|self|place|place-content|place-items|place-self)-/.test(b) || /^-?(?:gap|space-[xy]|col-|row-|grid-|auto-cols|auto-rows|order-|order$)/.test(b) || /^-?(?:auto-flow|grid-flow)-/.test(b) || /^(?:columns-|break-after|break-before|break-inside)-/.test(b) || /^(?:float|clear)-/.test(b) || /^(?:wrap-|flex-wrap|flex-nowrap|flex-row|flex-col|flex-auto|flex-initial|flex-none|flex-1|flex-\[)/.test(b) || /^container$/.test(b)) return "layout";
107
+ if (/^-?(?:w|h|min-w|max-w|min-h|max-h|size|aspect|shrink|grow|basis)-/.test(b) || /^(?:shrink|grow)(?:$|-)/.test(b) || /^-?overflow-/.test(b) || /^-?object-/.test(b)) return "sizing";
108
+ if (/^-?(?:p|px|py|pt|pb|pl|pr|ps|pe|m|mx|my|mt|mb|ml|mr|ms|me)-/.test(b)) return "spacing";
109
+ if (/^-?(?:rounded|border|ring|divide|inset-ring)(?:-|\/|$)/.test(b) || /^(?:rounded|border|ring|divide|inset-ring)$/.test(b) || /^ring-offset-/.test(b)) return "shape";
110
+ if (/^-?bg-/.test(b) || /^(?:from|via|to)(?:-|\/|$)/.test(b) || /^bg-(?:linear|radial|conic)-/.test(b) || /^-?mask-/.test(b) || /^-?(?:fill|stroke)-/.test(b)) return "background";
111
+ if (/^-?(?:shadow|inset-shadow|drop-shadow|text-shadow)(?:-|\/|$)/.test(b) || /^(?:shadow|inset-shadow)$/.test(b) || /^-?outline(?:-|\/|$)/.test(b) || /^outline$/.test(b)) return "shadow";
112
+ if (/^-?(?:font|leading|tracking|list|indent|align|decoration|underline-offset|text-wrap|text-balance|text-pretty)-/.test(b) || /^-?(?:text-(?!shadow))/.test(b) || /^-?(?:whitespace|break|line-clamp|hyphens)-/.test(b) || /^(?:antialiased|subpixel-antialiased|italic|not-italic|overline|line-through|underline|no-underline|uppercase|lowercase|capitalize|normal-case|truncate|text-wrap|text-balance|text-pretty)$/.test(b) || /^text-wrap-/.test(b) || /^tabular-nums$|^slashed-zero$|^lining-nums$|^oldstyle-nums$|^proportional-nums$/.test(b)) return "typography";
113
+ if (/^opacity(?:-|$)/.test(b) || /^mix-blend-/.test(b) || /^isolation(?:-|$)/.test(b) || b === "isolate" || /^transform(?:-(?:gpu|cpu|none))?$/.test(b) || /^-?(?:translate|scale|rotate|skew)-/.test(b) || /^perspective(?:-|$)/.test(b) || b === "transform-3d" || /^blur(?:-|$)/.test(b) || /^backdrop-/.test(b) || /^filter(?:-|$)/.test(b) || /^brightness-/.test(b) || /^contrast-/.test(b) || /^grayscale(?:-|$)/.test(b) || /^hue-rotate-/.test(b) || /^invert(?:-|$)/.test(b) || /^saturate-/.test(b) || /^sepia(?:-|$)/.test(b) || /^will-change/.test(b)) return "composite";
114
+ if (/^(?:transition|duration|ease|delay|animate)(?:-|$)/.test(b) || /^ease-/.test(b)) return "motion";
115
+ if (/^(?:cursor|pointer-events|select|touch|scroll|scroll-m|scroll-p|overscroll|snap|resize|field-sizing|appearance|scheme|color-scheme|accent|caret)(?:-|$)/.test(b) || /^(?:cursor|select|resize)$/.test(b) || /^scroll-behavior/.test(b) || /^scroll-snap/.test(b) || /^touch-action/.test(b) || b === "inert") return "behavior";
116
+ return "other";
117
+ }
118
+ /**
119
+ * Arbitrary **parent** selectors (`[&…]`, `[&>a]:…`, slot forms with `&` inside the bracket)
120
+ * scope utilities to descendants — bucket as `selector` so they chunk apart from base layout/typography
121
+ * and are labeled distinctly from interactive `state` variants (`hover:`, `data-[…]:`, …).
122
+ * Pure arbitrary **properties** (`[--x]:`, `[color:red]`) have no `&` in the leading `[…]` segment.
123
+ */ function isArbitraryParentSelectorStateToken(token) {
124
+ if (/^\[&/.test(token)) return true;
125
+ if (!token.startsWith("[")) return false;
126
+ const colonIdx = indexOfFirstVariantColon(token);
127
+ if (colonIdx === -1 || colonIdx === 0 || token[colonIdx - 1] !== "]") return false;
128
+ return token.slice(0, colonIdx).includes("&");
129
+ }
130
+ function classifyToken(token) {
131
+ if (isArbitraryParentSelectorStateToken(token)) return "selector";
132
+ if (isSelectorVariantToken(token)) return "selector";
133
+ if (/^@container(?:\/[a-z][a-z0-9-]*)?$/i.test(token)) return "existence";
134
+ if (token.startsWith("[")) {
135
+ const splitIdx = indexOfFirstVariantColon(token);
136
+ if (splitIdx === -1) return "arbitrary";
137
+ if (splitIdx === 0 || token[splitIdx - 1] !== "]") return "arbitrary";
138
+ }
139
+ if (firstLeadingVariantPrefix(token) === "starting") return "starting";
140
+ if (isStateToken(token)) return "state";
141
+ return classifyBareUtility(stripVariants(token));
142
+ }
143
+ /**
144
+ * Stable key for `data-[…]` variants so unrelated selectors stay split, while
145
+ * **branching on the full bracket** (e.g. `data-[vaul-drawer-direction=bottom]`
146
+ * vs `=left`) keeps direction-specific utilities in separate state groups.
147
+ */ function dataAttributeStem(token) {
148
+ const match = token.match(/^data-\[([^\]]*)\]/);
149
+ return match ? `data-[${match[1]}]` : "data";
150
+ }
151
+ /** Same idea as {@link dataAttributeStem} for `aria-[…]:` variants. */ function ariaAttributeStem(token) {
152
+ const match = token.match(/^aria-\[([^\]]*)\]/);
153
+ return match ? `aria-[${match[1]}]` : "aria";
154
+ }
155
+ /** `in-data-[…]:` — normalize on the full bracket expression like {@link dataAttributeStem}. */ function inDataAttributeStem(token) {
156
+ const match = token.match(/^in-data-\[([^\]]*)\]/);
157
+ return match ? `in-data-[${match[1]}]` : "in-data";
158
+ }
159
+ /**
160
+ * Stable key for splitting adjacent `state` / `starting` tokens in {@link suggestCnGroups}
161
+ * (`selector` uses {@link selectorKey}).
162
+ * Uses the **full variant stack** (every `:` segment outside `[…]`), not only the
163
+ * outermost prefix, so `@md/foo:[&>*]:w-auto` and `@md/foo:has-[…]:mt-px` stay in
164
+ * separate groups while `hover:opacity` still keys as `hover` + `opacity`…
165
+ *
166
+ * `data-[…]` / `aria-[…]` normalize the first segment via {@link dataAttributeStem} /
167
+ * {@link ariaAttributeStem} (full token required for bracket capture).
168
+ */ function stateKey(token) {
169
+ const layers = [];
170
+ let rest = token;
171
+ while (rest.length > 0) {
172
+ const colonIdx = indexOfFirstVariantColon(rest);
173
+ if (colonIdx === -1) break;
174
+ layers.push(rest.slice(0, colonIdx));
175
+ rest = rest.slice(colonIdx + 1);
176
+ }
177
+ if (layers.length === 0) return token;
178
+ const firstLayer = layers[0];
179
+ if (firstLayer === void 0) return token;
180
+ if (firstLayer.startsWith("data-[")) layers[0] = dataAttributeStem(token);
181
+ else if (firstLayer.startsWith("aria-[")) layers[0] = ariaAttributeStem(token);
182
+ else if (firstLayer.startsWith("in-data-[")) layers[0] = inDataAttributeStem(token);
183
+ return layers.join("");
184
+ }
185
+ const SELECTOR_KEY_SEP = "";
186
+ /**
187
+ * Variant key for {@link Bucket} `"selector"` tokens in {@link suggestCnGroups}.
188
+ * Reuses {@link stateKey} layer splitting, then normalizes common shadcn/Radix SVG patterns so
189
+ * `[&_svg]:…` and `[&_svg:not([class*='size-'])]:…` stay in one chunk.
190
+ */ function selectorKey(token) {
191
+ return stateKey(token).split(SELECTOR_KEY_SEP).map(normalizeSelectorVariantLayer).join(SELECTOR_KEY_SEP);
192
+ }
193
+ function normalizeSelectorVariantLayer(layer) {
194
+ if (layer === "[&_svg:not([class*='size-'])]") return "[&_svg]";
195
+ return layer;
196
+ }
197
+ function bucketsCompatible(a, b) {
198
+ if (a === b) return true;
199
+ return COMPATIBLE_BUCKET_SETS.some((bucketSet) => bucketSet.has(a) && bucketSet.has(b));
200
+ }
201
+ /** Like {@link bucketsCompatible}, but never merge two distinct state / starting / selector variant blobs. */ function bucketsMergeCompatible(a, b) {
202
+ if (a === "state" && b === "state") return false;
203
+ if (a === "starting" && b === "starting") return false;
204
+ if (a === "selector" && b === "selector") return false;
205
+ if (a === "arbitrary" || b === "arbitrary") return false;
206
+ return bucketsCompatible(a, b);
207
+ }
208
+ //#endregion
209
+ export { bucketsCompatible, bucketsMergeCompatible, classifyBareUtility, classifyToken, compositeSecondaryOrder, indexOfFirstVariantColon, isArbitraryParentSelectorStateToken, selectorKey, stateKey, stripVariants, tokenizeClassString };
@@ -0,0 +1,240 @@
1
+ import { CliLoggerToken } from "../../core/operational/contracts/tokens.mjs";
2
+ import { messageFromCaughtUnknown } from "../../core/application/utils/caught-unknown-message.util.mjs";
3
+ import { parseDomainSourceFile } from "./ts-ast-translator.adapter.mjs";
4
+ import { inject, injectable } from "@codefast/di";
5
+ //#region src/lib/arrange/infra/domain-source-parser.adapter.ts
6
+ function toPrimitive(input, hint) {
7
+ if (typeof input !== "object" || input === null) return input;
8
+ var prim = input[Symbol.toPrimitive];
9
+ if (prim !== void 0) {
10
+ var res = prim.call(input, hint || "default");
11
+ if (typeof res !== "object") return res;
12
+ throw new TypeError("@@toPrimitive must return a primitive value.");
13
+ }
14
+ return (hint === "string" ? String : Number)(input);
15
+ }
16
+ function toPropertyKey(arg) {
17
+ var key = toPrimitive(arg, "string");
18
+ return typeof key === "symbol" ? key : String(key);
19
+ }
20
+ function checkInRHS(value) {
21
+ if (Object(value) !== value) throw TypeError("right-hand side of 'in' should be an object, got " + (value !== null ? typeof value : "null"));
22
+ return value;
23
+ }
24
+ function setFunctionName(fn, name, prefix) {
25
+ if (typeof name === "symbol") {
26
+ name = name.description;
27
+ name = name ? "[" + name + "]" : "";
28
+ }
29
+ try {
30
+ Object.defineProperty(fn, "name", {
31
+ configurable: true,
32
+ value: prefix ? prefix + " " + name : name
33
+ });
34
+ } catch (_) {}
35
+ return fn;
36
+ }
37
+ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis, instanceBrand, parentClass) {
38
+ var symbolMetadata = Symbol.metadata || Symbol.for("Symbol.metadata");
39
+ var defineProperty = Object.defineProperty;
40
+ var create = Object.create;
41
+ var metadata;
42
+ var existingNonFields = [create(null), create(null)];
43
+ var hasClassDecs = classDecs.length;
44
+ var _;
45
+ function createRunInitializers(initializers, useStaticThis, hasValue) {
46
+ return function(thisArg, value) {
47
+ if (useStaticThis) {
48
+ value = thisArg;
49
+ thisArg = targetClass;
50
+ }
51
+ for (var i = 0; i < initializers.length; i++) value = initializers[i].apply(thisArg, hasValue ? [value] : []);
52
+ return hasValue ? value : thisArg;
53
+ };
54
+ }
55
+ function assertCallable(fn, hint1, hint2, throwUndefined) {
56
+ if (typeof fn !== "function") {
57
+ if (throwUndefined || fn !== void 0) throw new TypeError(hint1 + " must " + (hint2 || "be") + " a function" + (throwUndefined ? "" : " or undefined"));
58
+ }
59
+ return fn;
60
+ }
61
+ function applyDec(Class, decInfo, decoratorsHaveThis, name, kind, initializers, ret, isStatic, isPrivate, isField, hasPrivateBrand) {
62
+ function assertInstanceIfPrivate(target) {
63
+ if (!hasPrivateBrand(target)) throw new TypeError("Attempted to access private element on non-instance");
64
+ }
65
+ var decs = [].concat(decInfo[0]);
66
+ var decVal = decInfo[3];
67
+ var isClass = !ret;
68
+ var isAccessor = kind === 1;
69
+ var isGetter = kind === 3;
70
+ var isSetter = kind === 4;
71
+ var isMethod = kind === 2;
72
+ function bindPropCall(name, useStaticThis, before) {
73
+ return function(_this, value) {
74
+ if (useStaticThis) {
75
+ value = _this;
76
+ _this = Class;
77
+ }
78
+ if (before) before(_this);
79
+ return desc[name].call(_this, value);
80
+ };
81
+ }
82
+ var desc1 = {};
83
+ var init = [];
84
+ var key = isGetter ? "get" : isSetter || isAccessor ? "set" : "value";
85
+ if (!isClass) {
86
+ if (isPrivate) {
87
+ if (isField || isAccessor) desc1 = {
88
+ get: setFunctionName(function() {
89
+ return decVal(this);
90
+ }, name, "get"),
91
+ set: function(value) {
92
+ decInfo[4](this, value);
93
+ }
94
+ };
95
+ else desc1[key] = decVal;
96
+ if (!isField) setFunctionName(desc1[key], name, isMethod ? "" : key);
97
+ } else if (!isField) desc1 = Object.getOwnPropertyDescriptor(Class, name);
98
+ if (!isField && !isPrivate) {
99
+ _ = existingNonFields[+isStatic][name];
100
+ if (_ && (_ ^ kind) !== 7) throw new Error("Decorating two elements with the same name (" + desc1[key].name + ") is not supported yet");
101
+ existingNonFields[+isStatic][name] = kind < 3 ? 1 : kind;
102
+ }
103
+ }
104
+ var newValue = Class;
105
+ for (var i = decs.length - 1; i >= 0; i -= decoratorsHaveThis ? 2 : 1) {
106
+ var dec = assertCallable(decs[i], "A decorator", "be", true);
107
+ var decThis = decoratorsHaveThis ? decs[i - 1] : void 0;
108
+ var decoratorFinishedRef = {};
109
+ var ctx = {
110
+ kind: [
111
+ "field",
112
+ "accessor",
113
+ "method",
114
+ "getter",
115
+ "setter",
116
+ "class"
117
+ ][kind],
118
+ name,
119
+ metadata,
120
+ addInitializer: (function(decoratorFinishedRef, initializer) {
121
+ if (decoratorFinishedRef.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
122
+ assertCallable(initializer, "An initializer", "be", true);
123
+ initializers.push(initializer);
124
+ }).bind(null, decoratorFinishedRef)
125
+ };
126
+ if (isClass) {
127
+ _ = dec.call(decThis, newValue, ctx);
128
+ decoratorFinishedRef.v = 1;
129
+ if (assertCallable(_, "class decorators", "return")) newValue = _;
130
+ continue;
131
+ }
132
+ ctx.static = isStatic;
133
+ ctx.private = isPrivate;
134
+ _ = ctx.access = { has: isPrivate ? hasPrivateBrand.bind() : function(target) {
135
+ return name in target;
136
+ } };
137
+ if (!isSetter) _.get = isPrivate ? isMethod ? function(_this) {
138
+ assertInstanceIfPrivate(_this);
139
+ return desc1.value;
140
+ } : bindPropCall("get", 0, assertInstanceIfPrivate) : function(target) {
141
+ return target[name];
142
+ };
143
+ if (!isMethod && !isGetter) _.set = isPrivate ? bindPropCall("set", 0, assertInstanceIfPrivate) : function(target, value) {
144
+ target[name] = value;
145
+ };
146
+ newValue = dec.call(decThis, isAccessor ? {
147
+ get: desc1.get,
148
+ set: desc1.set
149
+ } : desc1[key], ctx);
150
+ decoratorFinishedRef.v = 1;
151
+ if (isAccessor) {
152
+ if (typeof newValue === "object" && newValue) {
153
+ if (_ = assertCallable(newValue.get, "accessor.get")) desc1.get = _;
154
+ if (_ = assertCallable(newValue.set, "accessor.set")) desc1.set = _;
155
+ if (_ = assertCallable(newValue.init, "accessor.init")) init.unshift(_);
156
+ } else if (newValue !== void 0) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
157
+ } else if (assertCallable(newValue, (isField ? "field" : "method") + " decorators", "return")) if (isField) init.unshift(newValue);
158
+ else desc1[key] = newValue;
159
+ }
160
+ if (kind < 2) ret.push(createRunInitializers(init, isStatic, 1), createRunInitializers(initializers, isStatic, 0));
161
+ if (!isField && !isClass) if (isPrivate) if (isAccessor) ret.splice(-1, 0, bindPropCall("get", isStatic), bindPropCall("set", isStatic));
162
+ else ret.push(isMethod ? desc1[key] : assertCallable.call.bind(desc1[key]));
163
+ else defineProperty(Class, name, desc1);
164
+ return newValue;
165
+ }
166
+ function applyMemberDecs() {
167
+ var ret = [];
168
+ var protoInitializers;
169
+ var staticInitializers;
170
+ var pushInitializers = function(initializers) {
171
+ if (initializers) ret.push(createRunInitializers(initializers));
172
+ };
173
+ var applyMemberDecsOfKind = function(isStatic, isField) {
174
+ for (var i = 0; i < memberDecs.length; i++) {
175
+ var decInfo = memberDecs[i];
176
+ var kind = decInfo[1];
177
+ var kindOnly = kind & 7;
178
+ if ((kind & 8) == isStatic && !kindOnly == isField) {
179
+ var name = decInfo[2];
180
+ var isPrivate = !!decInfo[3];
181
+ var decoratorsHaveThis = kind & 16;
182
+ applyDec(isStatic ? targetClass : targetClass.prototype, decInfo, decoratorsHaveThis, isPrivate ? "#" + name : toPropertyKey(name), kindOnly, kindOnly < 2 ? [] : isStatic ? staticInitializers = staticInitializers || [] : protoInitializers = protoInitializers || [], ret, !!isStatic, isPrivate, isField, isStatic && isPrivate ? function(_) {
183
+ return checkInRHS(_) === targetClass;
184
+ } : instanceBrand);
185
+ }
186
+ }
187
+ };
188
+ applyMemberDecsOfKind(8, 0);
189
+ applyMemberDecsOfKind(0, 0);
190
+ applyMemberDecsOfKind(8, 1);
191
+ applyMemberDecsOfKind(0, 1);
192
+ pushInitializers(protoInitializers);
193
+ pushInitializers(staticInitializers);
194
+ return ret;
195
+ }
196
+ function defineMetadata(Class) {
197
+ return defineProperty(Class, symbolMetadata, {
198
+ configurable: true,
199
+ enumerable: true,
200
+ value: metadata
201
+ });
202
+ }
203
+ if (parentClass !== void 0) metadata = parentClass[symbolMetadata];
204
+ metadata = create(metadata == null ? null : metadata);
205
+ _ = applyMemberDecs();
206
+ if (!hasClassDecs) defineMetadata(targetClass);
207
+ return {
208
+ e: _,
209
+ get c() {
210
+ var initializers = [];
211
+ return hasClassDecs && [defineMetadata(targetClass = applyDec(targetClass, [classDecs], classDecsHaveThis, targetClass.name, 5, initializers)), createRunInitializers(initializers, 1)];
212
+ }
213
+ };
214
+ }
215
+ let _dec, _initClass;
216
+ _dec = injectable([inject(CliLoggerToken)]);
217
+ let _DomainSourceParserAdapter;
218
+ (class {
219
+ logger;
220
+ static {
221
+ ({c: [_DomainSourceParserAdapter, _initClass]} = _apply_decs_2311(this, [_dec], []));
222
+ }
223
+ constructor(logger) {
224
+ this.logger = logger;
225
+ }
226
+ parseDomainSourceFile(filePath, sourceText) {
227
+ try {
228
+ return parseDomainSourceFile(filePath, sourceText);
229
+ } catch (caughtError) {
230
+ this.logger?.err(`[domain-source-parser] ${messageFromCaughtUnknown(caughtError)}`);
231
+ throw caughtError;
232
+ }
233
+ }
234
+ static {
235
+ _initClass();
236
+ }
237
+ });
238
+ /** Default instance without diagnostics logging (tests and legacy imports). */ const domainSourceParserAdapter = new _DomainSourceParserAdapter();
239
+ //#endregion
240
+ export { _DomainSourceParserAdapter as DomainSourceParserAdapter, domainSourceParserAdapter };
@@ -0,0 +1,8 @@
1
+ import { ensureCnImport as ensureCnImport$1 } from "../domain/imports.domain.mjs";
2
+ import { parseDomainSourceFile } from "./ts-ast-translator.adapter.mjs";
3
+ //#region src/lib/arrange/infra/ensure-cn-import.adapter.ts
4
+ /** Parses source then applies domain cn import injection rules (public CLI-style entry). */ function ensureCnImport(sourceText, filePath, cnImportOverride) {
5
+ return ensureCnImport$1(parseDomainSourceFile(filePath, sourceText), cnImportOverride);
6
+ }
7
+ //#endregion
8
+ export { ensureCnImport };