@nielspeter/eess-ts 0.2.1 → 0.4.0

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 (433) hide show
  1. package/README.md +61 -35
  2. package/dist/builders/call-rule-builder.d.ts +66 -26
  3. package/dist/builders/call-rule-builder.d.ts.map +1 -1
  4. package/dist/builders/call-rule-builder.js +73 -31
  5. package/dist/builders/call-rule-builder.js.map +1 -1
  6. package/dist/builders/class-rule-builder.d.ts +125 -26
  7. package/dist/builders/class-rule-builder.d.ts.map +1 -1
  8. package/dist/builders/class-rule-builder.js +134 -30
  9. package/dist/builders/class-rule-builder.js.map +1 -1
  10. package/dist/builders/correspondence-builder.d.ts +287 -0
  11. package/dist/builders/correspondence-builder.d.ts.map +1 -0
  12. package/dist/builders/correspondence-builder.js +393 -0
  13. package/dist/builders/correspondence-builder.js.map +1 -0
  14. package/dist/builders/correspondence-findings.d.ts +104 -0
  15. package/dist/builders/correspondence-findings.d.ts.map +1 -0
  16. package/dist/builders/correspondence-findings.js +301 -0
  17. package/dist/builders/correspondence-findings.js.map +1 -0
  18. package/dist/builders/cross-layer-builder.d.ts +99 -16
  19. package/dist/builders/cross-layer-builder.d.ts.map +1 -1
  20. package/dist/builders/cross-layer-builder.js +181 -35
  21. package/dist/builders/cross-layer-builder.js.map +1 -1
  22. package/dist/builders/function-rule-builder.d.ts +144 -25
  23. package/dist/builders/function-rule-builder.d.ts.map +1 -1
  24. package/dist/builders/function-rule-builder.js +173 -26
  25. package/dist/builders/function-rule-builder.js.map +1 -1
  26. package/dist/builders/jsx-rule-builder.d.ts +70 -14
  27. package/dist/builders/jsx-rule-builder.d.ts.map +1 -1
  28. package/dist/builders/jsx-rule-builder.js +73 -14
  29. package/dist/builders/jsx-rule-builder.js.map +1 -1
  30. package/dist/builders/module-rule-builder.d.ts +2 -2
  31. package/dist/builders/module-rule-builder.d.ts.map +1 -1
  32. package/dist/builders/module-rule-builder.js +12 -3
  33. package/dist/builders/module-rule-builder.js.map +1 -1
  34. package/dist/builders/scoped-function-rule-builder.d.ts +11 -0
  35. package/dist/builders/scoped-function-rule-builder.d.ts.map +1 -1
  36. package/dist/builders/scoped-function-rule-builder.js +12 -0
  37. package/dist/builders/scoped-function-rule-builder.js.map +1 -1
  38. package/dist/builders/slice-discovery-message.d.ts +36 -0
  39. package/dist/builders/slice-discovery-message.d.ts.map +1 -0
  40. package/dist/builders/slice-discovery-message.js +181 -0
  41. package/dist/builders/slice-discovery-message.js.map +1 -0
  42. package/dist/builders/slice-rule-builder.d.ts +151 -12
  43. package/dist/builders/slice-rule-builder.d.ts.map +1 -1
  44. package/dist/builders/slice-rule-builder.js +242 -35
  45. package/dist/builders/slice-rule-builder.js.map +1 -1
  46. package/dist/builders/type-rule-builder.d.ts +95 -24
  47. package/dist/builders/type-rule-builder.d.ts.map +1 -1
  48. package/dist/builders/type-rule-builder.js +105 -29
  49. package/dist/builders/type-rule-builder.js.map +1 -1
  50. package/dist/{helpers → builders}/within.d.ts +2 -2
  51. package/dist/builders/within.d.ts.map +1 -0
  52. package/dist/{helpers → builders}/within.js +1 -1
  53. package/dist/builders/within.js.map +1 -0
  54. package/dist/cli/commands/baseline.d.ts +3 -2
  55. package/dist/cli/commands/baseline.d.ts.map +1 -1
  56. package/dist/cli/commands/baseline.js +68 -6
  57. package/dist/cli/commands/baseline.js.map +1 -1
  58. package/dist/cli/commands/check.d.ts +7 -2
  59. package/dist/cli/commands/check.d.ts.map +1 -1
  60. package/dist/cli/commands/check.js +241 -45
  61. package/dist/cli/commands/check.js.map +1 -1
  62. package/dist/cli/commands/doctor.d.ts +29 -0
  63. package/dist/cli/commands/doctor.d.ts.map +1 -0
  64. package/dist/cli/commands/doctor.js +224 -0
  65. package/dist/cli/commands/doctor.js.map +1 -0
  66. package/dist/cli/commands/explain.d.ts +2 -1
  67. package/dist/cli/commands/explain.d.ts.map +1 -1
  68. package/dist/cli/commands/explain.js +19 -10
  69. package/dist/cli/commands/explain.js.map +1 -1
  70. package/dist/cli/commands/init.d.ts +9 -3
  71. package/dist/cli/commands/init.d.ts.map +1 -1
  72. package/dist/cli/commands/init.js +162 -137
  73. package/dist/cli/commands/init.js.map +1 -1
  74. package/dist/cli/import-rule-module.d.ts +29 -0
  75. package/dist/cli/import-rule-module.d.ts.map +1 -0
  76. package/dist/cli/import-rule-module.js +60 -0
  77. package/dist/cli/import-rule-module.js.map +1 -0
  78. package/dist/cli/index.d.ts +2 -2
  79. package/dist/cli/index.d.ts.map +1 -1
  80. package/dist/cli/index.js +98 -33
  81. package/dist/cli/index.js.map +1 -1
  82. package/dist/cli/load-rules.d.ts +6 -11
  83. package/dist/cli/load-rules.d.ts.map +1 -1
  84. package/dist/cli/load-rules.js +21 -29
  85. package/dist/cli/load-rules.js.map +1 -1
  86. package/dist/cli/resolve-config.d.ts.map +1 -1
  87. package/dist/cli/resolve-config.js +24 -24
  88. package/dist/cli/resolve-config.js.map +1 -1
  89. package/dist/cli/rule-file-findings.d.ts +178 -0
  90. package/dist/cli/rule-file-findings.d.ts.map +1 -0
  91. package/dist/cli/rule-file-findings.js +293 -0
  92. package/dist/cli/rule-file-findings.js.map +1 -0
  93. package/dist/cli/watch.d.ts +20 -7
  94. package/dist/cli/watch.d.ts.map +1 -1
  95. package/dist/cli/watch.js +39 -14
  96. package/dist/cli/watch.js.map +1 -1
  97. package/dist/conditions/body-analysis-function.d.ts.map +1 -1
  98. package/dist/conditions/body-analysis-function.js +16 -7
  99. package/dist/conditions/body-analysis-function.js.map +1 -1
  100. package/dist/conditions/body-analysis-module.d.ts.map +1 -1
  101. package/dist/conditions/body-analysis-module.js +14 -9
  102. package/dist/conditions/body-analysis-module.js.map +1 -1
  103. package/dist/conditions/body-analysis.d.ts.map +1 -1
  104. package/dist/conditions/body-analysis.js +16 -7
  105. package/dist/conditions/body-analysis.js.map +1 -1
  106. package/dist/conditions/call.d.ts.map +1 -1
  107. package/dist/conditions/call.js +38 -17
  108. package/dist/conditions/call.js.map +1 -1
  109. package/dist/conditions/catch-analysis.d.ts +2 -1
  110. package/dist/conditions/catch-analysis.d.ts.map +1 -1
  111. package/dist/conditions/catch-analysis.js.map +1 -1
  112. package/dist/conditions/cross-layer.d.ts +2 -10
  113. package/dist/conditions/cross-layer.d.ts.map +1 -1
  114. package/dist/conditions/cross-layer.js +227 -23
  115. package/dist/conditions/cross-layer.js.map +1 -1
  116. package/dist/conditions/dependency.d.ts +35 -6
  117. package/dist/conditions/dependency.d.ts.map +1 -1
  118. package/dist/conditions/dependency.js +299 -45
  119. package/dist/conditions/dependency.js.map +1 -1
  120. package/dist/conditions/exports.d.ts.map +1 -1
  121. package/dist/conditions/exports.js +10 -0
  122. package/dist/conditions/exports.js.map +1 -1
  123. package/dist/conditions/function.d.ts.map +1 -1
  124. package/dist/conditions/function.js +19 -5
  125. package/dist/conditions/function.js.map +1 -1
  126. package/dist/conditions/helpers.d.ts +2 -1
  127. package/dist/conditions/helpers.d.ts.map +1 -1
  128. package/dist/conditions/helpers.js +4 -1
  129. package/dist/conditions/helpers.js.map +1 -1
  130. package/dist/conditions/jsx.d.ts.map +1 -1
  131. package/dist/conditions/jsx.js +7 -2
  132. package/dist/conditions/jsx.js.map +1 -1
  133. package/dist/conditions/match-identity.d.ts +43 -0
  134. package/dist/conditions/match-identity.d.ts.map +1 -0
  135. package/dist/conditions/match-identity.js +43 -0
  136. package/dist/conditions/match-identity.js.map +1 -0
  137. package/dist/conditions/members.d.ts.map +1 -1
  138. package/dist/conditions/members.js +17 -4
  139. package/dist/conditions/members.js.map +1 -1
  140. package/dist/conditions/reverse-dependency.d.ts +18 -5
  141. package/dist/conditions/reverse-dependency.d.ts.map +1 -1
  142. package/dist/conditions/reverse-dependency.js +109 -92
  143. package/dist/conditions/reverse-dependency.js.map +1 -1
  144. package/dist/conditions/slice.d.ts +86 -2
  145. package/dist/conditions/slice.d.ts.map +1 -1
  146. package/dist/conditions/slice.js +234 -53
  147. package/dist/conditions/slice.js.map +1 -1
  148. package/dist/conditions/structural.d.ts.map +1 -1
  149. package/dist/conditions/structural.js +16 -4
  150. package/dist/conditions/structural.js.map +1 -1
  151. package/dist/core/check-all.d.ts +19 -0
  152. package/dist/core/check-all.d.ts.map +1 -0
  153. package/dist/core/check-all.js +96 -0
  154. package/dist/core/check-all.js.map +1 -0
  155. package/dist/core/combinators.d.ts +48 -0
  156. package/dist/core/combinators.d.ts.map +1 -0
  157. package/dist/core/combinators.js +56 -0
  158. package/dist/core/combinators.js.map +1 -0
  159. package/dist/core/descendant-cache.d.ts +36 -0
  160. package/dist/core/descendant-cache.d.ts.map +1 -0
  161. package/dist/core/descendant-cache.js +119 -0
  162. package/dist/core/descendant-cache.js.map +1 -0
  163. package/dist/core/diagnose.d.ts +234 -0
  164. package/dist/core/diagnose.d.ts.map +1 -0
  165. package/dist/core/diagnose.js +382 -0
  166. package/dist/core/diagnose.js.map +1 -0
  167. package/dist/core/disk-set.d.ts +48 -0
  168. package/dist/core/disk-set.d.ts.map +1 -0
  169. package/dist/core/disk-set.js +218 -0
  170. package/dist/core/disk-set.js.map +1 -0
  171. package/dist/core/element-cache.d.ts +75 -0
  172. package/dist/core/element-cache.d.ts.map +1 -0
  173. package/dist/core/element-cache.js +32 -0
  174. package/dist/core/element-cache.js.map +1 -0
  175. package/dist/core/empty-project-advice.d.ts +75 -0
  176. package/dist/core/empty-project-advice.d.ts.map +1 -0
  177. package/dist/core/empty-project-advice.js +61 -0
  178. package/dist/core/empty-project-advice.js.map +1 -0
  179. package/dist/core/exclusion-comments.d.ts +54 -0
  180. package/dist/core/exclusion-comments.d.ts.map +1 -0
  181. package/dist/core/exclusion-comments.js +310 -0
  182. package/dist/core/exclusion-comments.js.map +1 -0
  183. package/dist/core/execute-rule.d.ts +150 -0
  184. package/dist/core/execute-rule.d.ts.map +1 -0
  185. package/dist/core/execute-rule.js +580 -0
  186. package/dist/core/execute-rule.js.map +1 -0
  187. package/dist/core/glob-diagnosis.d.ts +78 -0
  188. package/dist/core/glob-diagnosis.d.ts.map +1 -0
  189. package/dist/core/glob-diagnosis.js +134 -0
  190. package/dist/core/glob-diagnosis.js.map +1 -0
  191. package/dist/core/glob-evaluator.d.ts +48 -0
  192. package/dist/core/glob-evaluator.d.ts.map +1 -0
  193. package/dist/core/glob-evaluator.js +89 -0
  194. package/dist/core/glob-evaluator.js.map +1 -0
  195. package/dist/core/import-candidates.d.ts +60 -0
  196. package/dist/core/import-candidates.d.ts.map +1 -0
  197. package/dist/core/import-candidates.js +93 -0
  198. package/dist/core/import-candidates.js.map +1 -0
  199. package/dist/core/import-options.d.ts +55 -2
  200. package/dist/core/import-options.d.ts.map +1 -1
  201. package/dist/core/import-options.js +64 -0
  202. package/dist/core/import-options.js.map +1 -1
  203. package/dist/core/line-index.d.ts +3 -0
  204. package/dist/core/line-index.d.ts.map +1 -0
  205. package/dist/core/line-index.js +229 -0
  206. package/dist/core/line-index.js.map +1 -0
  207. package/dist/core/metric-violation.d.ts +86 -0
  208. package/dist/core/metric-violation.d.ts.map +1 -0
  209. package/dist/core/metric-violation.js +132 -0
  210. package/dist/core/metric-violation.js.map +1 -0
  211. package/dist/core/module-edges.d.ts +361 -0
  212. package/dist/core/module-edges.d.ts.map +1 -0
  213. package/dist/core/module-edges.js +592 -0
  214. package/dist/core/module-edges.js.map +1 -0
  215. package/dist/core/object-literal-functions.d.ts +42 -0
  216. package/dist/core/object-literal-functions.d.ts.map +1 -0
  217. package/dist/core/object-literal-functions.js +75 -0
  218. package/dist/core/object-literal-functions.js.map +1 -0
  219. package/dist/core/orphan-exclusions.d.ts +44 -0
  220. package/dist/core/orphan-exclusions.d.ts.map +1 -0
  221. package/dist/core/orphan-exclusions.js +214 -0
  222. package/dist/core/orphan-exclusions.js.map +1 -0
  223. package/dist/core/pair-condition.d.ts +32 -3
  224. package/dist/core/pair-condition.d.ts.map +1 -1
  225. package/dist/core/path-universe.d.ts +54 -0
  226. package/dist/core/path-universe.d.ts.map +1 -0
  227. package/dist/core/path-universe.js +65 -0
  228. package/dist/core/path-universe.js.map +1 -0
  229. package/dist/core/per-root-compiler-options.d.ts +20 -0
  230. package/dist/core/per-root-compiler-options.d.ts.map +1 -0
  231. package/dist/core/per-root-compiler-options.js +57 -0
  232. package/dist/core/per-root-compiler-options.js.map +1 -0
  233. package/dist/core/project-relative.d.ts +98 -0
  234. package/dist/core/project-relative.d.ts.map +1 -0
  235. package/dist/core/project-relative.js +185 -0
  236. package/dist/core/project-relative.js.map +1 -0
  237. package/dist/core/project.d.ts +7 -1
  238. package/dist/core/project.d.ts.map +1 -1
  239. package/dist/core/project.js +24 -0
  240. package/dist/core/project.js.map +1 -1
  241. package/dist/core/rule-builder.d.ts +282 -0
  242. package/dist/core/rule-builder.d.ts.map +1 -0
  243. package/dist/core/rule-builder.js +445 -0
  244. package/dist/core/rule-builder.js.map +1 -0
  245. package/dist/core/rule-declaration.d.ts +32 -0
  246. package/dist/core/rule-declaration.d.ts.map +1 -0
  247. package/dist/core/rule-declaration.js +126 -0
  248. package/dist/core/rule-declaration.js.map +1 -0
  249. package/dist/core/terminal-builder.d.ts +625 -0
  250. package/dist/core/terminal-builder.d.ts.map +1 -0
  251. package/dist/core/terminal-builder.js +787 -0
  252. package/dist/core/terminal-builder.js.map +1 -0
  253. package/dist/core/terminal-execution.d.ts +23 -0
  254. package/dist/core/terminal-execution.d.ts.map +1 -0
  255. package/dist/core/terminal-execution.js +71 -0
  256. package/dist/core/terminal-execution.js.map +1 -0
  257. package/dist/core/vacuity-diagnosis.d.ts +103 -0
  258. package/dist/core/vacuity-diagnosis.d.ts.map +1 -0
  259. package/dist/core/vacuity-diagnosis.js +415 -0
  260. package/dist/core/vacuity-diagnosis.js.map +1 -0
  261. package/dist/core/violation.d.ts +16 -11
  262. package/dist/core/violation.d.ts.map +1 -1
  263. package/dist/core/violation.js +33 -13
  264. package/dist/core/violation.js.map +1 -1
  265. package/dist/graphql/index.js +1 -1
  266. package/dist/graphql/index.js.map +1 -1
  267. package/dist/graphql/resolver-rule-builder.d.ts +98 -23
  268. package/dist/graphql/resolver-rule-builder.d.ts.map +1 -1
  269. package/dist/graphql/resolver-rule-builder.js +151 -21
  270. package/dist/graphql/resolver-rule-builder.js.map +1 -1
  271. package/dist/graphql/schema-loader.d.ts +21 -0
  272. package/dist/graphql/schema-loader.d.ts.map +1 -1
  273. package/dist/graphql/schema-loader.js +81 -12
  274. package/dist/graphql/schema-loader.js.map +1 -1
  275. package/dist/graphql/schema-rule-builder.d.ts +57 -20
  276. package/dist/graphql/schema-rule-builder.d.ts.map +1 -1
  277. package/dist/graphql/schema-rule-builder.js +101 -25
  278. package/dist/graphql/schema-rule-builder.js.map +1 -1
  279. package/dist/helpers/baseline-diagnostics.d.ts +45 -0
  280. package/dist/helpers/baseline-diagnostics.d.ts.map +1 -0
  281. package/dist/helpers/baseline-diagnostics.js +168 -0
  282. package/dist/helpers/baseline-diagnostics.js.map +1 -0
  283. package/dist/helpers/baseline-generator.d.ts +19 -0
  284. package/dist/helpers/baseline-generator.d.ts.map +1 -0
  285. package/dist/helpers/baseline-generator.js +18 -0
  286. package/dist/helpers/baseline-generator.js.map +1 -0
  287. package/dist/helpers/baseline.d.ts +336 -0
  288. package/dist/helpers/baseline.d.ts.map +1 -0
  289. package/dist/helpers/baseline.js +664 -0
  290. package/dist/helpers/baseline.js.map +1 -0
  291. package/dist/helpers/body-traversal.d.ts +27 -2
  292. package/dist/helpers/body-traversal.d.ts.map +1 -1
  293. package/dist/helpers/body-traversal.js +122 -16
  294. package/dist/helpers/body-traversal.js.map +1 -1
  295. package/dist/helpers/callback-extractor.d.ts.map +1 -1
  296. package/dist/helpers/callback-extractor.js +48 -47
  297. package/dist/helpers/callback-extractor.js.map +1 -1
  298. package/dist/helpers/complexity.d.ts +13 -5
  299. package/dist/helpers/complexity.d.ts.map +1 -1
  300. package/dist/helpers/complexity.js +15 -6
  301. package/dist/helpers/complexity.js.map +1 -1
  302. package/dist/helpers/diff-aware.d.ts +44 -0
  303. package/dist/helpers/diff-aware.d.ts.map +1 -0
  304. package/dist/helpers/diff-aware.js +84 -0
  305. package/dist/helpers/diff-aware.js.map +1 -0
  306. package/dist/helpers/matchers.d.ts +68 -7
  307. package/dist/helpers/matchers.d.ts.map +1 -1
  308. package/dist/helpers/matchers.js +114 -20
  309. package/dist/helpers/matchers.js.map +1 -1
  310. package/dist/helpers/slice-graph.d.ts +100 -8
  311. package/dist/helpers/slice-graph.d.ts.map +1 -1
  312. package/dist/helpers/slice-graph.js +126 -34
  313. package/dist/helpers/slice-graph.js.map +1 -1
  314. package/dist/helpers/tarjan.d.ts +0 -14
  315. package/dist/helpers/tarjan.d.ts.map +1 -1
  316. package/dist/helpers/tarjan.js +29 -16
  317. package/dist/helpers/tarjan.js.map +1 -1
  318. package/dist/index.d.ts +56 -17
  319. package/dist/index.d.ts.map +1 -1
  320. package/dist/index.js +57 -13
  321. package/dist/index.js.map +1 -1
  322. package/dist/models/arch-call.d.ts +3 -2
  323. package/dist/models/arch-call.d.ts.map +1 -1
  324. package/dist/models/arch-call.js.map +1 -1
  325. package/dist/models/arch-function.d.ts +28 -6
  326. package/dist/models/arch-function.d.ts.map +1 -1
  327. package/dist/models/arch-function.js +106 -3
  328. package/dist/models/arch-function.js.map +1 -1
  329. package/dist/models/arch-jsx-element.js +2 -2
  330. package/dist/models/arch-jsx-element.js.map +1 -1
  331. package/dist/models/slice.d.ts +33 -9
  332. package/dist/models/slice.d.ts.map +1 -1
  333. package/dist/models/slice.js +129 -19
  334. package/dist/models/slice.js.map +1 -1
  335. package/dist/predicates/call.d.ts.map +1 -1
  336. package/dist/predicates/call.js +5 -0
  337. package/dist/predicates/call.js.map +1 -1
  338. package/dist/predicates/identity.d.ts +21 -0
  339. package/dist/predicates/identity.d.ts.map +1 -1
  340. package/dist/predicates/identity.js +75 -3
  341. package/dist/predicates/identity.js.map +1 -1
  342. package/dist/predicates/index.d.ts +1 -1
  343. package/dist/predicates/index.d.ts.map +1 -1
  344. package/dist/predicates/index.js +1 -1
  345. package/dist/predicates/index.js.map +1 -1
  346. package/dist/predicates/metrics.d.ts +4 -2
  347. package/dist/predicates/metrics.d.ts.map +1 -1
  348. package/dist/predicates/metrics.js +4 -2
  349. package/dist/predicates/metrics.js.map +1 -1
  350. package/dist/predicates/module.d.ts +4 -12
  351. package/dist/predicates/module.d.ts.map +1 -1
  352. package/dist/predicates/module.js +57 -37
  353. package/dist/predicates/module.js.map +1 -1
  354. package/dist/presets/agent-guardrails.d.ts +22 -15
  355. package/dist/presets/agent-guardrails.d.ts.map +1 -1
  356. package/dist/presets/agent-guardrails.js +124 -19
  357. package/dist/presets/agent-guardrails.js.map +1 -1
  358. package/dist/presets/boundaries.d.ts +45 -2
  359. package/dist/presets/boundaries.d.ts.map +1 -1
  360. package/dist/presets/boundaries.js +132 -23
  361. package/dist/presets/boundaries.js.map +1 -1
  362. package/dist/presets/data-layer.d.ts +22 -2
  363. package/dist/presets/data-layer.d.ts.map +1 -1
  364. package/dist/presets/data-layer.js +58 -16
  365. package/dist/presets/data-layer.js.map +1 -1
  366. package/dist/presets/index.d.ts +7 -5
  367. package/dist/presets/index.d.ts.map +1 -1
  368. package/dist/presets/index.js +9 -3
  369. package/dist/presets/index.js.map +1 -1
  370. package/dist/presets/layered.d.ts +46 -2
  371. package/dist/presets/layered.d.ts.map +1 -1
  372. package/dist/presets/layered.js +66 -29
  373. package/dist/presets/layered.js.map +1 -1
  374. package/dist/presets/recommended.d.ts +80 -9
  375. package/dist/presets/recommended.d.ts.map +1 -1
  376. package/dist/presets/recommended.js +25 -23
  377. package/dist/presets/recommended.js.map +1 -1
  378. package/dist/presets/shared.d.ts +270 -2
  379. package/dist/presets/shared.d.ts.map +1 -1
  380. package/dist/presets/shared.js +338 -4
  381. package/dist/presets/shared.js.map +1 -1
  382. package/dist/rules/code-quality.d.ts.map +1 -1
  383. package/dist/rules/code-quality.js +15 -6
  384. package/dist/rules/code-quality.js.map +1 -1
  385. package/dist/rules/hygiene.d.ts +1 -1
  386. package/dist/rules/hygiene.js +1 -1
  387. package/dist/rules/metrics-function.d.ts +2 -1
  388. package/dist/rules/metrics-function.d.ts.map +1 -1
  389. package/dist/rules/metrics-function.js +33 -6
  390. package/dist/rules/metrics-function.js.map +1 -1
  391. package/dist/rules/metrics.d.ts +2 -1
  392. package/dist/rules/metrics.d.ts.map +1 -1
  393. package/dist/rules/metrics.js +39 -9
  394. package/dist/rules/metrics.js.map +1 -1
  395. package/dist/smells/duplicate-bodies.d.ts +58 -5
  396. package/dist/smells/duplicate-bodies.d.ts.map +1 -1
  397. package/dist/smells/duplicate-bodies.js +137 -56
  398. package/dist/smells/duplicate-bodies.js.map +1 -1
  399. package/dist/smells/fingerprint.d.ts +8 -1
  400. package/dist/smells/fingerprint.d.ts.map +1 -1
  401. package/dist/smells/fingerprint.js +21 -3
  402. package/dist/smells/fingerprint.js.map +1 -1
  403. package/dist/smells/inconsistent-siblings.d.ts +128 -7
  404. package/dist/smells/inconsistent-siblings.d.ts.map +1 -1
  405. package/dist/smells/inconsistent-siblings.js +288 -86
  406. package/dist/smells/inconsistent-siblings.js.map +1 -1
  407. package/dist/smells/sibling-files.d.ts +47 -0
  408. package/dist/smells/sibling-files.d.ts.map +1 -0
  409. package/dist/smells/sibling-files.js +104 -0
  410. package/dist/smells/sibling-files.js.map +1 -0
  411. package/dist/smells/similar-pairs.d.ts +27 -0
  412. package/dist/smells/similar-pairs.d.ts.map +1 -0
  413. package/dist/smells/similar-pairs.js +52 -0
  414. package/dist/smells/similar-pairs.js.map +1 -0
  415. package/dist/smells/smell-builder.d.ts +57 -12
  416. package/dist/smells/smell-builder.d.ts.map +1 -1
  417. package/dist/smells/smell-builder.js +111 -14
  418. package/dist/smells/smell-builder.js.map +1 -1
  419. package/dist/tsconfig/index.d.ts +19 -0
  420. package/dist/tsconfig/index.d.ts.map +1 -0
  421. package/dist/tsconfig/index.js +20 -0
  422. package/dist/tsconfig/index.js.map +1 -0
  423. package/dist/tsconfig/tsconfig-builder.d.ts +42 -9
  424. package/dist/tsconfig/tsconfig-builder.d.ts.map +1 -1
  425. package/dist/tsconfig/tsconfig-builder.js +64 -16
  426. package/dist/tsconfig/tsconfig-builder.js.map +1 -1
  427. package/package.json +3 -2
  428. package/dist/core/module-dependencies.d.ts +0 -28
  429. package/dist/core/module-dependencies.d.ts.map +0 -1
  430. package/dist/core/module-dependencies.js +0 -35
  431. package/dist/core/module-dependencies.js.map +0 -1
  432. package/dist/helpers/within.d.ts.map +0 -1
  433. package/dist/helpers/within.js.map +0 -1
