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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/dist/bin.d.ts +3 -0
  2. package/dist/bin.d.ts.map +1 -0
  3. package/dist/{bin.mjs → bin.js} +1 -4
  4. package/dist/commands/arrange.d.ts +3 -0
  5. package/dist/commands/arrange.d.ts.map +1 -0
  6. package/dist/commands/arrange.js +129 -0
  7. package/dist/commands/mirror.d.ts +4 -0
  8. package/dist/commands/mirror.d.ts.map +1 -0
  9. package/dist/commands/mirror.js +75 -0
  10. package/dist/commands/tag.d.ts +3 -0
  11. package/dist/commands/tag.d.ts.map +1 -0
  12. package/dist/commands/tag.js +41 -0
  13. package/dist/lib/arrange/application/analyze.d.ts +17 -0
  14. package/dist/lib/arrange/application/analyze.d.ts.map +1 -0
  15. package/dist/lib/arrange/application/analyze.js +24 -0
  16. package/dist/lib/arrange/application/group-file-preview.d.ts +17 -0
  17. package/dist/lib/arrange/application/group-file-preview.d.ts.map +1 -0
  18. package/dist/lib/arrange/application/group-file-preview.js +46 -0
  19. package/dist/lib/arrange/application/group-file.d.ts +5 -0
  20. package/dist/lib/arrange/application/group-file.d.ts.map +1 -0
  21. package/dist/lib/arrange/application/group-file.js +40 -0
  22. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts +5 -0
  23. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts.map +1 -0
  24. package/dist/lib/arrange/application/ports/file-walker.port.d.ts +5 -0
  25. package/dist/lib/arrange/application/ports/file-walker.port.d.ts.map +1 -0
  26. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts +6 -0
  27. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts.map +1 -0
  28. package/dist/lib/arrange/application/requests/analyze-directory.request.js +4 -0
  29. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts +18 -0
  30. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts.map +1 -0
  31. package/dist/lib/arrange/application/requests/arrange-sync.request.js +15 -0
  32. package/dist/lib/arrange/application/run-target.d.ts +19 -0
  33. package/dist/lib/arrange/application/run-target.d.ts.map +1 -0
  34. package/dist/lib/arrange/application/run-target.js +85 -0
  35. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts +12 -0
  36. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts.map +1 -0
  37. package/dist/lib/arrange/domain/arrange-analyze.service.js +116 -0
  38. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts +53 -0
  39. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts.map +1 -0
  40. package/dist/lib/arrange/domain/arrange-grouping.service.js +106 -0
  41. package/dist/lib/arrange/domain/ast/ast-helpers.d.ts +28 -0
  42. package/dist/lib/arrange/domain/ast/ast-helpers.d.ts.map +1 -0
  43. package/dist/lib/arrange/domain/ast/ast-helpers.js +130 -0
  44. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts +179 -0
  45. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts.map +1 -0
  46. package/dist/lib/arrange/domain/ast/ast-node.model.js +210 -0
  47. package/dist/lib/arrange/domain/ast/collectors-cn.d.ts +7 -0
  48. package/dist/lib/arrange/domain/ast/collectors-cn.d.ts.map +1 -0
  49. package/dist/lib/arrange/domain/ast/collectors-cn.js +70 -0
  50. package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts +4 -0
  51. package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts.map +1 -0
  52. package/dist/lib/arrange/domain/ast/collectors-jsx.js +21 -0
  53. package/dist/lib/arrange/domain/ast/collectors-tv.d.ts +13 -0
  54. package/dist/lib/arrange/domain/ast/collectors-tv.d.ts.map +1 -0
  55. package/dist/lib/arrange/domain/ast/collectors-tv.js +302 -0
  56. package/dist/lib/arrange/domain/ast/targets.d.ts +8 -0
  57. package/dist/lib/arrange/domain/ast/targets.d.ts.map +1 -0
  58. package/dist/lib/arrange/domain/ast/targets.js +147 -0
  59. package/dist/lib/arrange/domain/constants.d.ts +68 -0
  60. package/dist/lib/arrange/domain/constants.d.ts.map +1 -0
  61. package/dist/lib/arrange/domain/constants.js +180 -0
  62. package/dist/lib/arrange/domain/errors.d.ts +14 -0
  63. package/dist/lib/arrange/domain/errors.d.ts.map +1 -0
  64. package/dist/lib/arrange/domain/errors.js +16 -0
  65. package/dist/lib/arrange/domain/grouping.d.ts +41 -0
  66. package/dist/lib/arrange/domain/grouping.d.ts.map +1 -0
  67. package/dist/lib/arrange/domain/grouping.js +307 -0
  68. package/dist/lib/arrange/domain/imports.d.ts +7 -0
  69. package/dist/lib/arrange/domain/imports.d.ts.map +1 -0
  70. package/dist/lib/arrange/domain/imports.js +80 -0
  71. package/dist/lib/arrange/domain/source-text-formatters.d.ts +16 -0
  72. package/dist/lib/arrange/domain/source-text-formatters.d.ts.map +1 -0
  73. package/dist/lib/arrange/domain/source-text-formatters.js +55 -0
  74. package/dist/lib/arrange/domain/tokenizer.d.ts +45 -0
  75. package/dist/lib/arrange/domain/tokenizer.d.ts.map +1 -0
  76. package/dist/lib/arrange/domain/tokenizer.js +466 -0
  77. package/dist/lib/arrange/domain/types.d.ts +112 -0
  78. package/dist/lib/arrange/domain/types.d.ts.map +1 -0
  79. package/dist/lib/arrange/domain/types.js +7 -0
  80. package/dist/lib/arrange/index.d.ts +45 -0
  81. package/dist/lib/arrange/index.d.ts.map +1 -0
  82. package/dist/lib/arrange/index.js +41 -0
  83. package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts +14 -0
  84. package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts.map +1 -0
  85. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts +11 -0
  86. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts.map +1 -0
  87. package/dist/lib/arrange/infra/domain-source-parser.adapter.js +19 -0
  88. package/dist/lib/arrange/infra/ensure-cn-import.d.ts +3 -0
  89. package/dist/lib/arrange/infra/ensure-cn-import.d.ts.map +1 -0
  90. package/dist/lib/arrange/infra/ensure-cn-import.js +6 -0
  91. package/dist/lib/arrange/infra/file-walker.adapter.d.ts +8 -0
  92. package/dist/lib/arrange/infra/file-walker.adapter.d.ts.map +1 -0
  93. package/dist/lib/arrange/infra/file-walker.adapter.js +17 -0
  94. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts +8 -0
  95. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts.map +1 -0
  96. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.js +25 -0
  97. package/dist/lib/arrange/infra/ts-ast-translator.d.ts +10 -0
  98. package/dist/lib/arrange/infra/ts-ast-translator.d.ts.map +1 -0
  99. package/dist/lib/arrange/infra/ts-ast-translator.js +363 -0
  100. package/dist/lib/arrange/presentation/formatters.d.ts +3 -0
  101. package/dist/lib/arrange/presentation/formatters.d.ts.map +1 -0
  102. package/dist/lib/arrange/presentation/formatters.js +2 -0
  103. package/dist/lib/arrange/presentation/report.d.ts +4 -0
  104. package/dist/lib/arrange/presentation/report.d.ts.map +1 -0
  105. package/dist/lib/arrange/presentation/report.js +37 -0
  106. package/dist/lib/config/domain/schema.d.ts +50 -0
  107. package/dist/lib/config/domain/schema.d.ts.map +1 -0
  108. package/dist/lib/config/domain/schema.js +43 -0
  109. package/dist/lib/config/index.d.ts +4 -0
  110. package/dist/lib/config/index.d.ts.map +1 -0
  111. package/dist/lib/config/index.js +2 -0
  112. package/dist/lib/config/infra/loader.d.ts +11 -0
  113. package/dist/lib/config/infra/loader.d.ts.map +1 -0
  114. package/dist/lib/config/infra/loader.js +90 -0
  115. package/dist/lib/core/application/architecture-boundaries.d.ts +19 -0
  116. package/dist/lib/core/application/architecture-boundaries.d.ts.map +1 -0
  117. package/dist/lib/core/application/architecture-boundaries.js +263 -0
  118. package/dist/lib/core/application/ports/cli-io.port.d.ts +27 -0
  119. package/dist/lib/core/application/ports/cli-io.port.d.ts.map +1 -0
  120. package/dist/lib/core/application/schema-parse.d.ts +8 -0
  121. package/dist/lib/core/application/schema-parse.d.ts.map +1 -0
  122. package/dist/lib/core/application/schema-parse.js +20 -0
  123. package/dist/lib/core/application/utils/caught-unknown-message.d.ts +6 -0
  124. package/dist/lib/core/application/utils/caught-unknown-message.d.ts.map +1 -0
  125. package/dist/lib/core/application/utils/caught-unknown-message.js +34 -0
  126. package/dist/lib/core/application/utils/verbose-diagnostics.d.ts +5 -0
  127. package/dist/lib/core/application/utils/verbose-diagnostics.d.ts.map +1 -0
  128. package/dist/lib/core/application/utils/verbose-diagnostics.js +7 -0
  129. package/dist/lib/core/domain/errors.d.ts +11 -0
  130. package/dist/lib/core/domain/errors.d.ts.map +1 -0
  131. package/dist/lib/core/domain/errors.js +9 -0
  132. package/dist/lib/core/domain/result.d.ts +15 -0
  133. package/dist/lib/core/domain/result.d.ts.map +1 -0
  134. package/dist/lib/core/domain/result.js +9 -0
  135. package/dist/lib/core/infra/container.d.ts +34 -0
  136. package/dist/lib/core/infra/container.d.ts.map +1 -0
  137. package/dist/lib/core/infra/container.js +65 -0
  138. package/dist/lib/core/infra/logging-decorator.d.ts +12 -0
  139. package/dist/lib/core/infra/logging-decorator.d.ts.map +1 -0
  140. package/dist/lib/core/infra/logging-decorator.js +75 -0
  141. package/dist/lib/core/presentation/cli-executor.d.ts +33 -0
  142. package/dist/lib/core/presentation/cli-executor.d.ts.map +1 -0
  143. package/dist/lib/core/presentation/cli-executor.js +73 -0
  144. package/dist/lib/core/presentation/create-command-handler.d.ts +20 -0
  145. package/dist/lib/core/presentation/create-command-handler.d.ts.map +1 -0
  146. package/dist/lib/core/presentation/create-command-handler.js +70 -0
  147. package/dist/lib/core/presentation/format-app-error.d.ts +6 -0
  148. package/dist/lib/core/presentation/format-app-error.d.ts.map +1 -0
  149. package/dist/lib/core/presentation/format-app-error.js +19 -0
  150. package/dist/lib/infra/caught-unknown-message.d.ts +2 -0
  151. package/dist/lib/infra/caught-unknown-message.d.ts.map +1 -0
  152. package/dist/lib/infra/caught-unknown-message.js +1 -0
  153. package/dist/lib/infra/config-reporter.d.ts +4 -0
  154. package/dist/lib/infra/config-reporter.d.ts.map +1 -0
  155. package/dist/lib/infra/config-reporter.js +9 -0
  156. package/dist/lib/infra/fs-contract.d.ts +2 -0
  157. package/dist/lib/infra/fs-contract.d.ts.map +1 -0
  158. package/dist/lib/infra/fs-contract.js +1 -0
  159. package/dist/lib/infra/node-io.d.ts +4 -0
  160. package/dist/lib/infra/node-io.d.ts.map +1 -0
  161. package/dist/lib/infra/node-io.js +27 -0
  162. package/dist/lib/infra/workspace/repo-root.d.ts +7 -0
  163. package/dist/lib/infra/workspace/repo-root.d.ts.map +1 -0
  164. package/dist/lib/infra/workspace/repo-root.js +23 -0
  165. package/dist/lib/mirror/application/engine.d.ts +10 -0
  166. package/dist/lib/mirror/application/engine.d.ts.map +1 -0
  167. package/dist/lib/mirror/application/engine.js +271 -0
  168. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts +6 -0
  169. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts.map +1 -0
  170. package/dist/lib/mirror/application/ports/file-system-service.port.js +1 -0
  171. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts +27 -0
  172. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts.map +1 -0
  173. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.js +1 -0
  174. package/dist/lib/mirror/application/ports/package-repository.port.d.ts +16 -0
  175. package/dist/lib/mirror/application/ports/package-repository.port.d.ts.map +1 -0
  176. package/dist/lib/mirror/application/ports/package-repository.port.js +1 -0
  177. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts +7 -0
  178. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts.map +1 -0
  179. package/dist/lib/mirror/application/ports/workspace-service.port.js +1 -0
  180. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts +10 -0
  181. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts.map +1 -0
  182. package/dist/lib/mirror/application/requests/mirror-sync.request.js +8 -0
  183. package/dist/lib/mirror/application/sync.d.ts +19 -0
  184. package/dist/lib/mirror/application/sync.d.ts.map +1 -0
  185. package/dist/lib/mirror/application/sync.js +168 -0
  186. package/dist/lib/mirror/domain/constants.d.ts +6 -0
  187. package/dist/lib/mirror/domain/constants.d.ts.map +1 -0
  188. package/dist/lib/mirror/domain/constants.js +5 -0
  189. package/dist/lib/mirror/domain/errors.d.ts +10 -0
  190. package/dist/lib/mirror/domain/errors.d.ts.map +1 -0
  191. package/dist/lib/mirror/domain/errors.js +12 -0
  192. package/dist/lib/mirror/domain/types.d.ts +65 -0
  193. package/dist/lib/mirror/domain/types.d.ts.map +1 -0
  194. package/dist/lib/mirror/domain/types.js +1 -0
  195. package/dist/lib/mirror/index.d.ts +6 -0
  196. package/dist/lib/mirror/index.d.ts.map +1 -0
  197. package/dist/lib/mirror/index.js +1 -0
  198. package/dist/lib/mirror/infra/dirent-list.d.ts +9 -0
  199. package/dist/lib/mirror/infra/dirent-list.d.ts.map +1 -0
  200. package/dist/lib/mirror/infra/dirent-list.js +13 -0
  201. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts +7 -0
  202. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts.map +1 -0
  203. package/dist/lib/mirror/infra/file-system-service.adapter.js +47 -0
  204. package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts +14 -0
  205. package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts.map +1 -0
  206. package/dist/lib/mirror/infra/mirror-sync-cli-options.js +1 -0
  207. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts +3 -0
  208. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts.map +1 -0
  209. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.js +13 -0
  210. package/dist/lib/mirror/infra/package-filter.d.ts +8 -0
  211. package/dist/lib/mirror/infra/package-filter.d.ts.map +1 -0
  212. package/dist/lib/mirror/infra/package-filter.js +33 -0
  213. package/dist/lib/mirror/infra/package-repository.adapter.d.ts +17 -0
  214. package/dist/lib/mirror/infra/package-repository.adapter.d.ts.map +1 -0
  215. package/dist/lib/mirror/infra/package-repository.adapter.js +17 -0
  216. package/dist/lib/mirror/infra/path-normalizer.d.ts +2 -0
  217. package/dist/lib/mirror/infra/path-normalizer.d.ts.map +1 -0
  218. package/dist/lib/mirror/infra/path-normalizer.js +4 -0
  219. package/dist/lib/mirror/infra/update-pkg.d.ts +19 -0
  220. package/dist/lib/mirror/infra/update-pkg.d.ts.map +1 -0
  221. package/dist/lib/mirror/infra/update-pkg.js +156 -0
  222. package/dist/lib/mirror/infra/workspace-packages.d.ts +26 -0
  223. package/dist/lib/mirror/infra/workspace-packages.d.ts.map +1 -0
  224. package/dist/lib/mirror/infra/workspace-packages.js +170 -0
  225. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts +8 -0
  226. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts.map +1 -0
  227. package/dist/lib/mirror/infra/workspace-service.adapter.js +10 -0
  228. package/dist/lib/mirror/presentation/reporter.d.ts +25 -0
  229. package/dist/lib/mirror/presentation/reporter.d.ts.map +1 -0
  230. package/dist/lib/mirror/presentation/reporter.js +140 -0
  231. package/dist/lib/shared/source-code/domain/text-edit.d.ts +14 -0
  232. package/dist/lib/shared/source-code/domain/text-edit.d.ts.map +1 -0
  233. package/dist/lib/shared/source-code/domain/text-edit.js +30 -0
  234. package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts +4 -0
  235. package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts.map +1 -0
  236. package/dist/lib/shared/source-code/infra/tsx-file-walk.js +37 -0
  237. package/dist/lib/tag/application/engine.d.ts +23 -0
  238. package/dist/lib/tag/application/engine.d.ts.map +1 -0
  239. package/dist/lib/tag/application/engine.js +357 -0
  240. package/dist/lib/tag/application/ports/target-resolver.port.d.ts +6 -0
  241. package/dist/lib/tag/application/ports/target-resolver.port.d.ts.map +1 -0
  242. package/dist/lib/tag/application/ports/target-resolver.port.js +1 -0
  243. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts +6 -0
  244. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts.map +1 -0
  245. package/dist/lib/tag/application/ports/typescript-tree-walk.port.js +1 -0
  246. package/dist/lib/tag/application/requests/tag-sync.request.d.ts +10 -0
  247. package/dist/lib/tag/application/requests/tag-sync.request.d.ts.map +1 -0
  248. package/dist/lib/tag/application/requests/tag-sync.request.js +8 -0
  249. package/dist/lib/tag/domain/types.d.ts +56 -0
  250. package/dist/lib/tag/domain/types.d.ts.map +1 -0
  251. package/dist/lib/tag/domain/types.js +1 -0
  252. package/dist/lib/tag/index.d.ts +14 -0
  253. package/dist/lib/tag/index.d.ts.map +1 -0
  254. package/dist/lib/tag/index.js +10 -0
  255. package/dist/lib/tag/infra/tag-sync-cli-options.d.ts +14 -0
  256. package/dist/lib/tag/infra/tag-sync-cli-options.d.ts.map +1 -0
  257. package/dist/lib/tag/infra/tag-sync-cli-options.js +1 -0
  258. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts +3 -0
  259. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts.map +1 -0
  260. package/dist/lib/tag/infra/tag-target-resolver.adapter.js +4 -0
  261. package/dist/lib/tag/infra/target-resolver.d.ts +4 -0
  262. package/dist/lib/tag/infra/target-resolver.d.ts.map +1 -0
  263. package/dist/lib/tag/infra/target-resolver.js +200 -0
  264. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts +3 -0
  265. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts.map +1 -0
  266. package/dist/lib/tag/infra/typescript-tree-walk.adapter.js +4 -0
  267. package/dist/lib/tag/presentation/colors.d.ts +8 -0
  268. package/dist/lib/tag/presentation/colors.d.ts.map +1 -0
  269. package/dist/lib/tag/presentation/colors.js +9 -0
  270. package/dist/lib/tag/presentation/tag-presenter.d.ts +20 -0
  271. package/dist/lib/tag/presentation/tag-presenter.d.ts.map +1 -0
  272. package/dist/lib/tag/presentation/tag-presenter.js +92 -0
  273. package/dist/program.d.ts +4 -0
  274. package/dist/program.d.ts.map +1 -0
  275. package/dist/program.js +40 -0
  276. package/package.json +8 -5
  277. package/dist/analyze-DvtJ3j9m.mjs +0 -92
  278. package/dist/arrange-Bbh62DrU.mjs +0 -107
  279. package/dist/arrange-BqP2DI3w.mjs +0 -8
  280. package/dist/ast-helpers-MDRYuIAk.mjs +0 -115
  281. package/dist/caught-unknown-message-CRhkDWO7.mjs +0 -20
  282. package/dist/collectors-cn-BS8TTQ8O.mjs +0 -61
  283. package/dist/collectors-jsx-D9tL2ZPM.mjs +0 -20
  284. package/dist/collectors-tv-D2PXZaRt.mjs +0 -170
  285. package/dist/colors-BjdkCfGK.mjs +0 -12
  286. package/dist/commands/arrange.mjs +0 -2
  287. package/dist/commands/mirror.mjs +0 -2
  288. package/dist/commands/mirror.test.mjs +0 -48
  289. package/dist/commands/tag.mjs +0 -2
  290. package/dist/config-DVia_f9a.mjs +0 -3
  291. package/dist/config-reporter-SCcWDZc1.mjs +0 -10
  292. package/dist/constants-AtPhF-Ct.mjs +0 -169
  293. package/dist/constants-Bq5wdyLC.mjs +0 -8
  294. package/dist/dirent-list-BSDeRG5i.mjs +0 -14
  295. package/dist/engine-CcWEHSCq.mjs +0 -287
  296. package/dist/engine-DRTdkc5u.mjs +0 -236
  297. package/dist/errors-CFH4w6ic.mjs +0 -15
  298. package/dist/errors-CpU1ogfA.mjs +0 -19
  299. package/dist/formatters-DGE8jJ53.mjs +0 -52
  300. package/dist/group-file-ClW7XdD6.mjs +0 -113
  301. package/dist/grouping-c1grpCQT.mjs +0 -235
  302. package/dist/imports-DSVq1xhB.mjs +0 -54
  303. package/dist/lib/arrange/application/analyze.mjs +0 -2
  304. package/dist/lib/arrange/application/analyze.test.mjs +0 -171
  305. package/dist/lib/arrange/application/group-file.mjs +0 -2
  306. package/dist/lib/arrange/application/group-file.test.mjs +0 -273
  307. package/dist/lib/arrange/application/run-target.mjs +0 -2
  308. package/dist/lib/arrange/application/run-target.test.mjs +0 -97
  309. package/dist/lib/arrange/domain/ast/ast-helpers.mjs +0 -2
  310. package/dist/lib/arrange/domain/ast/ast-helpers.test.mjs +0 -148
  311. package/dist/lib/arrange/domain/ast/collectors-cn.mjs +0 -2
  312. package/dist/lib/arrange/domain/ast/collectors-cn.test.mjs +0 -58
  313. package/dist/lib/arrange/domain/ast/collectors-jsx.mjs +0 -2
  314. package/dist/lib/arrange/domain/ast/collectors-jsx.test.mjs +0 -20
  315. package/dist/lib/arrange/domain/ast/collectors-tv.mjs +0 -2
  316. package/dist/lib/arrange/domain/ast/collectors-tv.test.mjs +0 -145
  317. package/dist/lib/arrange/domain/ast/targets.mjs +0 -2
  318. package/dist/lib/arrange/domain/ast/targets.test.mjs +0 -50
  319. package/dist/lib/arrange/domain/constants.mjs +0 -2
  320. package/dist/lib/arrange/domain/errors.mjs +0 -2
  321. package/dist/lib/arrange/domain/grouping.mjs +0 -2
  322. package/dist/lib/arrange/domain/grouping.test.mjs +0 -186
  323. package/dist/lib/arrange/domain/imports.mjs +0 -2
  324. package/dist/lib/arrange/domain/imports.test.mjs +0 -48
  325. package/dist/lib/arrange/domain/tokenizer.mjs +0 -2
  326. package/dist/lib/arrange/domain/tokenizer.test.mjs +0 -165
  327. package/dist/lib/arrange/index.mjs +0 -16
  328. package/dist/lib/arrange/infra/walk.mjs +0 -2
  329. package/dist/lib/arrange/infra/walk.test.mjs +0 -50
  330. package/dist/lib/arrange/presentation/formatters.mjs +0 -2
  331. package/dist/lib/arrange/presentation/formatters.test.mjs +0 -73
  332. package/dist/lib/arrange/presentation/report.mjs +0 -2
  333. package/dist/lib/config/domain/schema.mjs +0 -2
  334. package/dist/lib/config/index.mjs +0 -4
  335. package/dist/lib/config/infra/loader.mjs +0 -2
  336. package/dist/lib/config/infra/loader.test.mjs +0 -116
  337. package/dist/lib/infra/caught-unknown-message.mjs +0 -2
  338. package/dist/lib/infra/config-reporter.mjs +0 -2
  339. package/dist/lib/infra/node-io.mjs +0 -2
  340. package/dist/lib/infra/workspace/repo-root.mjs +0 -2
  341. package/dist/lib/infra/workspace/repo-root.test.mjs +0 -45
  342. package/dist/lib/mirror/application/engine.mjs +0 -2
  343. package/dist/lib/mirror/application/sync.mjs +0 -2
  344. package/dist/lib/mirror/application/sync.test.mjs +0 -482
  345. package/dist/lib/mirror/domain/constants.mjs +0 -2
  346. package/dist/lib/mirror/domain/errors.mjs +0 -2
  347. package/dist/lib/mirror/index.mjs +0 -3
  348. package/dist/lib/mirror/infra/dirent-list.mjs +0 -2
  349. package/dist/lib/mirror/infra/dirent-list.test.mjs +0 -18
  350. package/dist/lib/mirror/infra/package-filter.mjs +0 -2
  351. package/dist/lib/mirror/infra/package-filter.test.mjs +0 -32
  352. package/dist/lib/mirror/infra/path-normalizer.mjs +0 -2
  353. package/dist/lib/mirror/infra/update-pkg.mjs +0 -2
  354. package/dist/lib/mirror/infra/workspace-packages.mjs +0 -2
  355. package/dist/lib/mirror/infra/workspace-packages.test.mjs +0 -167
  356. package/dist/lib/mirror/presentation/reporter.mjs +0 -2
  357. package/dist/lib/tag/application/engine.mjs +0 -2
  358. package/dist/lib/tag/application/engine.test.mjs +0 -159
  359. package/dist/lib/tag/index.mjs +0 -5
  360. package/dist/lib/tag/infra/target-resolver.mjs +0 -2
  361. package/dist/lib/tag/presentation/colors.mjs +0 -2
  362. package/dist/lib/tag/presentation/tag-presenter.mjs +0 -2
  363. package/dist/lib/tag/presentation/tag-presenter.test.mjs +0 -29
  364. package/dist/loader-DpN-zl5g.mjs +0 -78
  365. package/dist/mirror-CbGiLXKT.mjs +0 -2
  366. package/dist/mirror-DqJE3ejL.mjs +0 -66
  367. package/dist/node-io-DFRbHO6m.mjs +0 -30
  368. package/dist/package-filter-C_8ryqvz.mjs +0 -26
  369. package/dist/path-normalizer-D4ceBO3l.mjs +0 -7
  370. package/dist/program-DR-H4tH3.mjs +0 -34
  371. package/dist/program.mjs +0 -2
  372. package/dist/repo-root-HmtIEm6J.mjs +0 -22
  373. package/dist/report-DYxvw34T.mjs +0 -24
  374. package/dist/reporter-CwIe_tAM.mjs +0 -108
  375. package/dist/run-target-CJWrqNT4.mjs +0 -65
  376. package/dist/schema-Or8RAARd.mjs +0 -25
  377. package/dist/sync-e1Sp-shi.mjs +0 -157
  378. package/dist/tag-Cd9JujU5.mjs +0 -2
  379. package/dist/tag-hEKVZ_-7.mjs +0 -58
  380. package/dist/tag-presenter-Cs66UBsH.mjs +0 -63
  381. package/dist/target-resolver-CR3FXMTy.mjs +0 -170
  382. package/dist/targets-pCTslnFh.mjs +0 -106
  383. package/dist/tokenizer-CeZx73Zu.mjs +0 -216
  384. package/dist/update-pkg-CnGfjWBy.mjs +0 -37
  385. package/dist/walk-DjgQn66n.mjs +0 -33
  386. package/dist/workspace-packages-K2NYTHJq.mjs +0 -159
  387. /package/dist/lib/arrange/{domain/types.mjs → application/ports/domain-source-parser.port.js} +0 -0
  388. /package/dist/lib/{infra/fs-contract.mjs → arrange/application/ports/file-walker.port.js} +0 -0
  389. /package/dist/lib/{mirror/domain/types.mjs → arrange/infra/arrange-sync-cli-options.js} +0 -0
  390. /package/dist/lib/{tag/domain/types.mjs → core/application/ports/cli-io.port.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../../src/lib/arrange/presentation/report.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,wBAAgB,kBAAkB,CAChC,wBAAwB,EAAE,MAAM,EAChC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,SAAS,GAChB,IAAI,CAkDN"}
@@ -0,0 +1,37 @@
1
+ import path from "node:path";
2
+ import { LONG_STRING_TOKEN_THRESHOLD, MAX_REPORT_LINES } from "#lib/arrange/domain/constants";
3
+ export function printAnalyzeReport(analyzeRootDirectoryPath, analyzeReport, logger) {
4
+ const { out } = logger;
5
+ out(`Path: ${path.resolve(analyzeRootDirectoryPath)}`);
6
+ out(`.ts/.tsx files: ${analyzeReport.files}`);
7
+ out(`cn(...) call sites: ${analyzeReport.cnCallExpressions}`);
8
+ out(`tv(...) call sites: ${analyzeReport.tvCallExpressions}`);
9
+ out(`\nLong cn(...) string literals (≥${LONG_STRING_TOKEN_THRESHOLD} tokens — consider splitting arguments): ${analyzeReport.longCnStringLiterals.length}`);
10
+ for (const findingEntry of analyzeReport.longCnStringLiterals.slice(0, MAX_REPORT_LINES)) {
11
+ out(` ${findingEntry.file}:${findingEntry.line} (${findingEntry.tokenCount} tokens) ${findingEntry.preview}`);
12
+ }
13
+ if (analyzeReport.longCnStringLiterals.length > MAX_REPORT_LINES) {
14
+ out(` … and ${analyzeReport.longCnStringLiterals.length - MAX_REPORT_LINES} more`);
15
+ }
16
+ out(`\nLong tv({...}) string literals in base/variants/… (≥${LONG_STRING_TOKEN_THRESHOLD} tokens): ${analyzeReport.longTvStringLiterals.length}`);
17
+ for (const findingEntry of analyzeReport.longTvStringLiterals.slice(0, MAX_REPORT_LINES)) {
18
+ out(` ${findingEntry.file}:${findingEntry.line} (${findingEntry.tokenCount} tokens) ${findingEntry.preview}`);
19
+ }
20
+ if (analyzeReport.longTvStringLiterals.length > MAX_REPORT_LINES) {
21
+ out(` … and ${analyzeReport.longTvStringLiterals.length - MAX_REPORT_LINES} more`);
22
+ }
23
+ out(`\nJSX className="..." or className={'...'} (static strings, ≥${LONG_STRING_TOKEN_THRESHOLD} tokens): ${analyzeReport.longJsxClassNameLiterals.length}`);
24
+ for (const findingEntry of analyzeReport.longJsxClassNameLiterals.slice(0, MAX_REPORT_LINES)) {
25
+ out(` ${findingEntry.file}:${findingEntry.line} (${findingEntry.tokenCount} tokens) ${findingEntry.preview}`);
26
+ }
27
+ if (analyzeReport.longJsxClassNameLiterals.length > MAX_REPORT_LINES) {
28
+ out(` … and ${analyzeReport.longJsxClassNameLiterals.length - MAX_REPORT_LINES} more`);
29
+ }
30
+ out(`\ncn(...) nested inside tv({...}) (prefer a string or array — preview/apply can rewrite): ${analyzeReport.cnInsideTvCalls.length}`);
31
+ for (const findingEntry of analyzeReport.cnInsideTvCalls.slice(0, MAX_REPORT_LINES)) {
32
+ out(` ${findingEntry.file}:${findingEntry.line} (${findingEntry.argCount} args) ${findingEntry.preview}`);
33
+ }
34
+ if (analyzeReport.cnInsideTvCalls.length > MAX_REPORT_LINES) {
35
+ out(` … and ${analyzeReport.cnInsideTvCalls.length - MAX_REPORT_LINES} more`);
36
+ }
37
+ }
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ export type CodefastAfterWriteHook = (ctx: {
3
+ files: string[];
4
+ }) => void | Promise<void>;
5
+ export declare const hookSchema: z.ZodCustom<CodefastAfterWriteHook, CodefastAfterWriteHook>;
6
+ export declare const mirrorConfigSchema: z.ZodObject<{
7
+ skipPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ pathTransformations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
9
+ removePrefix: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strict>>>;
11
+ customExports: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
12
+ cssExports: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
13
+ enabled: z.ZodOptional<z.ZodBoolean>;
14
+ customExports: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
15
+ forceExportFiles: z.ZodOptional<z.ZodBoolean>;
16
+ }, z.core.$strict>]>>>;
17
+ }, z.core.$strict>;
18
+ export declare const codefastTagConfigSchema: z.ZodObject<{
19
+ skipPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
20
+ onAfterWrite: z.ZodOptional<z.ZodCustom<CodefastAfterWriteHook, CodefastAfterWriteHook>>;
21
+ }, z.core.$strict>;
22
+ export declare const codefastArrangeConfigSchema: z.ZodObject<{
23
+ onAfterWrite: z.ZodOptional<z.ZodCustom<CodefastAfterWriteHook, CodefastAfterWriteHook>>;
24
+ }, z.core.$strict>;
25
+ export declare const codefastConfigSchema: z.ZodObject<{
26
+ mirror: z.ZodOptional<z.ZodObject<{
27
+ skipPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
28
+ pathTransformations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
29
+ removePrefix: z.ZodOptional<z.ZodString>;
30
+ }, z.core.$strict>>>;
31
+ customExports: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
32
+ cssExports: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
33
+ enabled: z.ZodOptional<z.ZodBoolean>;
34
+ customExports: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
35
+ forceExportFiles: z.ZodOptional<z.ZodBoolean>;
36
+ }, z.core.$strict>]>>>;
37
+ }, z.core.$strict>>;
38
+ tag: z.ZodOptional<z.ZodObject<{
39
+ skipPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
40
+ onAfterWrite: z.ZodOptional<z.ZodCustom<CodefastAfterWriteHook, CodefastAfterWriteHook>>;
41
+ }, z.core.$strict>>;
42
+ arrange: z.ZodOptional<z.ZodObject<{
43
+ onAfterWrite: z.ZodOptional<z.ZodCustom<CodefastAfterWriteHook, CodefastAfterWriteHook>>;
44
+ }, z.core.$strict>>;
45
+ }, z.core.$strict>;
46
+ export type MirrorConfig = z.infer<typeof mirrorConfigSchema>;
47
+ export type CodefastTagConfig = z.infer<typeof codefastTagConfigSchema>;
48
+ export type CodefastArrangeConfig = z.infer<typeof codefastArrangeConfigSchema>;
49
+ export type CodefastConfig = z.infer<typeof codefastConfigSchema>;
50
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/lib/config/domain/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAExF,eAAO,MAAM,UAAU,6DAErB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;kBAuBpB,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;kBAKzB,CAAC;AAEZ,eAAO,MAAM,2BAA2B;;kBAI7B,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;kBAMtB,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { z } from "zod";
2
+ export const hookSchema = z.custom((value) => typeof value === "function", {
3
+ message: "Expected a function",
4
+ });
5
+ export const mirrorConfigSchema = z
6
+ .object({
7
+ skipPackages: z.array(z.string()).optional(),
8
+ pathTransformations: z
9
+ .record(z.string(), z.object({ removePrefix: z.string().optional() }).strict())
10
+ .optional(),
11
+ customExports: z.record(z.string(), z.record(z.string(), z.string())).optional(),
12
+ cssExports: z
13
+ .record(z.string(), z.union([
14
+ z.boolean(),
15
+ z
16
+ .object({
17
+ enabled: z.boolean().optional(),
18
+ customExports: z.record(z.string(), z.string()).optional(),
19
+ forceExportFiles: z.boolean().optional(),
20
+ })
21
+ .strict(),
22
+ ]))
23
+ .optional(),
24
+ })
25
+ .strict();
26
+ export const codefastTagConfigSchema = z
27
+ .object({
28
+ skipPackages: z.array(z.string()).optional(),
29
+ onAfterWrite: hookSchema.optional(),
30
+ })
31
+ .strict();
32
+ export const codefastArrangeConfigSchema = z
33
+ .object({
34
+ onAfterWrite: hookSchema.optional(),
35
+ })
36
+ .strict();
37
+ export const codefastConfigSchema = z
38
+ .object({
39
+ mirror: mirrorConfigSchema.optional(),
40
+ tag: codefastTagConfigSchema.optional(),
41
+ arrange: codefastArrangeConfigSchema.optional(),
42
+ })
43
+ .strict();
@@ -0,0 +1,4 @@
1
+ export { loadConfig, resetConfigLoaderCacheForTests } from "#lib/config/infra/loader";
2
+ export { codefastArrangeConfigSchema, codefastConfigSchema, codefastTagConfigSchema, hookSchema, mirrorConfigSchema, } from "#lib/config/domain/schema";
3
+ export type { CodefastAfterWriteHook, CodefastArrangeConfig, CodefastConfig, CodefastTagConfig, MirrorConfig, } from "#lib/config/domain/schema";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,uBAAuB,EACvB,UAAU,EACV,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { loadConfig, resetConfigLoaderCacheForTests } from "#lib/config/infra/loader";
2
+ export { codefastArrangeConfigSchema, codefastConfigSchema, codefastTagConfigSchema, hookSchema, mirrorConfigSchema, } from "#lib/config/domain/schema";
@@ -0,0 +1,11 @@
1
+ import type { CliFs } from "#lib/infra/fs-contract";
2
+ import type { CodefastConfig } from "#lib/config/domain/schema";
3
+ type LoadConfigResult = {
4
+ config: CodefastConfig;
5
+ warnings: string[];
6
+ configPath?: string;
7
+ };
8
+ export declare function loadConfig(fs: CliFs, startDir?: string): Promise<LoadConfigResult>;
9
+ export declare function resetConfigLoaderCacheForTests(): void;
10
+ export {};
11
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/lib/config/infra/loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAShE,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAkFF,wBAAsB,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,SAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAM/F;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
@@ -0,0 +1,90 @@
1
+ import path from "node:path";
2
+ import process from "node:process";
3
+ import jiti from "jiti";
4
+ import { ZodError } from "zod";
5
+ import { codefastConfigSchema } from "#lib/config/domain/schema";
6
+ const CONFIG_JS_PRIORITY = [
7
+ "codefast.config.mjs",
8
+ "codefast.config.js",
9
+ "codefast.config.cjs",
10
+ ];
11
+ const CONFIG_JSON = "codefast.config.json";
12
+ const cachedLoads = new Map();
13
+ function formatZodError(error, filePath) {
14
+ const formatted = error.issues
15
+ .map((issue) => {
16
+ const pathLabel = issue.path.length > 0 ? issue.path.join(".") : "<root>";
17
+ return ` - ${pathLabel}: ${issue.message}`;
18
+ })
19
+ .join("\n");
20
+ return `Invalid config schema in ${path.basename(filePath)}:\n${formatted}`;
21
+ }
22
+ function parseLoadedConfig(raw, filePath) {
23
+ try {
24
+ return codefastConfigSchema.parse(raw);
25
+ }
26
+ catch (caughtError) {
27
+ if (caughtError instanceof ZodError) {
28
+ throw new Error(formatZodError(caughtError, filePath));
29
+ }
30
+ throw caughtError;
31
+ }
32
+ }
33
+ function listConfigCandidates(startDir, fs) {
34
+ const candidates = [];
35
+ let current = path.resolve(startDir);
36
+ while (true) {
37
+ for (const name of CONFIG_JS_PRIORITY) {
38
+ const candidate = path.join(current, name);
39
+ if (fs.existsSync(candidate)) {
40
+ candidates.push(candidate);
41
+ }
42
+ }
43
+ const jsonCandidate = path.join(current, CONFIG_JSON);
44
+ if (fs.existsSync(jsonCandidate)) {
45
+ candidates.push(jsonCandidate);
46
+ }
47
+ const parent = path.dirname(current);
48
+ if (parent === current) {
49
+ break;
50
+ }
51
+ current = parent;
52
+ }
53
+ return candidates;
54
+ }
55
+ async function readConfigFromPath(filePath, fs) {
56
+ const ext = path.extname(filePath);
57
+ if (ext === ".json") {
58
+ const content = await fs.readFile(filePath, "utf8");
59
+ return parseLoadedConfig(JSON.parse(content), filePath);
60
+ }
61
+ const loadWithJiti = jiti(process.cwd(), {
62
+ interopDefault: true,
63
+ moduleCache: false,
64
+ });
65
+ const moduleConfig = loadWithJiti(filePath);
66
+ const unwrappedConfig = typeof moduleConfig === "object" && moduleConfig !== null && "default" in moduleConfig
67
+ ? moduleConfig.default
68
+ : moduleConfig;
69
+ return parseLoadedConfig(unwrappedConfig, filePath);
70
+ }
71
+ async function loadOnce(fs, startDir) {
72
+ const warnings = [];
73
+ const configPaths = listConfigCandidates(startDir, fs);
74
+ if (configPaths.length === 0) {
75
+ return { config: {}, warnings };
76
+ }
77
+ const configPath = configPaths[0];
78
+ const config = await readConfigFromPath(configPath, fs);
79
+ return { config, warnings, configPath };
80
+ }
81
+ export async function loadConfig(fs, startDir = process.cwd()) {
82
+ const cacheKey = path.resolve(startDir);
83
+ if (!cachedLoads.has(cacheKey)) {
84
+ cachedLoads.set(cacheKey, loadOnce(fs, cacheKey));
85
+ }
86
+ return cachedLoads.get(cacheKey);
87
+ }
88
+ export function resetConfigLoaderCacheForTests() {
89
+ cachedLoads.clear();
90
+ }
@@ -0,0 +1,19 @@
1
+ export type LibSourceLocation = {
2
+ readonly context: string;
3
+ readonly layer: string;
4
+ };
5
+ /**
6
+ * Extract `#lib/...` and relative import specifiers from TypeScript source (static `from` / `import("...")` only).
7
+ */
8
+ export declare function extractImportSpecifiers(sourceText: string): string[];
9
+ export declare function parseLibSourceLocation(absoluteFilePath: string): LibSourceLocation | null;
10
+ export declare function isArchitectureExcludedSourceFile(absoluteFilePath: string): boolean;
11
+ /**
12
+ * Returns human-readable violations for a single file's imports (for unit tests and tooling).
13
+ */
14
+ export declare function violationsForFileContent(absoluteFilePath: string, loc: LibSourceLocation, sourceText: string): string[];
15
+ /**
16
+ * Scans `packages/cli/src/lib` for explicit-architecture boundary violations (non-test sources only).
17
+ */
18
+ export declare function scanCliPackageArchitectureViolations(cliPackageRoot: string): string[];
19
+ //# sourceMappingURL=architecture-boundaries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architecture-boundaries.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/application/architecture-boundaries.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBpE;AAYD,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CA8BzF;AAED,wBAAgB,gCAAgC,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAMlF;AAyJD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,gBAAgB,EAAE,MAAM,EACxB,GAAG,EAAE,iBAAiB,EACtB,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAgBV;AAuBD;;GAEG;AACH,wBAAgB,oCAAoC,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAYrF"}
@@ -0,0 +1,263 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ /** Product bounded contexts: no direct cross-imports between these (domain + application rules). */
4
+ const PRODUCT_BOUNDED_CONTEXTS = new Set(["arrange", "mirror", "tag"]);
5
+ const SHARED_SOURCE_CODE_CONTEXT = "shared-source-code";
6
+ const LAYERS = new Set(["domain", "application", "infra", "presentation"]);
7
+ function sharedSourceCodeLayerFromSpecifier(segments) {
8
+ if (segments.length < 3 || segments[0] !== "shared" || segments[1] !== "source-code") {
9
+ return null;
10
+ }
11
+ return segments[2];
12
+ }
13
+ /**
14
+ * Extract `#lib/...` and relative import specifiers from TypeScript source (static `from` / `import("...")` only).
15
+ */
16
+ export function extractImportSpecifiers(sourceText) {
17
+ const specifiers = [];
18
+ const fromPattern = /\bfrom\s+["']([^"']+)["']/g;
19
+ let fromMatch;
20
+ while ((fromMatch = fromPattern.exec(sourceText)) !== null) {
21
+ specifiers.push(fromMatch[1]);
22
+ }
23
+ const importOnlyPattern = /^\s*import\s+["']([^"']+)["']\s*;/gm;
24
+ let importOnlyMatch;
25
+ while ((importOnlyMatch = importOnlyPattern.exec(sourceText)) !== null) {
26
+ specifiers.push(importOnlyMatch[1]);
27
+ }
28
+ const importCallPattern = /\bimport\s*\(\s*["']([^"']+)["']\s*\)/g;
29
+ let importCallMatch;
30
+ while ((importCallMatch = importCallPattern.exec(sourceText)) !== null) {
31
+ specifiers.push(importCallMatch[1]);
32
+ }
33
+ return specifiers;
34
+ }
35
+ function pathUnderCliSrcLib(absolutePath) {
36
+ const normalized = path.normalize(absolutePath);
37
+ const marker = `${path.sep}src${path.sep}lib${path.sep}`;
38
+ const index = normalized.lastIndexOf(marker);
39
+ if (index === -1) {
40
+ return null;
41
+ }
42
+ return normalized.slice(index + marker.length);
43
+ }
44
+ export function parseLibSourceLocation(absoluteFilePath) {
45
+ const tail = pathUnderCliSrcLib(absoluteFilePath);
46
+ if (tail === null) {
47
+ return null;
48
+ }
49
+ const parts = tail.split(path.sep).filter(Boolean);
50
+ if (parts.length < 2) {
51
+ return null;
52
+ }
53
+ if (parts[0] === "shared" && parts[1] === "source-code" && parts.length >= 3) {
54
+ const layer = parts[2];
55
+ if (!LAYERS.has(layer)) {
56
+ return null;
57
+ }
58
+ const rest = parts.slice(3);
59
+ if (layer === "domain" && rest[0] === "__tests__") {
60
+ return { context: SHARED_SOURCE_CODE_CONTEXT, layer: "domain" };
61
+ }
62
+ return { context: SHARED_SOURCE_CODE_CONTEXT, layer };
63
+ }
64
+ const [context, layer, ...rest] = parts;
65
+ if (!LAYERS.has(layer)) {
66
+ return null;
67
+ }
68
+ if (layer === "domain" && rest[0] === "__tests__") {
69
+ return { context, layer };
70
+ }
71
+ return { context, layer };
72
+ }
73
+ export function isArchitectureExcludedSourceFile(absoluteFilePath) {
74
+ const base = path.basename(absoluteFilePath);
75
+ if (base.endsWith(".test.ts") || base.endsWith(".integration.test.ts")) {
76
+ return true;
77
+ }
78
+ return absoluteFilePath.split(path.sep).includes("__tests__");
79
+ }
80
+ function resolveRelativeSpecifier(fromAbsoluteFile, specifier) {
81
+ if (!specifier.startsWith(".")) {
82
+ return null;
83
+ }
84
+ const dir = path.dirname(fromAbsoluteFile);
85
+ const resolved = path.normalize(path.join(dir, specifier));
86
+ return resolved;
87
+ }
88
+ function libTailAfterResolution(absoluteResolved) {
89
+ const tail = pathUnderCliSrcLib(absoluteResolved);
90
+ if (tail === null) {
91
+ return null;
92
+ }
93
+ return tail.split(path.sep).filter(Boolean);
94
+ }
95
+ function violationDomainLayer(loc, specifier, fromAbsoluteFile) {
96
+ if (specifier.startsWith("#lib/")) {
97
+ const segments = specifier.slice("#lib/".length).split("/").filter(Boolean);
98
+ if (segments.length === 0) {
99
+ return null;
100
+ }
101
+ if (segments[0] === "infra") {
102
+ return `${fromAbsoluteFile}: domain must not import ${specifier}`;
103
+ }
104
+ const sharedLayerImported = sharedSourceCodeLayerFromSpecifier(segments);
105
+ if (sharedLayerImported !== null && sharedLayerImported !== "domain") {
106
+ return `${fromAbsoluteFile}: domain must not import ${specifier}`;
107
+ }
108
+ if (segments[0] === loc.context && segments.length >= 2) {
109
+ const importLayer = segments[1];
110
+ if (importLayer === "application" ||
111
+ importLayer === "infra" ||
112
+ importLayer === "presentation") {
113
+ return `${fromAbsoluteFile}: domain must not import ${specifier}`;
114
+ }
115
+ }
116
+ if (segments.length >= 2 &&
117
+ segments[1] === "domain" &&
118
+ PRODUCT_BOUNDED_CONTEXTS.has(segments[0]) &&
119
+ segments[0] !== loc.context) {
120
+ return `${fromAbsoluteFile}: domain (${loc.context}) must not import other bounded context domain ${specifier}`;
121
+ }
122
+ if (loc.context === "core" &&
123
+ segments.length >= 2 &&
124
+ segments[1] === "domain" &&
125
+ PRODUCT_BOUNDED_CONTEXTS.has(segments[0])) {
126
+ return `${fromAbsoluteFile}: core/domain must not import bounded context domain ${specifier}`;
127
+ }
128
+ if (loc.context === "config" &&
129
+ segments.length >= 2 &&
130
+ segments[1] === "domain" &&
131
+ PRODUCT_BOUNDED_CONTEXTS.has(segments[0])) {
132
+ return `${fromAbsoluteFile}: config/domain must not import bounded context domain ${specifier}`;
133
+ }
134
+ if (loc.context === SHARED_SOURCE_CODE_CONTEXT && PRODUCT_BOUNDED_CONTEXTS.has(segments[0])) {
135
+ return `${fromAbsoluteFile}: shared source-code domain must not import product context ${specifier}`;
136
+ }
137
+ return null;
138
+ }
139
+ const resolved = resolveRelativeSpecifier(fromAbsoluteFile, specifier);
140
+ if (resolved === null) {
141
+ return null;
142
+ }
143
+ const parts = libTailAfterResolution(resolved);
144
+ if (parts === null || parts.length < 2) {
145
+ return null;
146
+ }
147
+ const [relCtx, relLayer] = parts;
148
+ if (relCtx === "infra") {
149
+ return `${fromAbsoluteFile}: domain must not resolve into infra via ${specifier}`;
150
+ }
151
+ if (relCtx === loc.context) {
152
+ if (relLayer === "application" || relLayer === "infra" || relLayer === "presentation") {
153
+ return `${fromAbsoluteFile}: domain must not resolve into ${relLayer} via ${specifier}`;
154
+ }
155
+ }
156
+ if (relLayer === "domain" && PRODUCT_BOUNDED_CONTEXTS.has(relCtx) && relCtx !== loc.context) {
157
+ return `${fromAbsoluteFile}: domain must not resolve into other bounded context domain via ${specifier}`;
158
+ }
159
+ if (loc.context === "core" && relLayer === "domain" && PRODUCT_BOUNDED_CONTEXTS.has(relCtx)) {
160
+ return `${fromAbsoluteFile}: core/domain must not resolve into bounded context domain via ${specifier}`;
161
+ }
162
+ return null;
163
+ }
164
+ function violationApplicationLayer(loc, specifier, fromAbsoluteFile) {
165
+ if (specifier.startsWith("#lib/")) {
166
+ const segments = specifier.slice("#lib/".length).split("/").filter(Boolean);
167
+ if (segments.length === 0) {
168
+ return null;
169
+ }
170
+ if (segments[0] === "infra") {
171
+ return `${fromAbsoluteFile}: application must not import ${specifier}`;
172
+ }
173
+ const sharedLayerImported = sharedSourceCodeLayerFromSpecifier(segments);
174
+ if (sharedLayerImported === "infra" ||
175
+ sharedLayerImported === "presentation" ||
176
+ sharedLayerImported === "application") {
177
+ return `${fromAbsoluteFile}: application must not import ${specifier}`;
178
+ }
179
+ if (segments.length >= 2 && (segments[1] === "infra" || segments[1] === "presentation")) {
180
+ return `${fromAbsoluteFile}: application must not import ${specifier}`;
181
+ }
182
+ if (PRODUCT_BOUNDED_CONTEXTS.has(loc.context) &&
183
+ PRODUCT_BOUNDED_CONTEXTS.has(segments[0]) &&
184
+ segments[0] !== loc.context) {
185
+ return `${fromAbsoluteFile}: application (${loc.context}) must not import ${specifier}`;
186
+ }
187
+ return null;
188
+ }
189
+ const resolved = resolveRelativeSpecifier(fromAbsoluteFile, specifier);
190
+ if (resolved === null) {
191
+ return null;
192
+ }
193
+ const parts = libTailAfterResolution(resolved);
194
+ if (parts === null || parts.length < 2) {
195
+ return null;
196
+ }
197
+ const [relCtx, relLayer] = parts;
198
+ if (relCtx === "infra") {
199
+ return `${fromAbsoluteFile}: application must not resolve into infra via ${specifier}`;
200
+ }
201
+ if (relLayer === "infra" || relLayer === "presentation") {
202
+ return `${fromAbsoluteFile}: application must not resolve into ${relLayer} via ${specifier}`;
203
+ }
204
+ return null;
205
+ }
206
+ /**
207
+ * Returns human-readable violations for a single file's imports (for unit tests and tooling).
208
+ */
209
+ export function violationsForFileContent(absoluteFilePath, loc, sourceText) {
210
+ const violations = [];
211
+ for (const specifier of extractImportSpecifiers(sourceText)) {
212
+ if (loc.layer === "domain") {
213
+ const domainViolation = violationDomainLayer(loc, specifier, absoluteFilePath);
214
+ if (domainViolation !== null) {
215
+ violations.push(domainViolation);
216
+ }
217
+ }
218
+ else if (loc.layer === "application") {
219
+ const appViolation = violationApplicationLayer(loc, specifier, absoluteFilePath);
220
+ if (appViolation !== null) {
221
+ violations.push(appViolation);
222
+ }
223
+ }
224
+ }
225
+ return violations;
226
+ }
227
+ function walkNonTestTsFiles(rootDir) {
228
+ const results = [];
229
+ const scan = (dir) => {
230
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
231
+ const full = path.join(dir, entry.name);
232
+ if (entry.isDirectory()) {
233
+ if (entry.name === "node_modules" || entry.name === "dist") {
234
+ continue;
235
+ }
236
+ scan(full);
237
+ }
238
+ else if (entry.isFile() && entry.name.endsWith(".ts")) {
239
+ if (!isArchitectureExcludedSourceFile(full)) {
240
+ results.push(full);
241
+ }
242
+ }
243
+ }
244
+ };
245
+ scan(rootDir);
246
+ return results;
247
+ }
248
+ /**
249
+ * Scans `packages/cli/src/lib` for explicit-architecture boundary violations (non-test sources only).
250
+ */
251
+ export function scanCliPackageArchitectureViolations(cliPackageRoot) {
252
+ const libRoot = path.join(cliPackageRoot, "src", "lib");
253
+ const violations = [];
254
+ for (const absoluteFilePath of walkNonTestTsFiles(libRoot)) {
255
+ const loc = parseLibSourceLocation(absoluteFilePath);
256
+ if (loc === null || (loc.layer !== "domain" && loc.layer !== "application")) {
257
+ continue;
258
+ }
259
+ const sourceText = fs.readFileSync(absoluteFilePath, "utf8");
260
+ violations.push(...violationsForFileContent(absoluteFilePath, loc, sourceText));
261
+ }
262
+ return violations;
263
+ }
@@ -0,0 +1,27 @@
1
+ import type { Dirent } from "node:fs";
2
+ /**
3
+ * Filesystem surface for CLI use cases — inject in tests. Implementations live in infra.
4
+ */
5
+ export type CliFs = {
6
+ existsSync: (path: string) => boolean;
7
+ statSync: (path: string) => {
8
+ isDirectory: () => boolean;
9
+ isFile: () => boolean;
10
+ };
11
+ readFileSync: (path: string, encoding: BufferEncoding) => string;
12
+ writeFileSync: (path: string, data: string, encoding: BufferEncoding) => void;
13
+ readdirSync: (path: string) => string[];
14
+ readFile: (path: string, encoding: BufferEncoding) => Promise<string>;
15
+ writeFile: (path: string, data: string, encoding: BufferEncoding) => Promise<void>;
16
+ readdir: (path: string, options?: {
17
+ recursive?: boolean;
18
+ withFileTypes?: boolean;
19
+ }) => Promise<string[] | Dirent[]>;
20
+ rename: (oldPath: string, newPath: string) => Promise<void>;
21
+ unlink: (path: string) => Promise<void>;
22
+ };
23
+ export type CliLogger = {
24
+ out: (line: string) => void;
25
+ err: (line: string) => void;
26
+ };
27
+ //# sourceMappingURL=cli-io.port.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-io.port.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/application/ports/cli-io.port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,WAAW,EAAE,MAAM,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,CAAC;IAClF,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,MAAM,CAAC;IACjE,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9E,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACxC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,OAAO,EAAE,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,KACvD,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ import { type AppError } from "#lib/core/domain/errors";
3
+ import { type Result } from "#lib/core/domain/result";
4
+ /**
5
+ * Validates `input` with `schema`, returning {@link AppError} with code `VALIDATION_ERROR` on failure.
6
+ */
7
+ export declare function parseWithSchema<T>(schema: z.ZodType<T>, input: unknown): Result<T, AppError>;
8
+ //# sourceMappingURL=schema-parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-parse.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/application/schema-parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAW/D;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAM5F"}
@@ -0,0 +1,20 @@
1
+ import { appError } from "#lib/core/domain/errors";
2
+ import { err, ok } from "#lib/core/domain/result";
3
+ function formatZodIssues(issues) {
4
+ return issues
5
+ .map((issue) => {
6
+ const path = issue.path.length > 0 ? `${issue.path.join(".")}: ` : "";
7
+ return `${path}${issue.message}`;
8
+ })
9
+ .join("; ");
10
+ }
11
+ /**
12
+ * Validates `input` with `schema`, returning {@link AppError} with code `VALIDATION_ERROR` on failure.
13
+ */
14
+ export function parseWithSchema(schema, input) {
15
+ const parsed = schema.safeParse(input);
16
+ if (!parsed.success) {
17
+ return err(appError("VALIDATION_ERROR", formatZodIssues(parsed.error.issues)));
18
+ }
19
+ return ok(parsed.data);
20
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Stable, user-facing text for values caught as `unknown`.
3
+ * Avoids `String(unknown)` / `[object Object]` and satisfies strict `no-base-to-string`.
4
+ */
5
+ export declare function messageFromCaughtUnknown(value: unknown): string;
6
+ //# sourceMappingURL=caught-unknown-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caught-unknown-message.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/application/utils/caught-unknown-message.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA4B/D"}