@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
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # @nielspeter/eess-ts
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@nielspeter/eess-ts)](https://www.npmjs.com/package/@nielspeter/eess-ts)
4
- [![CI](https://github.com/nielspeter/ts-archunit/actions/workflows/ci.yml/badge.svg)](https://github.com/nielspeter/ts-archunit/actions/workflows/ci.yml)
4
+ [![CI](https://github.com/nielspeter/eess/actions/workflows/ci.yml/badge.svg)](https://github.com/nielspeter/eess/actions/workflows/ci.yml)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
6
6
  [![Node.js >= 24](https://img.shields.io/badge/node-%3E%3D24-brightgreen)](https://nodejs.org/)
7
7
 
@@ -9,9 +9,9 @@
9
9
 
10
10
  Inspired by Java's [ArchUnit](https://www.archunit.org/). Powered by [ts-morph](https://ts-morph.com/).
11
11
 
12
- > **The TypeScript dialect of the [eess](../../README.md) family.** Formerly published as `@nielspeter/ts-archunit` — that name still works as an alias, so existing installs are unaffected. New projects should prefer `@nielspeter/eess-ts`.
12
+ > **The TypeScript dialect of the [eess](https://github.com/nielspeter/eess/blob/main/README.md) family.** Formerly published as `@nielspeter/ts-archunit` — that name still works as an alias, so existing installs are unaffected. New projects should prefer `@nielspeter/eess-ts`. Migrating? See [Migrating from ts-archunit](https://github.com/nielspeter/eess/blob/main/docs/migrating-from-ts-archunit.md).
13
13
 
14
- [Documentation](https://nielspeter.github.io/ts-archunit/) · [Getting Started](https://nielspeter.github.io/ts-archunit/getting-started) · [What Can It Check?](https://nielspeter.github.io/ts-archunit/what-to-check)
14
+ [Documentation](https://github.com/nielspeter/eess) · [Getting Started](https://github.com/nielspeter/eess/blob/main/docs/getting-started.md) · [What Can It Check?](https://github.com/nielspeter/eess/blob/main/docs/what-to-check.md)
15
15
 
16
16
  ## Quickstart — zero to a red gate
17
17
 
@@ -38,7 +38,7 @@ rm src/probe.ts # green again — and now you trust the green
38
38
 
39
39
  Then wire the rules into your agent's loop — CI annotations, a Claude Code
40
40
  hook, and an AGENTS.md block regenerated from the actual rules:
41
- [agent integration recipes](../../docs/agent-integration.md).
41
+ [agent integration recipes](https://github.com/nielspeter/eess/blob/main/docs/agent-integration.md).
42
42
 
43
43
  ## The Problem
44
44
 
@@ -56,7 +56,7 @@ Code review catches some of this. But at scale — with multiple agents generati
56
56
 
57
57
  ## The Solution
58
58
 
59
- ts-archunit turns your architecture decisions into executable tests. They run in CI. Violations show up inline on the PR with clear messages explaining **what's wrong, why it matters, and how to fix it** — exactly the context an agent needs to self-correct.
59
+ eess-ts turns your architecture decisions into executable tests. They run in CI. Violations show up inline on the PR with clear messages explaining **what's wrong, why it matters, and how to fix it** — exactly the context an agent needs to self-correct.
60
60
 
61
61
  ```typescript
62
62
  classes(p)
@@ -96,7 +96,7 @@ Every other tool (dependency-cruiser, eslint-plugin-boundaries, ts-arch) only ch
96
96
 
97
97
  AI agents don't violate architecture by importing wrong files. They violate it by **writing the wrong code in the right place** — inlining logic instead of delegating, using raw APIs instead of abstractions, skipping validation, throwing generic errors.
98
98
 
99
- ts-archunit checks what happens **inside** your functions:
99
+ eess-ts checks what happens **inside** your functions:
100
100
 
101
101
  ```typescript
102
102
  // "Services must delegate to repositories, not hardcode data"
@@ -119,22 +119,22 @@ functions(p)
119
119
  .check()
120
120
  ```
121
121
 
122
- | Capability | ts-archunit | [dependency-cruiser](https://github.com/sverweij/dependency-cruiser) | [eslint-plugin-boundaries](https://github.com/javierbrea/eslint-plugin-boundaries) | [Biome](https://biomejs.dev) | [ts-arch](https://github.com/ts-arch/ts-arch) |
123
- | -------------------------------------------------- | ----------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------- | --------------------------------------------- |
124
- | Import path rules | Yes | Yes | Yes | Yes | Yes |
125
- | **Body analysis** (what's called inside functions) | Yes | No | No | No | No |
126
- | **Type checking** (string vs typed union) | Yes | No | No | No | No |
127
- | JSX element rules | Yes | No | No | No | No |
128
- | Cross-layer rules | Yes | No | No | No | Partial |
129
- | Cycle detection | Yes | Yes | No | No | Yes |
130
- | Code smell detection (duplicate bodies) | Yes | No | No | No | No |
131
- | Code metrics (cyclomatic, LOC) | Yes | No | No | No | No |
132
- | Pattern matching (reusable rule templates) | Yes | No | No | No | No |
133
- | Baseline (gradual adoption) | Yes | No | No | No | No |
134
- | Diff-aware / PR-only checking | Yes | No | No | No | No |
135
- | Watch mode | Yes | No | No | Yes | No |
136
- | Inline exclusion comments | Yes | No | Via ESLint | Yes | No |
137
- | GitHub PR annotations | Yes | No | Via ESLint | No | No |
122
+ | Capability | eess-ts | [dependency-cruiser](https://github.com/sverweij/dependency-cruiser) | [eslint-plugin-boundaries](https://github.com/javierbrea/eslint-plugin-boundaries) | [Biome](https://biomejs.dev) | [ts-arch](https://github.com/ts-arch/ts-arch) |
123
+ | -------------------------------------------------- | ------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------- | --------------------------------------------- |
124
+ | Import path rules | Yes | Yes | Yes | Yes | Yes |
125
+ | **Body analysis** (what's called inside functions) | Yes | No | No | No | No |
126
+ | **Type checking** (string vs typed union) | Yes | No | No | No | No |
127
+ | JSX element rules | Yes | No | No | No | No |
128
+ | Cross-layer rules | Yes | No | No | No | Partial |
129
+ | Cycle detection | Yes | Yes | No | No | Yes |
130
+ | Code smell detection (duplicate bodies) | Yes | No | No | No | No |
131
+ | Code metrics (cyclomatic, LOC) | Yes | No | No | No | No |
132
+ | Pattern matching (reusable rule templates) | Yes | No | No | No | No |
133
+ | Baseline (gradual adoption) | Yes | No | No | No | No |
134
+ | Diff-aware / PR-only checking | Yes | No | No | No | No |
135
+ | Watch mode | Yes | No | No | Yes | No |
136
+ | Inline exclusion comments | Yes | No | Via ESLint | Yes | No |
137
+ | GitHub PR annotations | Yes | No | Via ESLint | No | No |
138
138
 
139
139
  ## Quick Start with Presets
140
140
 
@@ -175,7 +175,33 @@ layeredArchitecture(p, {
175
175
  - `recommended(p)` — a thin, universal safety floor (no `eval`, no Function constructor, no silent catches, no empty bodies) that fires ~never on healthy code.
176
176
  - `agentGuardrails(p, { src })` — the mistakes AI coding agents make most: generic errors, stub comments, empty bodies, copy-paste, and banned inline calls. Each rule carries `imperative` metadata for `explain --format agent`.
177
177
 
178
- Every preset returns `ArchViolation[]` and, by default, throws on any error-severity violation. Pass `{ report: 'return' }` to own emission, `{ report: 'warn' }` to report without failing, or `{ format: 'json' }` for machine-readable output — the caller owns reporting (ADR-008). Per-rule severity is tunable via `overrides`.
178
+ Every preset **runs its rules and throws** on any error-severity violation by
179
+ default — the caller owns reporting (ADR-008). What you pass depends on where you
180
+ are calling it:
181
+
182
+ | where | pass | why |
183
+ | --------------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
184
+ | **a rule file** (`arch.rules.ts`) | `{ report: 'builders' }` | returns the builders **without running them**, so the CLI runs them, reports once, and applies `--baseline` / `--changed` |
185
+ | a test, or your own runner | `{ report: 'return' }` | runs the rules and hands you `ArchViolation[]` to assert on |
186
+ | anywhere, advisory | `{ report: 'warn' }` | reports without failing |
187
+ | | `{ format: 'json' }` | machine-readable output |
188
+
189
+ **`'return'` in a rule file does not work.** A rule file spreads its presets into
190
+ `export default [...]`, so `'return'` splats the preset's _result_ — an
191
+ `ArchViolation[]` — into the rules array. What happens next depends on your
192
+ codebase, and **both outcomes are bad**:
193
+
194
+ | your codebase | what you get |
195
+ | -------------- | -------------------------------------------------------------------------------------------- |
196
+ | has violations | the loader rejects it: `default export entry [0] is not a rule builder (got object)`, exit 1 |
197
+ | **is clean** | the array is **empty**, so the file exports `[]` and every rule silently disappears |
198
+
199
+ `tsc --noEmit` catches neither — a spread of the wrong array type is not a type
200
+ error. `check` now refuses a rule file that contributed no rules, so the clean case
201
+ fails too rather than printing a green tick; before that it exited 0. Use
202
+ `'builders'` in a rule file. `eess-ts init` scaffolds it.
203
+
204
+ Per-rule severity is tunable via `overrides`.
179
205
 
180
206
  ### Scaffold a starter setup
181
207
 
@@ -339,14 +365,14 @@ smells
339
365
 
340
366
  ### More Features
341
367
 
342
- - **[Call matching](https://nielspeter.github.io/ts-archunit/calls)** — framework-agnostic route/handler inspection (Express, Fastify, Hono)
343
- - **[Scoped rules](https://nielspeter.github.io/ts-archunit/body-analysis)** — `within(routes).functions()` for callback-level rules
344
- - **[Pattern templates](https://nielspeter.github.io/ts-archunit/patterns)** — enforce return type shapes (`{ items, total, skip, limit }`)
345
- - **[GraphQL rules](https://nielspeter.github.io/ts-archunit/graphql)** — schema and resolver conventions
346
- - **[Cross-layer validation](https://nielspeter.github.io/ts-archunit/cross-layer)** — route/schema/SDK consistency
347
- - **[Custom predicates and conditions](https://nielspeter.github.io/ts-archunit/custom-rules)** — `definePredicate()`, `defineCondition()`, `and`/`or`/`not` combinators
348
- - **[Metrics](https://nielspeter.github.io/ts-archunit/metrics)** — cyclomatic complexity, lines of code, method count limits
349
- - **[CLI](https://nielspeter.github.io/ts-archunit/cli)** — `check`, `baseline`, `explain`, `--watch` mode
368
+ - **[Call matching](https://github.com/nielspeter/eess/blob/main/docs/calls.md)** — framework-agnostic route/handler inspection (Express, Fastify, Hono)
369
+ - **[Scoped rules](https://github.com/nielspeter/eess/blob/main/docs/body-analysis.md)** — `within(routes).functions()` for callback-level rules
370
+ - **[Pattern templates](https://github.com/nielspeter/eess/blob/main/docs/patterns.md)** — enforce return type shapes (`{ items, total, skip, limit }`)
371
+ - **[GraphQL rules](https://github.com/nielspeter/eess/blob/main/docs/graphql.md)** — schema and resolver conventions
372
+ - **[Cross-layer validation](https://github.com/nielspeter/eess/blob/main/docs/cross-layer.md)** — route/schema/SDK consistency
373
+ - **[Custom predicates and conditions](https://github.com/nielspeter/eess/blob/main/docs/custom-rules.md)** — `definePredicate()`, `defineCondition()`, `and`/`or`/`not` combinators
374
+ - **[Metrics](https://github.com/nielspeter/eess/blob/main/docs/metrics.md)** — cyclomatic complexity, lines of code, method count limits
375
+ - **[CLI](https://github.com/nielspeter/eess/blob/main/docs/cli.md)** — `check`, `baseline`, `explain`, `--watch` mode
350
376
 
351
377
  ## Entry Points
352
378
 
@@ -363,7 +389,7 @@ smells
363
389
 
364
390
  ## Compared to Other Tools
365
391
 
366
- | Capability | ts-archunit | [dependency-cruiser](https://github.com/sverweij/dependency-cruiser) | [ArchUnitTS](https://github.com/LukasNiessen/ArchUnitTS) | [Biome](https://biomejs.dev) | [ts-arch](https://github.com/ts-arch/ts-arch) |
392
+ | Capability | eess-ts | [dependency-cruiser](https://github.com/sverweij/dependency-cruiser) | [ArchUnitTS](https://github.com/LukasNiessen/ArchUnitTS) | [Biome](https://biomejs.dev) | [ts-arch](https://github.com/ts-arch/ts-arch) |
367
393
  | ------------------------------------------------- | --------------- | -------------------------------------------------------------------- | -------------------------------------------------------- | ---------------------------- | --------------------------------------------- |
368
394
  | Import path rules | Yes | Yes | Yes | Yes (`noRestrictedImports`) | Yes |
369
395
  | **Body analysis** (calls, access, constructors) | Yes | No | No | No | No |
@@ -390,17 +416,17 @@ smells
390
416
  | License checking | No | Yes | No | No | No |
391
417
  | Nx monorepo support | No | No | Yes | No | No |
392
418
 
393
- **Use ts-archunit** when you need to enforce what happens _inside_ functions — call patterns, error types, missing delegation, stub comments — and when AI agents are generating code that needs architectural guardrails. This is the only tool that catches "service calls parseInt instead of extractCount()", flags duplicate function bodies as smells, and can restrict checking to only the files changed in a PR.
419
+ **Use eess-ts** when you need to enforce what happens _inside_ functions — call patterns, error types, missing delegation, stub comments — and when AI agents are generating code that needs architectural guardrails. This is the only tool that catches "service calls parseInt instead of extractCount()", flags duplicate function bodies as smells, and can restrict checking to only the files changed in a PR.
394
420
 
395
421
  **Use dependency-cruiser** when you only need import direction rules and want fast graph visualization, license compliance checking, or stability metrics. It's faster (no ts-morph project load) and has mature HTML/dot reporting.
396
422
 
397
423
  **Use ArchUnitTS** when you need OO metrics (LCOM cohesion, coupling factor, distance from main sequence), PlantUML diagram validation, or Nx monorepo project-graph awareness.
398
424
 
399
- **Use Biome** when you want a fast Rust-based lint + format toolchain and only need lint-level import restrictions (`noRestrictedImports`) — not architecture rules over class hierarchies, function bodies, or slice cycles. Pair it with ts-archunit if you want both.
425
+ **Use Biome** when you want a fast Rust-based lint + format toolchain and only need lint-level import restrictions (`noRestrictedImports`) — not architecture rules over class hierarchies, function bodies, or slice cycles. Pair it with eess-ts if you want both.
400
426
 
401
427
  **Use ts-arch** when you want the classic ArchUnit-style fluent API scoped to file/folder dependency rules and layered slices, and don't need body analysis, type-checker rules, or CI integrations like baselines, diff-aware runs, or GitHub annotations.
402
428
 
403
- **Use ts-archunit + dependency-cruiser together** if you want both body-level enforcement and dependency graph visualization.
429
+ **Use eess-ts + dependency-cruiser together** if you want both body-level enforcement and dependency graph visualization.
404
430
 
405
431
  ## Install
406
432
 
@@ -1,5 +1,5 @@
1
1
  import type { ArchProject } from '../core/project.js';
2
- import { RuleBuilder } from '@nielspeter/eess';
2
+ import { RuleBuilder } from '../core/rule-builder.js';
3
3
  import type { ConditionContext } from '@nielspeter/eess';
4
4
  import type { ExpressionMatcher } from '../helpers/matchers.js';
5
5
  import type { ArchCall } from '../models/arch-call.js';
@@ -36,53 +36,98 @@ import type { ArchCall } from '../models/arch-call.js';
36
36
  * .check()
37
37
  * ```
38
38
  */
39
- export declare class CallRuleBuilder extends RuleBuilder<ArchCall, ArchProject> {
39
+ export declare class CallRuleBuilder extends RuleBuilder<ArchCall> {
40
40
  /**
41
41
  * Argument index to fold into the violation element/message. Set by
42
42
  * `.identifiedByArg(index)`. Threaded into `ConditionContext.identifyByArgument`
43
43
  * so the eight `archCall.getName()` sites in `src/conditions/call.ts`
44
44
  * can build identity-keyed violation strings.
45
45
  *
46
- * Survives `fork()` via `Object.assign(fork, this)` in the base class
47
- * (primitive field; no explicit copy needed). See plan 0057.
46
+ * Survives a copy via `shallowClone` in `TerminalBuilder.copy` (a primitive
47
+ * field, so no `copy()` override is needed). See plan 0057.
48
48
  */
49
49
  protected _identifyByArgument?: number;
50
50
  protected getElements(): ArchCall[];
51
51
  protected buildConditionContext(): ConditionContext;
52
52
  /**
53
- * Filter to calls whose callee name matches the pattern.
54
- * A string is compiled to a RegExp. For `app.get(...)` the name is `app.get`.
53
+ * Narrows the selection to call expressions that have a name matching `pattern`.
54
+ *
55
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
56
+ * becomes an assertion. Written after `.should()` it still filters, and the
57
+ * assertion gate reports it as a misplaced predicate rather than letting the
58
+ * rule pass having asserted nothing.
55
59
  */
56
60
  haveNameMatching(pattern: RegExp | string): this;
57
- /** Filter to calls whose callee name starts with the given prefix. */
61
+ /**
62
+ * Narrows the selection to call expressions that have a name starting with `prefix`.
63
+ *
64
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
65
+ * becomes an assertion. Written after `.should()` it still filters, and the
66
+ * assertion gate reports it as a misplaced predicate rather than letting the
67
+ * rule pass having asserted nothing.
68
+ */
58
69
  haveNameStartingWith(prefix: string): this;
59
- /** Filter to calls whose callee name ends with the given suffix. */
70
+ /**
71
+ * Narrows the selection to call expressions that have a name ending with `suffix`.
72
+ *
73
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
74
+ * becomes an assertion. Written after `.should()` it still filters, and the
75
+ * assertion gate reports it as a misplaced predicate rather than letting the
76
+ * rule pass having asserted nothing.
77
+ */
60
78
  haveNameEndingWith(suffix: string): this;
61
- /** Filter to calls in a file whose absolute path matches the glob. */
79
+ /**
80
+ * Narrows the selection to call expressions that reside in a file matching `glob`.
81
+ *
82
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
83
+ * becomes an assertion. Written after `.should()` it still filters, and the
84
+ * assertion gate reports it as a misplaced predicate rather than letting the
85
+ * rule pass having asserted nothing.
86
+ */
62
87
  resideInFile(glob: string): this;
63
- /** Filter to calls in a folder whose path matches the glob. */
88
+ /**
89
+ * Narrows the selection to call expressions that reside in a folder matching `glob`.
90
+ *
91
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
92
+ * becomes an assertion. Written after `.should()` it still filters, and the
93
+ * assertion gate reports it as a misplaced predicate rather than letting the
94
+ * rule pass having asserted nothing.
95
+ */
64
96
  resideInFolder(glob: string): this;
65
97
  /**
66
- * Filter to method calls on the object with the exact given name.
67
- * For `app.get(...)` use `onObject('app')`; for `router.route.get(...)`
68
- * use `onObject('router.route')`. Optional chaining is normalized.
98
+ * Narrows the selection to call expressions that are called on the object `name`.
99
+ *
100
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
101
+ * becomes an assertion. Written after `.should()` it still filters, and the
102
+ * assertion gate reports it as a misplaced predicate rather than letting the
103
+ * rule pass having asserted nothing.
69
104
  */
70
105
  onObject(name: string): this;
71
106
  /**
72
- * Filter to calls whose method name matches. Accepts an exact string
73
- * or a regex; also matches bare function calls (`handleError(...)`).
107
+ * Narrows the selection to call expressions that call a method matching `nameOrRegex`.
108
+ *
109
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
110
+ * becomes an assertion. Written after `.should()` it still filters, and the
111
+ * assertion gate reports it as a misplaced predicate rather than letting the
112
+ * rule pass having asserted nothing.
74
113
  */
75
114
  withMethod(nameOrRegex: string | RegExp): this;
76
115
  /**
77
- * Filter to calls whose argument at `index` matches the pattern, tested
78
- * against the argument's source text (so it matches identifiers and
79
- * expressions, not just string literals).
116
+ * Narrows the selection to call expressions that have argument `index` matching `pattern`.
117
+ *
118
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
119
+ * becomes an assertion. Written after `.should()` it still filters, and the
120
+ * assertion gate reports it as a misplaced predicate rather than letting the
121
+ * rule pass having asserted nothing.
80
122
  */
81
123
  withArgMatching(index: number, pattern: string | RegExp): this;
82
124
  /**
83
- * Filter to calls whose argument at `index` is a string literal whose
84
- * value matches the glob. Non-literal arguments (variables, expressions)
85
- * never match.
125
+ * Narrows the selection to call expressions that have string argument `index` matching `glob`.
126
+ *
127
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
128
+ * becomes an assertion. Written after `.should()` it still filters, and the
129
+ * assertion gate reports it as a misplaced predicate rather than letting the
130
+ * rule pass having asserted nothing.
86
131
  */
87
132
  withStringArg(index: number, glob: string): this;
88
133
  /**
@@ -166,11 +211,6 @@ export declare class CallRuleBuilder extends RuleBuilder<ArchCall, ArchProject>
166
211
  * Use `notHaveCallbackContaining` when you only want to search callback bodies.
167
212
  */
168
213
  notHaveArgumentContaining(matcher: ExpressionMatcher): this;
169
- /**
170
- * Get the underlying ArchProject.
171
- * Used by within() to create scoped builders.
172
- */
173
- getProject(): ArchProject;
174
214
  /**
175
215
  * Get the ArchCall elements that match the current predicate chain.
176
216
  * Used by within() to extract callbacks from matched calls.
@@ -1 +1 @@
1
- {"version":3,"file":"call-rule-builder.d.ts","sourceRoot":"","sources":["../../src/builders/call-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAyBtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,eAAgB,SAAQ,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC;IACrE;;;;;;;;OAQG;IACH,SAAS,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAEtC,SAAS,CAAC,WAAW,IAAI,QAAQ,EAAE;cAIhB,qBAAqB,IAAI,gBAAgB;IAS5D;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIhD,sEAAsE;IACtE,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI1C,oEAAoE;IACpE,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC,sEAAsE;IACtE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,+DAA+D;IAC/D,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASlC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B;;;OAGG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI9C;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI9D;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOpC;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIxD;;OAEG;IACH,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAI3D;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,wBAAwB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlD;;OAEG;IACH,2BAA2B,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIrD;;;;;OAKG;IACH,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIxD;;;;;OAKG;IACH,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAM3D;;;OAGG;IACH,UAAU,IAAI,WAAW;IAIzB;;;OAGG;IACH,eAAe,IAAI,QAAQ,EAAE;CAG9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,CAErD"}
1
+ {"version":3,"file":"call-rule-builder.d.ts","sourceRoot":"","sources":["../../src/builders/call-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AA6BtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,eAAgB,SAAQ,WAAW,CAAC,QAAQ,CAAC;IACxD;;;;;;;;OAQG;IACH,SAAS,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAEtC,SAAS,CAAC,WAAW,IAAI,QAAQ,EAAE;cAMhB,qBAAqB,IAAI,gBAAgB;IAS5D;;;;;;;OAOG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIhD;;;;;;;OAOG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI1C;;;;;;;OAOG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC;;;;;;;OAOG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;;;;OAOG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASlC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B;;;;;;;OAOG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI9C;;;;;;;OAOG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI9D;;;;;;;OAOG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQpC;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIxD;;OAEG;IACH,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAI3D;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,wBAAwB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlD;;OAEG;IACH,2BAA2B,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIrD;;;;;OAKG;IACH,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIxD;;;;;OAKG;IACH,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAM3D;;;OAGG;IACH,eAAe,IAAI,QAAQ,EAAE;CAG9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,CAErD"}
@@ -1,5 +1,8 @@
1
- import { RuleBuilder } from '@nielspeter/eess';
1
+ import { RuleBuilder } from '../core/rule-builder.js';
2
2
  import { collectCalls } from '../models/arch-call.js';
3
+ import { createElementCache, SOLE_POPULATION } from '../core/element-cache.js';
4
+ /** One collection per project, shared by every rule built from it (plan 0075). */
5
+ const cache = createElementCache();
3
6
  import { haveNameMatching as identityHaveNameMatching, haveNameStartingWith as identityHaveNameStartingWith, haveNameEndingWith as identityHaveNameEndingWith, resideInFile as identityResideInFile, resideInFolder as identityResideInFolder, } from '../predicates/identity.js';
4
7
  import { onObject as callOnObject, withMethod as callWithMethod, withArgMatching as callWithArgMatching, withStringArg as callWithStringArg, } from '../predicates/call.js';
5
8
  import { haveCallbackContaining as conditionHaveCallbackContaining, notHaveCallbackContaining as conditionNotHaveCallbackContaining, notExist as callNotExist, haveArgumentWithProperty as conditionHaveArgumentWithProperty, notHaveArgumentWithProperty as conditionNotHaveArgumentWithProperty, haveArgumentContaining as conditionHaveArgumentContaining, notHaveArgumentContaining as conditionNotHaveArgumentContaining, } from '../conditions/call.js';
@@ -43,12 +46,12 @@ export class CallRuleBuilder extends RuleBuilder {
43
46
  * so the eight `archCall.getName()` sites in `src/conditions/call.ts`
44
47
  * can build identity-keyed violation strings.
45
48
  *
46
- * Survives `fork()` via `Object.assign(fork, this)` in the base class
47
- * (primitive field; no explicit copy needed). See plan 0057.
49
+ * Survives a copy via `shallowClone` in `TerminalBuilder.copy` (a primitive
50
+ * field, so no `copy()` override is needed). See plan 0057.
48
51
  */
49
52
  _identifyByArgument;
50
53
  getElements() {
51
- return this.project.getSourceFiles().flatMap(collectCalls);
54
+ return cache.get(this.project, SOLE_POPULATION, () => this.project.getSourceFiles().flatMap(collectCalls));
52
55
  }
53
56
  buildConditionContext() {
54
57
  return {
@@ -58,58 +61,103 @@ export class CallRuleBuilder extends RuleBuilder {
58
61
  }
59
62
  // --- Identity predicates (subset: no areExported/areNotExported) ---
60
63
  /**
61
- * Filter to calls whose callee name matches the pattern.
62
- * A string is compiled to a RegExp. For `app.get(...)` the name is `app.get`.
64
+ * Narrows the selection to call expressions that have a name matching `pattern`.
65
+ *
66
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
67
+ * becomes an assertion. Written after `.should()` it still filters, and the
68
+ * assertion gate reports it as a misplaced predicate rather than letting the
69
+ * rule pass having asserted nothing.
63
70
  */
64
71
  haveNameMatching(pattern) {
65
72
  return this.addPredicate(identityHaveNameMatching(pattern));
66
73
  }
67
- /** Filter to calls whose callee name starts with the given prefix. */
74
+ /**
75
+ * Narrows the selection to call expressions that have a name starting with `prefix`.
76
+ *
77
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
78
+ * becomes an assertion. Written after `.should()` it still filters, and the
79
+ * assertion gate reports it as a misplaced predicate rather than letting the
80
+ * rule pass having asserted nothing.
81
+ */
68
82
  haveNameStartingWith(prefix) {
69
83
  return this.addPredicate(identityHaveNameStartingWith(prefix));
70
84
  }
71
- /** Filter to calls whose callee name ends with the given suffix. */
85
+ /**
86
+ * Narrows the selection to call expressions that have a name ending with `suffix`.
87
+ *
88
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
89
+ * becomes an assertion. Written after `.should()` it still filters, and the
90
+ * assertion gate reports it as a misplaced predicate rather than letting the
91
+ * rule pass having asserted nothing.
92
+ */
72
93
  haveNameEndingWith(suffix) {
73
94
  return this.addPredicate(identityHaveNameEndingWith(suffix));
74
95
  }
75
- /** Filter to calls in a file whose absolute path matches the glob. */
96
+ /**
97
+ * Narrows the selection to call expressions that reside in a file matching `glob`.
98
+ *
99
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
100
+ * becomes an assertion. Written after `.should()` it still filters, and the
101
+ * assertion gate reports it as a misplaced predicate rather than letting the
102
+ * rule pass having asserted nothing.
103
+ */
76
104
  resideInFile(glob) {
77
105
  return this.addPredicate(identityResideInFile(glob));
78
106
  }
79
- /** Filter to calls in a folder whose path matches the glob. */
107
+ /**
108
+ * Narrows the selection to call expressions that reside in a folder matching `glob`.
109
+ *
110
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
111
+ * becomes an assertion. Written after `.should()` it still filters, and the
112
+ * assertion gate reports it as a misplaced predicate rather than letting the
113
+ * rule pass having asserted nothing.
114
+ */
80
115
  resideInFolder(glob) {
81
116
  return this.addPredicate(identityResideInFolder(glob));
82
117
  }
83
118
  // Note: areExported() and areNotExported() are intentionally omitted.
84
- // Call expressions cannot be exported. See spec section 5.1.
119
+ // Call expressions cannot are exported. See spec section 5.1.
85
120
  // --- Call-specific predicates ---
86
121
  /**
87
- * Filter to method calls on the object with the exact given name.
88
- * For `app.get(...)` use `onObject('app')`; for `router.route.get(...)`
89
- * use `onObject('router.route')`. Optional chaining is normalized.
122
+ * Narrows the selection to call expressions that are called on the object `name`.
123
+ *
124
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
125
+ * becomes an assertion. Written after `.should()` it still filters, and the
126
+ * assertion gate reports it as a misplaced predicate rather than letting the
127
+ * rule pass having asserted nothing.
90
128
  */
91
129
  onObject(name) {
92
130
  return this.addPredicate(callOnObject(name));
93
131
  }
94
132
  /**
95
- * Filter to calls whose method name matches. Accepts an exact string
96
- * or a regex; also matches bare function calls (`handleError(...)`).
133
+ * Narrows the selection to call expressions that call a method matching `nameOrRegex`.
134
+ *
135
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
136
+ * becomes an assertion. Written after `.should()` it still filters, and the
137
+ * assertion gate reports it as a misplaced predicate rather than letting the
138
+ * rule pass having asserted nothing.
97
139
  */
98
140
  withMethod(nameOrRegex) {
99
141
  return this.addPredicate(callWithMethod(nameOrRegex));
100
142
  }
101
143
  /**
102
- * Filter to calls whose argument at `index` matches the pattern, tested
103
- * against the argument's source text (so it matches identifiers and
104
- * expressions, not just string literals).
144
+ * Narrows the selection to call expressions that have argument `index` matching `pattern`.
145
+ *
146
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
147
+ * becomes an assertion. Written after `.should()` it still filters, and the
148
+ * assertion gate reports it as a misplaced predicate rather than letting the
149
+ * rule pass having asserted nothing.
105
150
  */
106
151
  withArgMatching(index, pattern) {
107
152
  return this.addPredicate(callWithArgMatching(index, pattern));
108
153
  }
109
154
  /**
110
- * Filter to calls whose argument at `index` is a string literal whose
111
- * value matches the glob. Non-literal arguments (variables, expressions)
112
- * never match.
155
+ * Narrows the selection to call expressions that have string argument `index` matching `glob`.
156
+ *
157
+ * **Predicate only**, unlike the dual-use methods on this builder: it never
158
+ * becomes an assertion. Written after `.should()` it still filters, and the
159
+ * assertion gate reports it as a misplaced predicate rather than letting the
160
+ * rule pass having asserted nothing.
113
161
  */
114
162
  withStringArg(index, glob) {
115
163
  return this.addPredicate(callWithStringArg(index, glob));
@@ -162,8 +210,9 @@ export class CallRuleBuilder extends RuleBuilder {
162
210
  * @param index — zero-based argument index to fold into the identity.
163
211
  */
164
212
  identifiedByArg(index) {
165
- this._identifyByArgument = index;
166
- return this;
213
+ const next = this.copy();
214
+ next._identifyByArgument = index;
215
+ return next;
167
216
  }
168
217
  // --- Condition methods ---
169
218
  /**
@@ -215,13 +264,6 @@ export class CallRuleBuilder extends RuleBuilder {
215
264
  return this.addCondition(conditionNotHaveArgumentContaining(matcher));
216
265
  }
217
266
  // --- Public accessors (used by plan 0015 within()) ---
218
- /**
219
- * Get the underlying ArchProject.
220
- * Used by within() to create scoped builders.
221
- */
222
- getProject() {
223
- return this.project;
224
- }
225
267
  /**
226
268
  * Get the ArchCall elements that match the current predicate chain.
227
269
  * Used by within() to extract callbacks from matched calls.
@@ -1 +1 @@
1
- {"version":3,"file":"call-rule-builder.js","sourceRoot":"","sources":["../../src/builders/call-rule-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-rule-builder.js","sourceRoot":"","sources":["../../src/builders/call-rule-builder.ts"],"names":[],"mappings":"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"}