@@ -1,4 +1,4 @@
1
- export interface ExplainArgs {
1
+ interface ExplainArgs {
2
2
  ruleFiles: string[];
3
3
  markdown?: boolean;
4
4
  /** Explain output format: 'json' (default), 'markdown', or 'agent'. */
@@ -8,4 +8,5 @@ export interface ExplainArgs {
8
8
  * Dump all active rules as structured JSON or markdown.
9
9
  */
10
10
  export declare function runExplain(args: ExplainArgs): Promise<void>;
11
+ export {};
11
12
  //# sourceMappingURL=explain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/explain.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAgBD;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjE"}
1
+ {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/explain.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjE"}
@@ -1,11 +1,5 @@
1
+ import { isDescribable } from '@nielspeter/eess';
1
2
  import { loadRuleFiles } from '../load-rules.js';
2
- function isDescribable(value) {
3
- return (value !== null &&
4
- value !== undefined &&
5
- typeof value === 'object' &&
6
- 'describeRule' in value &&
7
- typeof value['describeRule'] === 'function');
8
- }
9
3
  /**
10
4
  * Dump all active rules as structured JSON or markdown.
11
5
  */
@@ -42,7 +36,7 @@ function outputAgent(descriptions) {
42
36
  'The following rules are enforced by CI. Violations will block your PR.',
43
37
  '',
44
38
  '**Verify before you continue:** after writing or changing code, run ' +
45
- '`eess-ts check --format json`, read the `violations` array, and fix ' +
39
+ '`npx eess-ts check --format json`, read the `violations` array, and fix ' +
46
40
  'each one using its `suggestion`. Do this in your edit loop — do not wait for CI.',
47
41
  '',
48
42
  ];
@@ -62,10 +56,24 @@ function outputAgent(descriptions) {
62
56
  }
63
57
  for (const [group, rules] of groups) {
64
58
  lines.push(`### ${titleCase(group)}`, '');
59
+ // Deduplicated within the group. A preset generates one rule per configured
60
+ // folder — `strictBoundaries({ folders })` with six boundaries produces six
61
+ // `no-cross-boundary` rules carrying IDENTICAL metadata — so the same bullet
62
+ // printed six times. This output is meant to be committed into an agent's
63
+ // system prompt (`init` says so), where repetition is pure cost: it is
64
+ // tokens on every request and it reads as six different rules.
65
+ //
66
+ // The bullet TEXT is the key, not the rule id: two rules can share an id and
67
+ // differ in imperative, and it is the line that would repeat.
68
+ const seen = new Set();
65
69
  for (const d of rules) {
66
70
  // The imperative is the self-contained rule statement; `because`/`suggestion`
67
71
  // live in the check --format json payload, so don't double them up here.
68
- lines.push(`- ${d.imperative ?? (d.rule || 'Follow the architecture rule.')}`);
72
+ const bullet = d.imperative ?? (d.rule || 'Follow the architecture rule.');
73
+ if (seen.has(bullet))
74
+ continue;
75
+ seen.add(bullet);
76
+ lines.push(`- ${bullet}`);
69
77
  }
70
78
  lines.push('');
71
79
  }
@@ -73,7 +81,8 @@ function outputAgent(descriptions) {
73
81
  process.stdout.write(lines.join('\n') + '\n');
74
82
  }
75
83
  function titleCase(s) {
76
- return s.length === 0 ? s : (s[0] ?? '').toUpperCase() + s.slice(1);
84
+ const [first] = s;
85
+ return first === undefined ? s : first.toUpperCase() + s.slice(1);
77
86
  }
78
87
  function outputJson(descriptions) {
79
88
  const output = {
@@ -1 +1 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../src/cli/commands/explain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAchD,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,KAAK,KAAK,SAAS;QACnB,OAAO,KAAK,KAAK,QAAQ;QACzB,cAAc,IAAI,KAAK;QACvB,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,UAAU,CAC5C,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAiB;IAChD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAEpD,MAAM,YAAY,GAAsB,EAAE,CAAA;IAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,WAAW,CAAC,YAAY,CAAC,CAAA;IAC3B,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACvD,cAAc,CAAC,YAAY,CAAC,CAAA;IAC9B,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,YAAY,CAAC,CAAA;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAG,wBAAwB,CAAA;AAC5C,MAAM,SAAS,GAAG,sBAAsB,CAAA;AAExC;;;GAGG;AACH,SAAS,WAAW,CAAC,YAA+B;IAClD,MAAM,KAAK,GAAa;QACtB,WAAW;QACX,EAAE;QACF,mDAAmD;QACnD,EAAE;QACF,wEAAwE;QACxE,EAAE;QACF,sEAAsE;YACpE,sEAAsE;YACtE,kFAAkF;QACpF,EAAE;KACH,CAAA;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;QAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC7C,OAAM;IACR,CAAC;IAED,4EAA4E;IAC5E,mDAAmD;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAA;IACnD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACnC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACxB,CAAC;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QACzC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,8EAA8E;YAC9E,yEAAyE;YACzE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,+BAA+B,CAAC,EAAE,CAAC,CAAA;QAChF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACrE,CAAC;AAED,SAAS,UAAU,CAAC,YAA+B;IACjD,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAA;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AAC9D,CAAC;AAED,SAAS,cAAc,CAAC,YAA+B;IACrD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACzC,OAAM;IACR,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC9D,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAA;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,CAAA;QAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,GAAG,CAAA;QAChC,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,GAAG,CAAA;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,IAAI,MAAM,OAAO,MAAM,UAAU,MAAM,CAAC,CAAA;IAC5E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../src/cli/commands/explain.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
- export interface InitArgs {
1
+ interface InitArgs {
2
2
  /** Directory to scaffold into. Defaults to `process.cwd()`. */
3
3
  cwd?: string;
4
- /** Starter preset: `recommended` (default) | `agent-guardrails`. */
4
+ /**
5
+ * Starter preset. Floor: `recommended` (default) | `agent-guardrails`.
6
+ * Shape: `layered` | `strict-boundaries` | `data-layer` (scaffolded with
7
+ * fill-in folder globs, alongside the `recommended` floor).
8
+ */
5
9
  preset?: string;
6
10
  /** tsconfig path written into the generated files. Default `tsconfig.json`. */
7
11
  tsconfig?: string;
@@ -17,7 +21,9 @@ export interface InitArgs {
17
21
  * (0 success, 1 on a recoverable error — bad `--preset`, missing tsconfig, a
18
22
  * file conflict without `--force`, or a write failure). All reads, parses, and
19
23
  * conflict checks run before any file is written, so a validation failure never
20
- * leaves a partial scaffold; a raw I/O failure mid-write is caught and reported.
24
+ * leaves a partial scaffold; a raw I/O failure mid-write is caught and reported
25
+ * (writes are ordered, not transactional).
21
26
  */
22
27
  export declare function runInit(args: InitArgs): number;
28
+ export {};
23
29
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,QAAQ;IACvB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,wEAAwE;IACxE,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAUD;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAyE9C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAgBA,UAAU,QAAQ;IAChB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,wEAAwE;IACxE,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAUD;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAyE9C"}
@@ -1,21 +1,20 @@
1
1
  import fs from 'node:fs';
2
+ import { isRecord } from '@nielspeter/eess';
2
3
  import path from 'node:path';
3
- /**
4
- * "Floor" presets — a universal rule set scoped to your source glob. eess only
5
- * scaffolds the floor presets: unlike ts-archunit, eess presets return eager
6
- * `ArchViolation[]` (ADR-008), which a CLI rule file cannot spread. So `init`
7
- * emits the floor rules **expanded as builders** (CLI-loadable, editable), and
8
- * leaves the shape presets (layered / boundaries / data-layer) to test-file use.
9
- */
4
+ /** "Floor" presets — a universal rule set scoped to your source glob. */
10
5
  const FLOOR_PRESETS = ['recommended', 'agent-guardrails'];
11
- const VALID_PRESETS = [...FLOOR_PRESETS];
6
+ /** "Shape" presets — architecture patterns; scaffolded with fill-in folder globs. */
7
+ const SHAPE_PRESETS = ['layered', 'strict-boundaries', 'data-layer'];
8
+ /** Every preset `init` can scaffold — all are returning-form (spreadable). */
9
+ const VALID_PRESETS = [...FLOOR_PRESETS, ...SHAPE_PRESETS];
12
10
  const VALID_PRESET_SET = new Set(VALID_PRESETS);
13
11
  /**
14
12
  * Scaffold a working eess-ts setup in `cwd`. Returns the process exit code
15
13
  * (0 success, 1 on a recoverable error — bad `--preset`, missing tsconfig, a
16
14
  * file conflict without `--force`, or a write failure). All reads, parses, and
17
15
  * conflict checks run before any file is written, so a validation failure never
18
- * leaves a partial scaffold; a raw I/O failure mid-write is caught and reported.
16
+ * leaves a partial scaffold; a raw I/O failure mid-write is caught and reported
17
+ * (writes are ordered, not transactional).
19
18
  */
20
19
  export function runInit(args) {
21
20
  const cwd = args.cwd ?? process.cwd();
@@ -34,7 +33,7 @@ export function runInit(args) {
34
33
  const writeBaseline = args.noBaseline !== true;
35
34
  // Stage the generated files in memory (no writes yet).
36
35
  const staged = [
37
- stage(cwd, 'eess-ts.config.ts', configTemplate(writeBaseline)),
36
+ stage(cwd, 'eess-ts.config.ts', configTemplate(tsconfig, writeBaseline)),
38
37
  stage(cwd, 'arch.rules.ts', rulesTemplate(preset, tsconfig, sourceRoot)),
39
38
  ];
40
39
  if (writeBaseline) {
@@ -72,134 +71,177 @@ export function runInit(args) {
72
71
  console.error(`Error: could not write files — ${err instanceof Error ? err.message : String(err)}`);
73
72
  return 1;
74
73
  }
75
- printClosing(staged, pkgPlan, cwd, sourceRoot);
74
+ printClosing(staged, pkgPlan, cwd, sourceRoot, preset);
76
75
  return 0;
77
76
  }
78
77
  function isValidPreset(value) {
79
78
  return VALID_PRESET_SET.has(value);
80
79
  }
80
+ function isFloorPreset(preset) {
81
+ return preset === 'recommended' || preset === 'agent-guardrails';
82
+ }
81
83
  function stage(cwd, name, content) {
82
84
  return { path: path.join(cwd, name), name, content };
83
85
  }
84
86
  // --- Templates ---------------------------------------------------------------
85
- function configTemplate(writeBaseline) {
87
+ function configTemplate(tsconfig, writeBaseline) {
86
88
  const baselineLine = writeBaseline ? `\n baseline: 'arch-baseline.json',` : '';
87
89
  return `import { defineConfig } from '@nielspeter/eess-ts'
88
90
 
89
91
  export default defineConfig({
90
- // The active tsconfig is set in arch.rules.ts via project('...').
92
+ // The active tsconfig is set in arch.rules.ts via project('${tsconfig}').
91
93
  rules: ['arch.rules.ts'],${baselineLine}
92
94
  format: 'auto',
93
95
  })
94
96
  `;
95
97
  }
96
- /** The source-file glob for the floor rules, sourceRoot-aware. */
97
- function includeGlob(sourceRoot) {
98
- return `**/${sourceRoot}/**`;
99
- }
100
98
  function rulesTemplate(preset, tsconfig, sourceRoot) {
101
- return preset === 'recommended'
102
- ? recommendedRulesTemplate(tsconfig, sourceRoot)
103
- : agentGuardrailsRulesTemplate(tsconfig, sourceRoot);
99
+ return isFloorPreset(preset)
100
+ ? floorRulesTemplate(preset, tsconfig, sourceRoot)
101
+ : shapeRulesTemplate(preset, tsconfig, sourceRoot);
104
102
  }
103
+ /** The `recommended` include option, sourceRoot-aware (bare when root is `src`). */
105
104
  /**
106
- * Header shared by both floor templates: the CLI runs a rule file's default
107
- * export (an array of builders). eess presets return violations for a test
108
- * harness, so `init` expands the floor into builders here — visible and editable.
105
+ * **Every scaffolded preset call carries `report: 'builders'`, and must.**
106
+ *
107
+ * A rule FILE spreads its presets into `export default [...]`, so it needs the
108
+ * builders, not the result of running them. Omitting `report` runs the rules and
109
+ * throws during module evaluation — which in a rule file means the spread splats
110
+ * violations into the array, the CLI loads **zero rules**, and `check` reports
111
+ * `0 rules across 1 file` and exits 0.
112
+ *
113
+ * That is the alarm value the summary line exists to surface, produced by the
114
+ * tool's own scaffold. It happened: the preset default was corrected to enforce
115
+ * (PR #72 review) and this template was not updated with it. `tsc --noEmit`
116
+ * passes on the generated file — a spread of the wrong array type is not a type
117
+ * error — so nothing but running it catches this. `init-scaffold-loads-rules.test.ts`
118
+ * runs the generated template through `runCheck` and asserts a non-zero rule
119
+ * count, which is the check that was missing.
109
120
  */
110
- function rulesHeader(tsconfig) {
111
- return `// Architecture rules for eess-ts. Run with \`eess-ts check\` (or \`npm run arch\`).
112
- //
113
- // This file expands the 'floor' preset into individual builders. eess presets
114
- // (recommended / agentGuardrails) return violations for a test harness; a CLI
115
- // rule file is an array of builders, so the rules are inlined below — edit,
116
- // remove, or add freely. \`eess-ts explain --format agent\` turns the imperative
117
- // metadata into a rules block for an AI agent's system prompt.
118
-
119
- const p = project('${tsconfig}')`;
121
+ function recommendedCallFor(sourceRoot) {
122
+ return sourceRoot === 'src'
123
+ ? "recommended(p, { report: 'builders' })"
124
+ : `recommended(p, { include: '**/${sourceRoot}/**', report: 'builders' })`;
120
125
  }
121
- function recommendedRulesTemplate(tsconfig, sourceRoot) {
122
- const include = includeGlob(sourceRoot);
123
- return `import { project, functions } from '@nielspeter/eess-ts'
124
- import { functionNoEval, functionNoFunctionConstructor } from '@nielspeter/eess-ts/rules/security'
125
- import { functionNoSilentCatch } from '@nielspeter/eess-ts/rules/errors'
126
- import { noEmptyBodies } from '@nielspeter/eess-ts/rules/hygiene'
126
+ function floorRulesTemplate(preset, tsconfig, sourceRoot) {
127
+ const recommendedCall = recommendedCallFor(sourceRoot);
128
+ const agentCall = `agentGuardrails(p, {
129
+ src: '**/${sourceRoot}/**',
130
+ noGenericErrors: true,
131
+ noStubs: true,
132
+ noEmptyBodies: true,
133
+ noCopyPaste: true,
134
+ report: 'builders',
135
+ })`;
136
+ const presetImport = preset === 'recommended' ? 'recommended' : 'agentGuardrails';
137
+ // Lead with the chosen preset; the other is offered in a comment block.
138
+ const leadBlock = preset === 'recommended'
139
+ ? ` // Thin universal safety floor.
140
+ ...${recommendedCall},`
141
+ : ` // Guardrails for the mistakes AI coding agents make most.
142
+ ...${agentCall},`;
143
+ const alternateBlock = preset === 'recommended'
144
+ ? ` // Using an AI coding agent? Add agentGuardrails — it targets the mistakes
145
+ // agents make most (inline logic, generic errors, stubs, empty bodies,
146
+ // copy-paste), and \`npx eess-ts explain --format agent\` emits an
147
+ // imperative rules block for the agent's system prompt.
148
+ // See https://github.com/nielspeter/eess/blob/main/docs/agent-integration.md Then, with
149
+ // { agentGuardrails } imported from '@nielspeter/eess-ts/presets':
150
+ // ...agentGuardrails(p, { src: '**/${sourceRoot}/**', noGenericErrors: true, report: 'builders' })`
151
+ : ` // Thin universal safety floor (eval, Function constructor, silent catches,
152
+ // empty bodies). Import { recommended } from '@nielspeter/eess-ts/presets':
153
+ // ...${recommendedCall},`;
154
+ return `import { project } from '@nielspeter/eess-ts'
155
+ import { ${presetImport} } from '@nielspeter/eess-ts/presets'
156
+ // Uncomment the imports you need for the examples below:
157
+ // import { classes, slices, call } from '@nielspeter/eess-ts'
127
158
 
128
- ${rulesHeader(tsconfig)}
129
- const include = '${include}'
159
+ const p = project('${tsconfig}')
130
160
 
131
- // Thin universal safety floor — dangerous regardless of project shape.
161
+ // Rules are collected into the default export; \`eess-ts check\` runs them.
132
162
  export default [
133
- functions(p).that().resideInFile(include).should().satisfy(functionNoEval()).rule({
134
- id: 'preset/recommended/no-eval',
135
- because: 'eval() executes arbitrary code — a code-injection risk',
136
- suggestion: 'remove eval(); parse or dispatch explicitly',
137
- imperative: 'Do NOT call eval()',
138
- }),
139
- functions(p).that().resideInFile(include).should().satisfy(functionNoFunctionConstructor()).rule({
140
- id: 'preset/recommended/no-function-constructor',
141
- because: 'the Function constructor is eval() in disguise',
142
- suggestion: 'define the function directly instead of building it from a string',
143
- imperative: 'Do NOT use the Function constructor',
144
- }),
145
- functions(p).that().resideInFile(include).should().satisfy(functionNoSilentCatch()).rule({
146
- id: 'preset/recommended/no-silent-catch',
147
- because: 'a silent catch hides failures',
148
- suggestion: 'handle or rethrow the caught error (reference it in the catch)',
149
- imperative: 'Do NOT swallow errors in an empty catch',
150
- }),
151
- functions(p).that().resideInFile(include).should().satisfy(noEmptyBodies()).rule({
152
- id: 'preset/recommended/no-empty-bodies',
153
- because: 'an empty function body is usually an unfinished stub',
154
- suggestion: 'implement the body or remove the function',
155
- imperative: 'Do NOT leave a function body empty',
156
- }),
163
+ ${leadBlock}
164
+
165
+ ${alternateBlock}
157
166
 
158
167
  // Add project-specific rules below — builders, no .check().
159
- // modules(p).that().resideInFolder('${sourceRoot}/core/**')
160
- // .should().notImportFrom('${sourceRoot}/app/**'),
168
+ // (Builders default to error; append .asSeverity('warn') to warn, not fail.)
169
+ // classes(p).that().resideInFolder('**/${sourceRoot}/services/**')
170
+ // .should().notContain(call('parseInt')),
171
+ // slices(p).matching('${sourceRoot}/features/*/').should().beFreeOfCycles(),
161
172
  ]
162
173
  `;
163
174
  }
164
- function agentGuardrailsRulesTemplate(tsconfig, sourceRoot) {
165
- const include = includeGlob(sourceRoot);
166
- return `import { project, functions, smells } from '@nielspeter/eess-ts'
167
- import { functionNoGenericErrors } from '@nielspeter/eess-ts/rules/errors'
168
- import { noStubComments, noEmptyBodies } from '@nielspeter/eess-ts/rules/hygiene'
175
+ /** import name, one-line description, and the fill-in call for a shape preset. */
176
+ function shapePresetSpec(preset, root) {
177
+ switch (preset) {
178
+ case 'layered':
179
+ return {
180
+ importName: 'layeredArchitecture',
181
+ describe: 'Layered architecture: dependencies flow downward, layers stay cycle-free.',
182
+ call: `layeredArchitecture(p, {
183
+ // Example globs — point these at your real layer folders (top to bottom).
184
+ layers: {
185
+ routes: '**/${root}/routes/**',
186
+ services: '**/${root}/services/**',
187
+ repositories: '**/${root}/repositories/**',
188
+ },
189
+ shared: ['**/${root}/shared/**'],
190
+ report: 'builders',
191
+ })`,
192
+ };
193
+ case 'strict-boundaries':
194
+ return {
195
+ importName: 'strictBoundaries',
196
+ describe: 'Feature boundaries: each folder imports only from itself and shared.',
197
+ call: `strictBoundaries(p, {
198
+ // Example glob — point this at your real feature folders.
199
+ folders: '**/${root}/features/*',
200
+ shared: ['**/${root}/shared/**'],
201
+ report: 'builders',
202
+ })`,
203
+ };
204
+ case 'data-layer':
205
+ return {
206
+ importName: 'dataLayerIsolation',
207
+ describe: 'Repository pattern: repositories extend a base class and throw typed errors.',
208
+ call: `dataLayerIsolation(p, {
209
+ // Example values — point at your repository folder and its real base class.
210
+ repositories: '**/${root}/repositories/**',
211
+ baseClass: 'BaseRepository',
212
+ requireTypedErrors: true,
213
+ report: 'builders',
214
+ })`,
215
+ };
216
+ }
217
+ // No default: the switch is exhaustive over ShapePreset. Adding a preset to
218
+ // SHAPE_PRESETS without a case here is a compile error (missing return).
219
+ }
220
+ function shapeRulesTemplate(preset, tsconfig, sourceRoot) {
221
+ const { importName, describe, call } = shapePresetSpec(preset, sourceRoot);
222
+ const recommendedCall = recommendedCallFor(sourceRoot);
223
+ return `import { project } from '@nielspeter/eess-ts'
224
+ import { recommended, ${importName} } from '@nielspeter/eess-ts/presets'
225
+ // Uncomment the imports you need for the examples below:
226
+ // import { classes, slices, call } from '@nielspeter/eess-ts'
169
227
 
170
- ${rulesHeader(tsconfig)}
171
- const include = '${include}'
228
+ const p = project('${tsconfig}')
172
229
 
173
- // Guardrails for the mistakes AI coding agents make most.
230
+ // Rules are collected into the default export; \`eess-ts check\` runs them.
174
231
  export default [
175
- functions(p).that().resideInFile(include).should().satisfy(functionNoGenericErrors()).rule({
176
- id: 'preset/agent/no-generic-errors',
177
- because: 'a generic Error loses the type/context callers need to handle it',
178
- suggestion: 'throw a domain-specific error (NotFoundError, ValidationError, …)',
179
- imperative: 'Do NOT throw new Error() — throw a domain-specific error class',
180
- }),
181
- functions(p).that().resideInFile(include).should().satisfy(noStubComments()).rule({
182
- id: 'preset/agent/no-stubs',
183
- because: 'stub comments (TODO/FIXME/"not implemented") ship unfinished work',
184
- suggestion: 'implement the body or remove the stub before committing',
185
- imperative: 'Do NOT leave stub comments in a function body',
186
- }),
187
- functions(p).that().resideInFile(include).should().satisfy(noEmptyBodies()).rule({
188
- id: 'preset/agent/no-empty-bodies',
189
- because: 'an empty function body is almost always an unfinished stub',
190
- suggestion: 'implement the body — every function must have at least one statement',
191
- imperative: 'Do NOT leave a function body empty',
192
- }),
193
- smells.duplicateBodies(p).withMinSimilarity(0.9).rule({
194
- id: 'preset/agent/no-copy-paste',
195
- because: 'near-identical bodies are copy-paste instead of reuse',
196
- suggestion: 'extract the shared logic into one function',
197
- imperative: 'Do NOT duplicate a function body — extract the shared logic',
198
- }),
232
+ // The recommended safety floor ships alongside the shape rules below.
233
+ ...${recommendedCall},
234
+
235
+ // ${describe}
236
+ // IMPORTANT: the globs below are examples. A glob that matches no files
237
+ // enforces NOTHING (a green run that checks nothing). Point them at your
238
+ // real folders before you trust the result.
239
+ ...${call},
199
240
 
200
- // Ban a specific call from being inlined (one rule per API):
201
- // import { call } from '@nielspeter/eess-ts'
202
- // functions(p).that().resideInFile(include).should().notContain(call('parseInt')),
241
+ // Add project-specific rules below — builders, no .check().
242
+ // (Builders default to error; append .asSeverity('warn') to warn, not fail.)
243
+ // classes(p).that().resideInFolder('**/${sourceRoot}/services/**')
244
+ // .should().notContain(call('parseInt')),
203
245
  ]
204
246
  `;
205
247
  }
@@ -236,24 +278,10 @@ function detectSourceRoot(cwd, tsconfig) {
236
278
  }
237
279
  return 'src';
238
280
  }
239
- /**
240
- * The first path segment of a glob, if it is a plausible literal source
241
- * directory. Rejects wildcards, `.`/`..`, and file-like segments (a dotted
242
- * extension, e.g. `vite.config.ts`) — a common `include` lists config files
243
- * before the source glob (`["vite.config.ts", "src/**\/*.ts"]`), and picking
244
- * the file would scaffold a glob that matches nothing (a silently vacuous rule
245
- * set — exactly what eess exists to prevent). Callers keep scanning past an
246
- * `undefined` to the next entry.
247
- */
281
+ /** The first path segment of a glob, if it is a literal directory (no wildcard). */
248
282
  function leadingDir(glob) {
249
283
  const first = glob.replace(/^\.\//, '').split('/')[0];
250
- if (first === undefined ||
251
- first === '' ||
252
- first === '.' ||
253
- first === '..' ||
254
- first.includes('*') ||
255
- /\.[a-z0-9]+$/i.test(first) // looks like a file (has an extension), not a dir
256
- ) {
284
+ if (first === undefined || first === '' || first === '.' || first.includes('*')) {
257
285
  return undefined;
258
286
  }
259
287
  return first;
@@ -293,11 +321,12 @@ function planPackageJson(cwd) {
293
321
  try {
294
322
  parsed = JSON.parse(raw);
295
323
  }
296
- catch (err) {
297
- // The skip reason IS the error handling — we surface it and leave the file
298
- // untouched rather than risk corrupting an unparseable package.json.
299
- void err;
300
- return { action: 'skip', reason: 'package.json is not valid JSON — skipped script entry' };
324
+ catch (error) {
325
+ return {
326
+ action: 'skip',
327
+ reason: 'package.json is not valid JSON — skipped script entry ' +
328
+ `(${error instanceof Error ? error.message : String(error)})`,
329
+ };
301
330
  }
302
331
  if (!isRecord(parsed)) {
303
332
  return { action: 'skip', reason: 'package.json is not an object — skipped script entry' };
@@ -320,15 +349,8 @@ function planPackageJson(cwd) {
320
349
  content += eol;
321
350
  return { action: 'write', path: pkgPath, content };
322
351
  }
323
- /**
324
- * Detect the indentation (a tab or N spaces) of an existing JSON file. A
325
- * minified single-line file (no newline) returns `''` so it stays compact
326
- * rather than being re-expanded to 2-space — keeping the write to the two added
327
- * scripts. Multi-line files default to 2 spaces when no indent is detected.
328
- */
352
+ /** Detect the indentation (a tab or N spaces) of an existing JSON file; default 2 spaces. */
329
353
  function detectIndent(raw) {
330
- if (!raw.includes('\n'))
331
- return '';
332
354
  const match = raw.match(/\n(\t+|[ ]+)"/);
333
355
  return match?.[1] ?? ' ';
334
356
  }
@@ -350,7 +372,7 @@ function printDryRun(staged, pkg, cwd, sourceRoot) {
350
372
  `build, warnings don't. Run \`eess-ts baseline\` before gating CI on \`arch\`.\n`);
351
373
  }
352
374
  }
353
- function printClosing(staged, pkg, cwd, sourceRoot) {
375
+ function printClosing(staged, pkg, cwd, sourceRoot, preset) {
354
376
  const scriptsAdded = pkg.action === 'write';
355
377
  const runCmd = scriptsAdded ? 'npm run arch' : 'npx eess-ts check';
356
378
  const baselineCmd = scriptsAdded ? 'npm run arch:baseline' : 'npx eess-ts baseline';
@@ -358,9 +380,15 @@ function printClosing(staged, pkg, cwd, sourceRoot) {
358
380
  if (!scriptsAdded && pkg.action === 'skip') {
359
381
  process.stdout.write(`Note: package.json script entry skipped — ${pkg.reason}.\n`);
360
382
  }
383
+ if (!isFloorPreset(preset)) {
384
+ process.stdout.write(`\n⚠ arch.rules.ts contains EXAMPLE folder globs for the '${preset}' preset. ` +
385
+ `Edit them to your real folders before trusting a green run — a glob that ` +
386
+ `matches no files enforces nothing.\n`);
387
+ }
361
388
  if (hasSource(cwd, sourceRoot)) {
362
389
  process.stdout.write(`\nThis codebase already has source under ${sourceRoot}/. Errors fail the build; ` +
363
- `warnings are advisory and never fail CI.\n` +
390
+ `warnings are advisory and never fail CI, except a finding that a rule\n` +
391
+ `enforces nothing.\n` +
364
392
  `To accept current violations as tracked legacy debt before gating CI, run ` +
365
393
  `\`${baselineCmd}\` and commit the result, then: \`${runCmd}\`.\n`);
366
394
  }
@@ -381,7 +409,4 @@ function hasSource(cwd, sourceRoot) {
381
409
  return false;
382
410
  }
383
411
  }
384
- function isRecord(value) {
385
- return value !== null && typeof value === 'object' && !Array.isArray(value);
386
- }
387
412
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Load a rule file or config module — natively when Node can, via jiti when it cannot.
3
+ *
4
+ * **Native first, and that ordering is the whole design.** A rule file loaded
5
+ * through jiti gets jiti's own module registry, so the copy of eess-ts it imports
6
+ * is a DIFFERENT instance from the CLI's. Two things break silently when that
7
+ * happens, both measured (plan 0165):
8
+ *
9
+ * - `instanceof ArchRuleError` is false for an error that is one, so
10
+ * `check.ts` skipped `ruleFileTruncated()` and a truncated run said nothing
11
+ * about the rules that never ran — bug 0029 reopened by the loader.
12
+ * (`isArchRuleError` in `core/errors.ts` fixes that half structurally, and it
13
+ * is worth keeping regardless: a consumer with two copies of eess-ts on disk
14
+ * hits it with no jiti involved.)
15
+ * - `execute-rule.ts`'s module-level `callerAggregatesReports` flag is set on
16
+ * the CLI's copy and read on the rule file's, so every configuration finding
17
+ * was written twice — once by the rule file and once by the CLI re-reporting
18
+ * the thrown error. That half CANNOT be fixed structurally: module state has
19
+ * no cross-registry identity to compare.
20
+ *
21
+ * So jiti is the fallback, not the default, and it is entered on exactly one
22
+ * condition: Node refused the file because the CONSUMER project is
23
+ * `"type": "commonjs"` and the file uses ESM syntax — bug 0074, what
24
+ * `npm init -y` writes. Everything else rethrows, including an `ArchRuleError`
25
+ * thrown by a self-executing rule file, which must never be retried (a second
26
+ * execution would print its findings twice).
27
+ */
28
+ export declare function importRuleModule(file: string, fresh: boolean): Promise<unknown>;
29
+ //# sourceMappingURL=import-rule-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-rule-module.d.ts","sourceRoot":"","sources":["../../src/cli/import-rule-module.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAarF"}