@nielspeter/eess-ts 0.2.1 → 0.5.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 (467) 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 +75 -32
  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 +141 -55
  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 +385 -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 +182 -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 +177 -39
  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 +16 -19
  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 +243 -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 +109 -42
  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 +8 -3
  55. package/dist/cli/commands/baseline.d.ts.map +1 -1
  56. package/dist/cli/commands/baseline.js +111 -7
  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 +385 -47
  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 +47 -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 +101 -43
  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 +25 -32
  85. package/dist/cli/load-rules.js.map +1 -1
  86. package/dist/cli/resolve-config.d.ts +0 -8
  87. package/dist/cli/resolve-config.d.ts.map +1 -1
  88. package/dist/cli/resolve-config.js +25 -55
  89. package/dist/cli/resolve-config.js.map +1 -1
  90. package/dist/cli/rule-file-findings.d.ts +178 -0
  91. package/dist/cli/rule-file-findings.d.ts.map +1 -0
  92. package/dist/cli/rule-file-findings.js +351 -0
  93. package/dist/cli/rule-file-findings.js.map +1 -0
  94. package/dist/cli/watch.d.ts +17 -34
  95. package/dist/cli/watch.d.ts.map +1 -1
  96. package/dist/cli/watch.js +14 -129
  97. package/dist/cli/watch.js.map +1 -1
  98. package/dist/conditions/body-analysis-function.d.ts.map +1 -1
  99. package/dist/conditions/body-analysis-function.js +16 -7
  100. package/dist/conditions/body-analysis-function.js.map +1 -1
  101. package/dist/conditions/body-analysis-module.d.ts.map +1 -1
  102. package/dist/conditions/body-analysis-module.js +14 -9
  103. package/dist/conditions/body-analysis-module.js.map +1 -1
  104. package/dist/conditions/body-analysis.d.ts.map +1 -1
  105. package/dist/conditions/body-analysis.js +16 -7
  106. package/dist/conditions/body-analysis.js.map +1 -1
  107. package/dist/conditions/call.d.ts.map +1 -1
  108. package/dist/conditions/call.js +41 -19
  109. package/dist/conditions/call.js.map +1 -1
  110. package/dist/conditions/catch-analysis.d.ts +2 -1
  111. package/dist/conditions/catch-analysis.d.ts.map +1 -1
  112. package/dist/conditions/catch-analysis.js.map +1 -1
  113. package/dist/conditions/cross-layer.d.ts +2 -10
  114. package/dist/conditions/cross-layer.d.ts.map +1 -1
  115. package/dist/conditions/cross-layer.js +227 -23
  116. package/dist/conditions/cross-layer.js.map +1 -1
  117. package/dist/conditions/dependency.d.ts +35 -6
  118. package/dist/conditions/dependency.d.ts.map +1 -1
  119. package/dist/conditions/dependency.js +299 -45
  120. package/dist/conditions/dependency.js.map +1 -1
  121. package/dist/conditions/exports.d.ts.map +1 -1
  122. package/dist/conditions/exports.js +41 -37
  123. package/dist/conditions/exports.js.map +1 -1
  124. package/dist/conditions/function.d.ts.map +1 -1
  125. package/dist/conditions/function.js +19 -5
  126. package/dist/conditions/function.js.map +1 -1
  127. package/dist/conditions/helpers.d.ts +2 -1
  128. package/dist/conditions/helpers.d.ts.map +1 -1
  129. package/dist/conditions/helpers.js +4 -1
  130. package/dist/conditions/helpers.js.map +1 -1
  131. package/dist/conditions/jsx.d.ts.map +1 -1
  132. package/dist/conditions/jsx.js +7 -2
  133. package/dist/conditions/jsx.js.map +1 -1
  134. package/dist/conditions/match-identity.d.ts +43 -0
  135. package/dist/conditions/match-identity.d.ts.map +1 -0
  136. package/dist/conditions/match-identity.js +43 -0
  137. package/dist/conditions/match-identity.js.map +1 -0
  138. package/dist/conditions/members.d.ts.map +1 -1
  139. package/dist/conditions/members.js +20 -6
  140. package/dist/conditions/members.js.map +1 -1
  141. package/dist/conditions/reverse-dependency.d.ts +18 -5
  142. package/dist/conditions/reverse-dependency.d.ts.map +1 -1
  143. package/dist/conditions/reverse-dependency.js +155 -93
  144. package/dist/conditions/reverse-dependency.js.map +1 -1
  145. package/dist/conditions/slice.d.ts +86 -2
  146. package/dist/conditions/slice.d.ts.map +1 -1
  147. package/dist/conditions/slice.js +234 -53
  148. package/dist/conditions/slice.js.map +1 -1
  149. package/dist/conditions/structural.d.ts.map +1 -1
  150. package/dist/conditions/structural.js +16 -4
  151. package/dist/conditions/structural.js.map +1 -1
  152. package/dist/core/check-all.d.ts +19 -0
  153. package/dist/core/check-all.d.ts.map +1 -0
  154. package/dist/core/check-all.js +150 -0
  155. package/dist/core/check-all.js.map +1 -0
  156. package/dist/core/combinators.d.ts +48 -0
  157. package/dist/core/combinators.d.ts.map +1 -0
  158. package/dist/core/combinators.js +49 -0
  159. package/dist/core/combinators.js.map +1 -0
  160. package/dist/core/descendant-cache.d.ts +36 -0
  161. package/dist/core/descendant-cache.d.ts.map +1 -0
  162. package/dist/core/descendant-cache.js +117 -0
  163. package/dist/core/descendant-cache.js.map +1 -0
  164. package/dist/core/diagnose.d.ts +234 -0
  165. package/dist/core/diagnose.d.ts.map +1 -0
  166. package/dist/core/diagnose.js +390 -0
  167. package/dist/core/diagnose.js.map +1 -0
  168. package/dist/core/disk-set.d.ts +48 -0
  169. package/dist/core/disk-set.d.ts.map +1 -0
  170. package/dist/core/disk-set.js +218 -0
  171. package/dist/core/disk-set.js.map +1 -0
  172. package/dist/core/element-cache.d.ts +75 -0
  173. package/dist/core/element-cache.d.ts.map +1 -0
  174. package/dist/core/element-cache.js +32 -0
  175. package/dist/core/element-cache.js.map +1 -0
  176. package/dist/core/empty-project-advice.d.ts +75 -0
  177. package/dist/core/empty-project-advice.d.ts.map +1 -0
  178. package/dist/core/empty-project-advice.js +61 -0
  179. package/dist/core/empty-project-advice.js.map +1 -0
  180. package/dist/core/exclusion-comments.d.ts +19 -0
  181. package/dist/core/exclusion-comments.d.ts.map +1 -0
  182. package/dist/core/exclusion-comments.js +7 -0
  183. package/dist/core/exclusion-comments.js.map +1 -0
  184. package/dist/core/execute-rule.d.ts +158 -0
  185. package/dist/core/execute-rule.d.ts.map +1 -0
  186. package/dist/core/execute-rule.js +666 -0
  187. package/dist/core/execute-rule.js.map +1 -0
  188. package/dist/core/glob-diagnosis.d.ts +78 -0
  189. package/dist/core/glob-diagnosis.d.ts.map +1 -0
  190. package/dist/core/glob-diagnosis.js +134 -0
  191. package/dist/core/glob-diagnosis.js.map +1 -0
  192. package/dist/core/glob-evaluator.d.ts +48 -0
  193. package/dist/core/glob-evaluator.d.ts.map +1 -0
  194. package/dist/core/glob-evaluator.js +89 -0
  195. package/dist/core/glob-evaluator.js.map +1 -0
  196. package/dist/core/import-candidates.d.ts +60 -0
  197. package/dist/core/import-candidates.d.ts.map +1 -0
  198. package/dist/core/import-candidates.js +93 -0
  199. package/dist/core/import-candidates.js.map +1 -0
  200. package/dist/core/import-options.d.ts +55 -2
  201. package/dist/core/import-options.d.ts.map +1 -1
  202. package/dist/core/import-options.js +64 -0
  203. package/dist/core/import-options.js.map +1 -1
  204. package/dist/core/invalidate-on-modify.d.ts +20 -0
  205. package/dist/core/invalidate-on-modify.d.ts.map +1 -0
  206. package/dist/core/invalidate-on-modify.js +26 -0
  207. package/dist/core/invalidate-on-modify.js.map +1 -0
  208. package/dist/core/line-index.d.ts +3 -0
  209. package/dist/core/line-index.d.ts.map +1 -0
  210. package/dist/core/line-index.js +227 -0
  211. package/dist/core/line-index.js.map +1 -0
  212. package/dist/core/metric-violation.d.ts +86 -0
  213. package/dist/core/metric-violation.d.ts.map +1 -0
  214. package/dist/core/metric-violation.js +132 -0
  215. package/dist/core/metric-violation.js.map +1 -0
  216. package/dist/core/module-edges.d.ts +361 -0
  217. package/dist/core/module-edges.d.ts.map +1 -0
  218. package/dist/core/module-edges.js +593 -0
  219. package/dist/core/module-edges.js.map +1 -0
  220. package/dist/core/object-literal-functions.d.ts +42 -0
  221. package/dist/core/object-literal-functions.d.ts.map +1 -0
  222. package/dist/core/object-literal-functions.js +75 -0
  223. package/dist/core/object-literal-functions.js.map +1 -0
  224. package/dist/core/orphan-exclusions.d.ts +44 -0
  225. package/dist/core/orphan-exclusions.d.ts.map +1 -0
  226. package/dist/core/orphan-exclusions.js +224 -0
  227. package/dist/core/orphan-exclusions.js.map +1 -0
  228. package/dist/core/pair-condition.d.ts +32 -3
  229. package/dist/core/pair-condition.d.ts.map +1 -1
  230. package/dist/core/path-universe.d.ts +22 -0
  231. package/dist/core/path-universe.d.ts.map +1 -0
  232. package/dist/core/path-universe.js +45 -0
  233. package/dist/core/path-universe.js.map +1 -0
  234. package/dist/core/per-root-compiler-options.d.ts +20 -0
  235. package/dist/core/per-root-compiler-options.d.ts.map +1 -0
  236. package/dist/core/per-root-compiler-options.js +57 -0
  237. package/dist/core/per-root-compiler-options.js.map +1 -0
  238. package/dist/core/project-relative.d.ts +98 -0
  239. package/dist/core/project-relative.d.ts.map +1 -0
  240. package/dist/core/project-relative.js +185 -0
  241. package/dist/core/project-relative.js.map +1 -0
  242. package/dist/core/project.d.ts +7 -1
  243. package/dist/core/project.d.ts.map +1 -1
  244. package/dist/core/project.js +29 -4
  245. package/dist/core/project.js.map +1 -1
  246. package/dist/core/rule-builder.d.ts +303 -0
  247. package/dist/core/rule-builder.d.ts.map +1 -0
  248. package/dist/core/rule-builder.js +463 -0
  249. package/dist/core/rule-builder.js.map +1 -0
  250. package/dist/core/rule-declaration.d.ts +32 -0
  251. package/dist/core/rule-declaration.d.ts.map +1 -0
  252. package/dist/core/rule-declaration.js +88 -0
  253. package/dist/core/rule-declaration.js.map +1 -0
  254. package/dist/core/terminal-builder.d.ts +629 -0
  255. package/dist/core/terminal-builder.d.ts.map +1 -0
  256. package/dist/core/terminal-builder.js +807 -0
  257. package/dist/core/terminal-builder.js.map +1 -0
  258. package/dist/core/terminal-execution.d.ts +39 -0
  259. package/dist/core/terminal-execution.d.ts.map +1 -0
  260. package/dist/core/terminal-execution.js +103 -0
  261. package/dist/core/terminal-execution.js.map +1 -0
  262. package/dist/core/ts-comment-mask.d.ts +2 -0
  263. package/dist/core/ts-comment-mask.d.ts.map +1 -0
  264. package/dist/core/ts-comment-mask.js +102 -0
  265. package/dist/core/ts-comment-mask.js.map +1 -0
  266. package/dist/core/vacuity-diagnosis.d.ts +103 -0
  267. package/dist/core/vacuity-diagnosis.d.ts.map +1 -0
  268. package/dist/core/vacuity-diagnosis.js +415 -0
  269. package/dist/core/vacuity-diagnosis.js.map +1 -0
  270. package/dist/core/violation.d.ts +16 -11
  271. package/dist/core/violation.d.ts.map +1 -1
  272. package/dist/core/violation.js +33 -13
  273. package/dist/core/violation.js.map +1 -1
  274. package/dist/graphql/graphql-rule-builder.d.ts +95 -0
  275. package/dist/graphql/graphql-rule-builder.d.ts.map +1 -0
  276. package/dist/graphql/graphql-rule-builder.js +127 -0
  277. package/dist/graphql/graphql-rule-builder.js.map +1 -0
  278. package/dist/graphql/index.d.ts +1 -0
  279. package/dist/graphql/index.d.ts.map +1 -1
  280. package/dist/graphql/index.js +2 -1
  281. package/dist/graphql/index.js.map +1 -1
  282. package/dist/graphql/resolver-rule-builder.d.ts +44 -23
  283. package/dist/graphql/resolver-rule-builder.d.ts.map +1 -1
  284. package/dist/graphql/resolver-rule-builder.js +80 -72
  285. package/dist/graphql/resolver-rule-builder.js.map +1 -1
  286. package/dist/graphql/schema-loader.d.ts +21 -0
  287. package/dist/graphql/schema-loader.d.ts.map +1 -1
  288. package/dist/graphql/schema-loader.js +82 -12
  289. package/dist/graphql/schema-loader.js.map +1 -1
  290. package/dist/graphql/schema-predicates.d.ts.map +1 -1
  291. package/dist/graphql/schema-predicates.js +17 -12
  292. package/dist/graphql/schema-predicates.js.map +1 -1
  293. package/dist/graphql/schema-rule-builder.d.ts +15 -24
  294. package/dist/graphql/schema-rule-builder.d.ts.map +1 -1
  295. package/dist/graphql/schema-rule-builder.js +39 -77
  296. package/dist/graphql/schema-rule-builder.js.map +1 -1
  297. package/dist/helpers/baseline-diagnostics.d.ts +45 -0
  298. package/dist/helpers/baseline-diagnostics.d.ts.map +1 -0
  299. package/dist/helpers/baseline-diagnostics.js +168 -0
  300. package/dist/helpers/baseline-diagnostics.js.map +1 -0
  301. package/dist/helpers/baseline-generator.d.ts +28 -0
  302. package/dist/helpers/baseline-generator.d.ts.map +1 -0
  303. package/dist/helpers/baseline-generator.js +27 -0
  304. package/dist/helpers/baseline-generator.js.map +1 -0
  305. package/dist/helpers/baseline.d.ts +336 -0
  306. package/dist/helpers/baseline.d.ts.map +1 -0
  307. package/dist/helpers/baseline.js +664 -0
  308. package/dist/helpers/baseline.js.map +1 -0
  309. package/dist/helpers/body-traversal.d.ts +27 -2
  310. package/dist/helpers/body-traversal.d.ts.map +1 -1
  311. package/dist/helpers/body-traversal.js +135 -16
  312. package/dist/helpers/body-traversal.js.map +1 -1
  313. package/dist/helpers/callback-extractor.d.ts.map +1 -1
  314. package/dist/helpers/callback-extractor.js +53 -84
  315. package/dist/helpers/callback-extractor.js.map +1 -1
  316. package/dist/helpers/complexity.d.ts +13 -5
  317. package/dist/helpers/complexity.d.ts.map +1 -1
  318. package/dist/helpers/complexity.js +15 -6
  319. package/dist/helpers/complexity.js.map +1 -1
  320. package/dist/helpers/diff-aware.d.ts +16 -0
  321. package/dist/helpers/diff-aware.d.ts.map +1 -0
  322. package/dist/helpers/diff-aware.js +16 -0
  323. package/dist/helpers/diff-aware.js.map +1 -0
  324. package/dist/helpers/matchers.d.ts +68 -7
  325. package/dist/helpers/matchers.d.ts.map +1 -1
  326. package/dist/helpers/matchers.js +164 -86
  327. package/dist/helpers/matchers.js.map +1 -1
  328. package/dist/helpers/slice-graph.d.ts +100 -8
  329. package/dist/helpers/slice-graph.d.ts.map +1 -1
  330. package/dist/helpers/slice-graph.js +126 -34
  331. package/dist/helpers/slice-graph.js.map +1 -1
  332. package/dist/helpers/tarjan.d.ts +0 -14
  333. package/dist/helpers/tarjan.d.ts.map +1 -1
  334. package/dist/helpers/tarjan.js +29 -16
  335. package/dist/helpers/tarjan.js.map +1 -1
  336. package/dist/index.d.ts +55 -19
  337. package/dist/index.d.ts.map +1 -1
  338. package/dist/index.js +67 -15
  339. package/dist/index.js.map +1 -1
  340. package/dist/models/arch-call.d.ts +3 -2
  341. package/dist/models/arch-call.d.ts.map +1 -1
  342. package/dist/models/arch-call.js.map +1 -1
  343. package/dist/models/arch-function.d.ts +54 -8
  344. package/dist/models/arch-function.d.ts.map +1 -1
  345. package/dist/models/arch-function.js +145 -8
  346. package/dist/models/arch-function.js.map +1 -1
  347. package/dist/models/arch-jsx-element.d.ts.map +1 -1
  348. package/dist/models/arch-jsx-element.js +18 -19
  349. package/dist/models/arch-jsx-element.js.map +1 -1
  350. package/dist/models/slice.d.ts +33 -9
  351. package/dist/models/slice.d.ts.map +1 -1
  352. package/dist/models/slice.js +129 -19
  353. package/dist/models/slice.js.map +1 -1
  354. package/dist/predicates/call.d.ts.map +1 -1
  355. package/dist/predicates/call.js +5 -0
  356. package/dist/predicates/call.js.map +1 -1
  357. package/dist/predicates/identity.d.ts +21 -0
  358. package/dist/predicates/identity.d.ts.map +1 -1
  359. package/dist/predicates/identity.js +75 -3
  360. package/dist/predicates/identity.js.map +1 -1
  361. package/dist/predicates/index.d.ts +1 -1
  362. package/dist/predicates/index.d.ts.map +1 -1
  363. package/dist/predicates/index.js +1 -1
  364. package/dist/predicates/index.js.map +1 -1
  365. package/dist/predicates/jsx.d.ts.map +1 -1
  366. package/dist/predicates/jsx.js +2 -1
  367. package/dist/predicates/jsx.js.map +1 -1
  368. package/dist/predicates/metrics.d.ts +4 -2
  369. package/dist/predicates/metrics.d.ts.map +1 -1
  370. package/dist/predicates/metrics.js +4 -2
  371. package/dist/predicates/metrics.js.map +1 -1
  372. package/dist/predicates/module.d.ts +4 -12
  373. package/dist/predicates/module.d.ts.map +1 -1
  374. package/dist/predicates/module.js +57 -37
  375. package/dist/predicates/module.js.map +1 -1
  376. package/dist/presets/agent-guardrails.d.ts +49 -16
  377. package/dist/presets/agent-guardrails.d.ts.map +1 -1
  378. package/dist/presets/agent-guardrails.js +308 -19
  379. package/dist/presets/agent-guardrails.js.map +1 -1
  380. package/dist/presets/boundaries.d.ts +46 -3
  381. package/dist/presets/boundaries.d.ts.map +1 -1
  382. package/dist/presets/boundaries.js +132 -23
  383. package/dist/presets/boundaries.js.map +1 -1
  384. package/dist/presets/data-layer.d.ts +23 -3
  385. package/dist/presets/data-layer.d.ts.map +1 -1
  386. package/dist/presets/data-layer.js +58 -16
  387. package/dist/presets/data-layer.js.map +1 -1
  388. package/dist/presets/index.d.ts +10 -5
  389. package/dist/presets/index.d.ts.map +1 -1
  390. package/dist/presets/index.js +19 -3
  391. package/dist/presets/index.js.map +1 -1
  392. package/dist/presets/layered.d.ts +47 -3
  393. package/dist/presets/layered.d.ts.map +1 -1
  394. package/dist/presets/layered.js +66 -29
  395. package/dist/presets/layered.js.map +1 -1
  396. package/dist/presets/recommended.d.ts +81 -10
  397. package/dist/presets/recommended.d.ts.map +1 -1
  398. package/dist/presets/recommended.js +25 -23
  399. package/dist/presets/recommended.js.map +1 -1
  400. package/dist/presets/shared.d.ts +267 -2
  401. package/dist/presets/shared.d.ts.map +1 -1
  402. package/dist/presets/shared.js +367 -4
  403. package/dist/presets/shared.js.map +1 -1
  404. package/dist/rules/code-quality.d.ts.map +1 -1
  405. package/dist/rules/code-quality.js +15 -6
  406. package/dist/rules/code-quality.js.map +1 -1
  407. package/dist/rules/hygiene.d.ts +1 -1
  408. package/dist/rules/hygiene.js +1 -1
  409. package/dist/rules/metrics-function.d.ts +2 -1
  410. package/dist/rules/metrics-function.d.ts.map +1 -1
  411. package/dist/rules/metrics-function.js +63 -39
  412. package/dist/rules/metrics-function.js.map +1 -1
  413. package/dist/rules/metrics.d.ts +2 -1
  414. package/dist/rules/metrics.d.ts.map +1 -1
  415. package/dist/rules/metrics.js +80 -47
  416. package/dist/rules/metrics.js.map +1 -1
  417. package/dist/smells/clusters.d.ts +78 -0
  418. package/dist/smells/clusters.d.ts.map +1 -0
  419. package/dist/smells/clusters.js +124 -0
  420. package/dist/smells/clusters.js.map +1 -0
  421. package/dist/smells/duplicate-bodies.d.ts +92 -5
  422. package/dist/smells/duplicate-bodies.d.ts.map +1 -1
  423. package/dist/smells/duplicate-bodies.js +203 -73
  424. package/dist/smells/duplicate-bodies.js.map +1 -1
  425. package/dist/smells/duplicate-report.d.ts +90 -0
  426. package/dist/smells/duplicate-report.d.ts.map +1 -0
  427. package/dist/smells/duplicate-report.js +344 -0
  428. package/dist/smells/duplicate-report.js.map +1 -0
  429. package/dist/smells/fingerprint.d.ts +20 -1
  430. package/dist/smells/fingerprint.d.ts.map +1 -1
  431. package/dist/smells/fingerprint.js +27 -3
  432. package/dist/smells/fingerprint.js.map +1 -1
  433. package/dist/smells/inconsistent-siblings.d.ts +128 -7
  434. package/dist/smells/inconsistent-siblings.d.ts.map +1 -1
  435. package/dist/smells/inconsistent-siblings.js +288 -86
  436. package/dist/smells/inconsistent-siblings.js.map +1 -1
  437. package/dist/smells/sibling-files.d.ts +47 -0
  438. package/dist/smells/sibling-files.d.ts.map +1 -0
  439. package/dist/smells/sibling-files.js +104 -0
  440. package/dist/smells/sibling-files.js.map +1 -0
  441. package/dist/smells/similar-pairs.d.ts +28 -0
  442. package/dist/smells/similar-pairs.d.ts.map +1 -0
  443. package/dist/smells/similar-pairs.js +134 -0
  444. package/dist/smells/similar-pairs.js.map +1 -0
  445. package/dist/smells/smell-builder.d.ts +57 -12
  446. package/dist/smells/smell-builder.d.ts.map +1 -1
  447. package/dist/smells/smell-builder.js +112 -14
  448. package/dist/smells/smell-builder.js.map +1 -1
  449. package/dist/smells/variation.d.ts +47 -0
  450. package/dist/smells/variation.d.ts.map +1 -0
  451. package/dist/smells/variation.js +90 -0
  452. package/dist/smells/variation.js.map +1 -0
  453. package/dist/tsconfig/index.d.ts +19 -0
  454. package/dist/tsconfig/index.d.ts.map +1 -0
  455. package/dist/tsconfig/index.js +20 -0
  456. package/dist/tsconfig/index.js.map +1 -0
  457. package/dist/tsconfig/tsconfig-builder.d.ts +42 -9
  458. package/dist/tsconfig/tsconfig-builder.d.ts.map +1 -1
  459. package/dist/tsconfig/tsconfig-builder.js +65 -16
  460. package/dist/tsconfig/tsconfig-builder.js.map +1 -1
  461. package/package.json +4 -2
  462. package/dist/core/module-dependencies.d.ts +0 -28
  463. package/dist/core/module-dependencies.d.ts.map +0 -1
  464. package/dist/core/module-dependencies.js +0 -35
  465. package/dist/core/module-dependencies.js.map +0 -1
  466. package/dist/helpers/within.d.ts.map +0 -1
  467. package/dist/helpers/within.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-builder.js","sourceRoot":"","sources":["../../src/core/terminal-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { CollectResult } from '@nielspeter/eess';
2
+ import type { RuleFacts } from './vacuity-diagnosis.js';
3
+ /** A rule, reduced to what running it needs. */
4
+ export interface RuleRun {
5
+ readonly facts: RuleFacts;
6
+ readonly expectsEmpty: boolean;
7
+ assertsSomething(): boolean;
8
+ ownsDiscoveryDiagnosis(): boolean;
9
+ /**
10
+ * ADR-010 §3 / ADR-014 §3: "`.notExist()` over zero subjects is a declaration
11
+ * by construction." The flag has to reach the receipt, or a cardinality-exempt
12
+ * rule arrives at the emitter undeclared and is reported as a vacuous pass.
13
+ * `TerminalBuilder.asRun()` already passed this; the guard did not read it.
14
+ */
15
+ assertsCardinality(): boolean;
16
+ collectViolations(): CollectResult;
17
+ }
18
+ /**
19
+ * Run the rule, but let the gates speak first.
20
+ *
21
+ * Split from `TerminalBuilder` with the diagnoses it calls. The class kept the
22
+ * ORDER of the gates — assertion, then dead selector, then the evidence floor —
23
+ * tangled with the fluent surface that configures them; the order is the whole
24
+ * content of this function and now reads as such.
25
+ */
26
+ /**
27
+ * Returns the RECEIPT, not a bare array — plan 0235.
28
+ *
29
+ * The gate paths below fire BEFORE `run.collectViolations()` on purpose (see
30
+ * `TerminalBuilder.collectWithAssertionGuard`'s comment: `CrossProjectBuilder`
31
+ * throws a `RangeError` from its collection, so a gate placed after it would
32
+ * never run and the error would escape the CLI's `ArchRuleError`-only catch).
33
+ * Those paths therefore report `examined: 0` — honest, because nothing was
34
+ * collected — and the caller must NOT reach for the count itself. A first cut
35
+ * did exactly that from `violations()` and reintroduced bug 0025's escaping
36
+ * `RangeError`; the evidence has to come back through here.
37
+ */
38
+ export declare function collectWithAssertionGuard(run: RuleRun): CollectResult;
39
+ //# sourceMappingURL=terminal-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-execution.d.ts","sourceRoot":"","sources":["../../src/core/terminal-execution.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAQvD,gDAAgD;AAChD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,gBAAgB,IAAI,OAAO,CAAA;IAC3B,sBAAsB,IAAI,OAAO,CAAA;IACjC;;;;;OAKG;IACH,kBAAkB,IAAI,OAAO,CAAA;IAC7B,iBAAiB,IAAI,aAAa,CAAA;CACnC;AAED;;;;;;;GAOG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAmFrE"}
@@ -0,0 +1,103 @@
1
+ import { collectResult } from '@nielspeter/eess';
2
+ import { assertionLessFinding, deadSelectorFindings, evidenceFloor, expiredDeclarationViolation, } from './vacuity-diagnosis.js';
3
+ /**
4
+ * Run the rule, but let the gates speak first.
5
+ *
6
+ * Split from `TerminalBuilder` with the diagnoses it calls. The class kept the
7
+ * ORDER of the gates — assertion, then dead selector, then the evidence floor —
8
+ * tangled with the fluent surface that configures them; the order is the whole
9
+ * content of this function and now reads as such.
10
+ */
11
+ /**
12
+ * Returns the RECEIPT, not a bare array — plan 0235.
13
+ *
14
+ * The gate paths below fire BEFORE `run.collectViolations()` on purpose (see
15
+ * `TerminalBuilder.collectWithAssertionGuard`'s comment: `CrossProjectBuilder`
16
+ * throws a `RangeError` from its collection, so a gate placed after it would
17
+ * never run and the error would escape the CLI's `ArchRuleError`-only catch).
18
+ * Those paths therefore report `examined: 0` — honest, because nothing was
19
+ * collected — and the caller must NOT reach for the count itself. A first cut
20
+ * did exactly that from `violations()` and reintroduced bug 0025's escaping
21
+ * `RangeError`; the evidence has to come back through here.
22
+ */
23
+ export function collectWithAssertionGuard(run) {
24
+ if (run.assertsSomething()) {
25
+ // Plan 0074 (R3b). AFTER the assertion gate, deliberately: a rule with a
26
+ // dead glob AND no condition reports the missing assertion only, which is
27
+ // the right root cause — no selector makes an assertion-less rule capable
28
+ // of failing. The comment above already committed to that ordering; this
29
+ // is the branch that honours it.
30
+ //
31
+ // Gate-first for a dead SELECTOR, before `collectViolations()`: a rule whose
32
+ // selector cannot match will walk the whole AST to select nothing.
33
+ //
34
+ // But NOT gate-first for a dead **discovery** glob, and that asymmetry is
35
+ // plan 0080's whole design. Admitting discovery globs to the gate without
36
+ // it is destructive rather than additive: this early return means the gate
37
+ // REPLACES a builder's own finding rather than adding to it, and the slice
38
+ // builders already produce a better one (`emptyDiscoveryViolation`). Review
39
+ // measured the cost of getting this wrong — **15 slice tests, 13 of them
40
+ // the whole bug-0009 remedy corpus**, whose stated subject is that each
41
+ // branch's advice is true. Trading a rule 1 defect for a rule 2 defect.
42
+ //
43
+ // So the owner **declares itself** — `ownsDiscoveryDiagnosis()` — rather than
44
+ // the gate naming who to skip. An "except slice" list would be the same
45
+ // unchecked claim about who owns what that this file used to carry in a
46
+ // comment, and that comment being wrong is what plan 0080 exists to fix.
47
+ // The precedent is `assertsCardinality()` directly above: knowledge lives
48
+ // with the builder that has it.
49
+ //
50
+ // A first attempt derived it instead — run `collectViolations()` and prefer
51
+ // any `bypassFilters` finding it produced. That cannot work, and slice is
52
+ // the counterexample: for a **partially** empty `assignedFrom` it produces
53
+ // nothing *deliberately* (a slice with no files yet is legitimate, and that
54
+ // guard was withdrawn before release for firing on real projects). So
55
+ // "prefer what it produced" reads silence as "no opinion" when it is in
56
+ // fact the opinion.
57
+ const dead = deadSelectorFindings(run.facts);
58
+ if (dead.selector.length > 0)
59
+ return collectResult(dead.selector, { examined: 0 });
60
+ if (dead.discovery.length > 0 && !run.ownsDiscoveryDiagnosis())
61
+ return collectResult(dead.discovery, { examined: 0 });
62
+ // Plan 0099: the floor. 0098 produced this evidence and discarded it here;
63
+ // this is where discarding stops.
64
+ const collected = run.collectViolations();
65
+ const { examined } = collected;
66
+ const violations = [...collected];
67
+ // ADR-010's floor: four branches that all answer one question — is a pass
68
+ // here CONSTRUCTED from evidence, or defaulted? See `evidenceFloor`.
69
+ // The declaration, computed ONCE and used on both exits below.
70
+ //
71
+ // `evidenceFloor` returns the (empty) violations rather than `undefined` for
72
+ // a cardinality-exempt rule — its exempt path IS the declaration case — so an
73
+ // exit that drops the flag here leaves a `.notExist()` rule undeclared, and
74
+ // the emitter then reports it as a vacuous pass. Measured: exactly that,
75
+ // before this was hoisted.
76
+ const declaredEmpty = run.expectsEmpty ||
77
+ (examined === 0 && (collected.declaredEmpty === true || run.assertsCardinality()))
78
+ ? true
79
+ : undefined;
80
+ const floor = evidenceFloor(run.facts, violations, examined);
81
+ if (floor !== undefined)
82
+ return collectResult(floor, { examined, sourceEmpty: collected.sourceEmpty, declaredEmpty });
83
+ // The expiry half, and it is the ROOT's alone — `rule-builder.ts` used to
84
+ // carry its own, so keeping both double-reported one fault.
85
+ //
86
+ // `_expectEmpty`, NOT `declaresEmpty()`: `.notExist()` over a non-empty
87
+ // selection is the condition doing its job, never an expired declaration,
88
+ // and on `CrossProjectBuilder` `declaresEmpty()` is an all-sides
89
+ // conjunction whose per-side expiry that class reports itself.
90
+ if (examined > 0 && run.expectsEmpty) {
91
+ return collectResult([expiredDeclarationViolation(run.facts, examined), ...violations], {
92
+ examined,
93
+ });
94
+ }
95
+ return collectResult(violations, {
96
+ examined,
97
+ sourceEmpty: collected.sourceEmpty,
98
+ declaredEmpty,
99
+ });
100
+ }
101
+ return collectResult(assertionLessFinding(run.facts), { examined: 0 });
102
+ }
103
+ //# sourceMappingURL=terminal-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-execution.js","sourceRoot":"","sources":["../../src/core/terminal-execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function maskTsLiterals(sourceText: string, filePath: string): string;
2
+ //# sourceMappingURL=ts-comment-mask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-comment-mask.d.ts","sourceRoot":"","sources":["../../src/core/ts-comment-mask.ts"],"names":[],"mappings":"AAoEA,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoC3E"}
@@ -0,0 +1,102 @@
1
+ import path from 'node:path';
2
+ import { Project, SyntaxKind } from 'ts-morph';
3
+ /**
4
+ * `eess-ts`'s comment masker, injected into the kernel's one exclusion-comment
5
+ * parser (ADR-012).
6
+ *
7
+ * The kernel has no AST and cannot get one — it declares zero dependencies so
8
+ * that `eess-md` does not inherit a TypeScript parser. Its default masker is a
9
+ * regex scan, which is correct but coarse. This is the accurate version for
10
+ * TypeScript, and it is all that ever justified `eess-ts` carrying a second copy
11
+ * of the parser. Now only the masker is this package's; the parsing is not.
12
+ *
13
+ * The kernel composes: this runs first, its default runs over the output. So
14
+ * this can only blank MORE than the default, never less.
15
+ */
16
+ /**
17
+ * Every string-like literal, blanked — [ts-archunit bug 0043](https://github.com/nielspeter/ts-archunit/blob/main/bugs/fixed/0043-an-exclusion-directive-inside-a-string-literal-suppresses.md).
18
+ *
19
+ * The scan below is line-based, and a line-based scan cannot tell a directive
20
+ * from the same characters inside a string. Measured before this existed: all
21
+ * three of `"…"`, `'…'` and `` `…` `` containing the directive text produced a
22
+ * **live exclusion** that silenced a real finding — silently, because a
23
+ * directive carrying a reason never triggers the undocumented-exclusion warning.
24
+ *
25
+ * **Newlines are preserved**, and that is the load-bearing part: the scan below
26
+ * is line-based and reports `line` on every exclusion, so a mask that dropped a
27
+ * newline would misreport every directive after it.
28
+ *
29
+ * Characters are replaced with spaces rather than removed, which keeps
30
+ * intra-line offsets stable too — but nothing downstream consumes a column, so
31
+ * that half is defence in depth rather than a guarded property. Measured:
32
+ * collapsing the blanks to `''`, and masking one character short, both leave the
33
+ * suite green. Recorded rather than dressed up — a sabotage row that survives
34
+ * for a real reason is a different thing from a missing guard.
35
+ *
36
+ * ## Why a parse, and not a scan
37
+ *
38
+ * The first attempt used `ts.createScanner`, which is the real lexer and fixed
39
+ * the three plain cases. It left two: `` `${x} // …` `` and JSX text. A bare
40
+ * scanner has no parser context, so it cannot know when to re-scan a template
41
+ * middle or JSX children, and both were classified as code — meaning the `//`
42
+ * inside them became a comment. Measured, not predicted.
43
+ *
44
+ * So: parse, and blank the literals. Everything remaining is code, where `//`
45
+ * genuinely does start a comment.
46
+ *
47
+ * A **ts-morph** project rather than the raw compiler API, per
48
+ * [ADR-002](../../../../adr/002-ts-morph-ast-engine.md), reusing one in-memory project
49
+ * across calls so the cost is a parse rather than a project construction. The
50
+ * whole scan is gated on a rule having already produced a violation in the file,
51
+ * so nothing is parsed for a clean run.
52
+ *
53
+ * A `TemplateExpression` is blanked **whole**, including its `${…}`
54
+ * substitutions. A comment is legal inside a substitution, so this can miss a
55
+ * real directive there — it errs toward *not* suppressing, which is the safe
56
+ * direction for a mechanism whose failure mode is a silent green.
57
+ */
58
+ const LITERAL_KINDS = [
59
+ SyntaxKind.StringLiteral,
60
+ SyntaxKind.NoSubstitutionTemplateLiteral,
61
+ SyntaxKind.TemplateExpression,
62
+ SyntaxKind.RegularExpressionLiteral,
63
+ SyntaxKind.JsxText,
64
+ ];
65
+ let scratch;
66
+ export function maskTsLiterals(sourceText, filePath) {
67
+ scratch ??= new Project({ useInMemoryFileSystem: true });
68
+ // `.tsx` so JSX parses; a `.ts` parse reads `<div>` as a type assertion and
69
+ // the JsxText case silently stops being covered.
70
+ const sourceFile = scratch.createSourceFile(`/scan/${path.basename(filePath)}.tsx`, sourceText, {
71
+ overwrite: true,
72
+ });
73
+ const out = sourceText.split('');
74
+ for (const kind of LITERAL_KINDS) {
75
+ for (const node of sourceFile.getDescendantsOfKind(kind)) {
76
+ for (let i = node.getStart(); i < node.getEnd(); i++) {
77
+ if (out[i] !== undefined && out[i] !== '\n')
78
+ out[i] = ' ';
79
+ }
80
+ }
81
+ }
82
+ const withoutLiteralText = out.join('');
83
+ // Block comments too, and this is not tidying — it is the difference between
84
+ // documenting the feature and invoking it.
85
+ //
86
+ // The grammar is `//`-only and always has been (a `/* … */` directive produced
87
+ // no exclusion before this fix and still produces none). But a JSDoc block
88
+ // that *mentions* the directive in prose puts the characters on a line, and
89
+ // the line scan below cannot tell prose from a directive.
90
+ //
91
+ // Found the hard way: this very file's docstring explains the bug, contains
92
+ // the directive text, and the moment comments started being read correctly it
93
+ // declared a live exclusion against `preset/boundaries/no-cross-boundary` —
94
+ // caught by this repo's own preset fan-out test. Any user writing a code
95
+ // comment about the feature would hit the same thing.
96
+ //
97
+ // Safe to do with a regex here, and only here: every string, template and
98
+ // regex literal has already been blanked, so a surviving `/*` is a real
99
+ // block-comment start.
100
+ return withoutLiteralText.replace(/\/\*[\s\S]*?\*\//g, (m) => m.replace(/[^\n]/g, ' '));
101
+ }
102
+ //# sourceMappingURL=ts-comment-mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-comment-mask.js","sourceRoot":"","sources":["../../src/core/ts-comment-mask.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE9C;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,aAAa,GAAG;IACpB,UAAU,CAAC,aAAa;IACxB,UAAU,CAAC,6BAA6B;IACxC,UAAU,CAAC,kBAAkB;IAC7B,UAAU,CAAC,wBAAwB;IACnC,UAAU,CAAC,OAAO;CACV,CAAA;AAEV,IAAI,OAA4B,CAAA;AAEhC,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,QAAgB;IACjE,OAAO,KAAK,IAAI,OAAO,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAA;IACxD,4EAA4E;IAC5E,iDAAiD;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE;QAC9F,SAAS,EAAE,IAAI;KAChB,CAAC,CAAA;IAEF,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAChC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEvC,6EAA6E;IAC7E,2CAA2C;IAC3C,EAAE;IACF,+EAA+E;IAC/E,2EAA2E;IAC3E,4EAA4E;IAC5E,0DAA0D;IAC1D,EAAE;IACF,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,yEAAyE;IACzE,sDAAsD;IACtD,EAAE;IACF,0EAA0E;IAC1E,wEAAwE;IACxE,uBAAuB;IACvB,OAAO,kBAAkB,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;AACzF,CAAC"}
@@ -0,0 +1,103 @@
1
+ import type { ArchViolation } from '@nielspeter/eess';
2
+ import type { ArchProject } from './project.js';
3
+ import type { GlobNode, RuleDescription } from '@nielspeter/eess';
4
+ /**
5
+ * What a rule can be asked about itself, without running it.
6
+ *
7
+ * Every diagnosis in this module is a function of these and nothing else — none
8
+ * of them evaluates the rule. That is what let them leave `TerminalBuilder`:
9
+ * they were never terminal behaviour, they were explanations OF it, and keeping
10
+ * them on the class is most of why it carried 372 code lines.
11
+ */
12
+ export declare const ASSERTION_DOCS = "https://github.com/nielspeter/eess/blob/main/docs/violation-reporting.md#a-rule-must-assert-something";
13
+ export interface RuleFacts {
14
+ /** The builder's own class, for naming the rule in a finding. */
15
+ readonly ruleClass: {
16
+ name: string;
17
+ };
18
+ describeRule(): RuleDescription;
19
+ assertionAdvice(): string;
20
+ emptyDeclarationAdvice(): string;
21
+ examinedUnitNoun(): string;
22
+ narrowingHint(): string | undefined;
23
+ getProject(): ArchProject | undefined;
24
+ globs(): readonly GlobNode[];
25
+ assertsCardinality(): boolean;
26
+ declaresEmpty(): boolean;
27
+ zeroSubjectsAdvice(): string;
28
+ zeroSubjectsViolation(project: ArchProject | undefined): ArchViolation;
29
+ }
30
+ /**
31
+ * The finding for a rule that states no assertion at all.
32
+ *
33
+ * Extracted from `collectWithAssertionGuard`, which was the assertion gate,
34
+ * the dead-selector gate, the evidence floor AND this constructor in one
35
+ * method — most of its branching was the reader having to hold all four.
36
+ */
37
+ export declare function assertionLessFinding(facts: RuleFacts): ArchViolation[];
38
+ /**
39
+ * ADR-010's floor: what to report when a family produced NOTHING from NOTHING.
40
+ *
41
+ * `undefined` means "no floor finding — carry on", which is not the same as
42
+ * an empty array (that is a deliberate pass, and `assertsCardinality()`
43
+ * returns one).
44
+ *
45
+ * A family that produced ANY finding passes through untouched. The floor
46
+ * fires only where a family produced nothing from nothing — bug 0066's shape.
47
+ * Each family's own empty-selection block stays as the better-attributed
48
+ * implementation; this is a floor beneath them, not a replacement.
49
+ *
50
+ * Precedence has already removed the other causes by the time this is reached:
51
+ * no dead selector glob, no missing assertion, no empty project, no cardinality
52
+ * assertion, no declaration. So the remedy names ONE cause without the hedging
53
+ * ADR-009 rule 2 forbids.
54
+ *
55
+ * Three defects in 0098's preview wording are fixed here, from its
56
+ * user-perspective review:
57
+ *
58
+ * - **It hedged where we hold the fact.** "including any default it applies
59
+ * that you did not write" was printed as a hypothetical while the rule knew
60
+ * the answer. We materialized the selection, so we know the project loaded N
61
+ * files and the selection produced 0 — print the numbers.
62
+ * - **"can never fail" overstated.** For a `crossLayer` rule whose pairs do not
63
+ * exist yet, or a folder empty in a young repository, the rule is correct and
64
+ * matches nothing *today*. "never" made a true statement false.
65
+ * - **The ranking was wrong for the people most likely to adopt early.** It
66
+ * called widening the fix and declaring "the exception… proves nothing". For
67
+ * a team whose second layer is not built yet, widening is *impossible* — the
68
+ * code does not exist — so the only available action was the one the message
69
+ * disparaged. Both are now offered as peers, and the declaration is described
70
+ * by what it does: it expires.
71
+ */
72
+ export declare function evidenceFloor(facts: RuleFacts, violations: ArchViolation[], examined: number): ArchViolation[] | undefined;
73
+ /**
74
+ * A declaration that has expired — plan 0099.
75
+ *
76
+ * The property that makes `.expectEmpty()` an assertion rather than
77
+ * `allowEmpty()`'s permission, which had no failing state and so stayed green
78
+ * forever. Here the number IS the finding: the author asserted zero and the
79
+ * answer is not zero.
80
+ *
81
+ * The remedy is DISTINCT from the message, because `format.ts` drops the `Fix:`
82
+ * line when the two are equal — a defect this producer's rule-builder ancestor
83
+ * shipped with, found in review of plan 0089.
84
+ */
85
+ export declare function expiredDeclarationViolation(facts: RuleFacts, examined: number): ArchViolation;
86
+ /**
87
+ * A dead glob's findings, **split by whether the builder might own the message**.
88
+ *
89
+ * `selector` and `discovery` are both faults (`isFaultPosition`), but the caller
90
+ * treats them differently: a dead selector short-circuits before the AST walk,
91
+ * while a dead discovery glob defers to whatever the builder produced. An
92
+ * `ArchViolation` carries no position, so the split happens here rather than
93
+ * being recovered by inspecting findings downstream.
94
+ */
95
+ export declare function deadSelectorFindings(facts: RuleFacts): {
96
+ selector: ArchViolation[];
97
+ discovery: ArchViolation[];
98
+ };
99
+ /** The value behind `TerminalBuilder.zeroSubjectsAdvice()`. */
100
+ export declare function zeroSubjectsAdviceOf(facts: RuleFacts): string;
101
+ /** The value behind `TerminalBuilder.zeroSubjectsViolation()`. */
102
+ export declare function zeroSubjectsViolationOf(facts: RuleFacts, project: ArchProject | undefined): ArchViolation;
103
+ //# sourceMappingURL=vacuity-diagnosis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vacuity-diagnosis.d.ts","sourceRoot":"","sources":["../../src/core/vacuity-diagnosis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAY,eAAe,EAAE,MAAM,kBAAkB,CAAA;AA2B3E;;;;;;;GAOG;AAKH,eAAO,MAAM,cAAc,0GAC8E,CAAA;AAEzG,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,YAAY,IAAI,eAAe,CAAA;IAC/B,eAAe,IAAI,MAAM,CAAA;IACzB,sBAAsB,IAAI,MAAM,CAAA;IAChC,gBAAgB,IAAI,MAAM,CAAA;IAC1B,aAAa,IAAI,MAAM,GAAG,SAAS,CAAA;IACnC,UAAU,IAAI,WAAW,GAAG,SAAS,CAAA;IACrC,KAAK,IAAI,SAAS,QAAQ,EAAE,CAAA;IAC5B,kBAAkB,IAAI,OAAO,CAAA;IAC7B,aAAa,IAAI,OAAO,CAAA;IACxB,kBAAkB,IAAI,MAAM,CAAA;IAC5B,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,aAAa,CAAA;CACvE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,EAAE,CAmCtE;AA6FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,aAAa,EAAE,EAC3B,QAAQ,EAAE,MAAM,GACf,aAAa,EAAE,GAAG,SAAS,CA4B7B;AAmCD;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CAoC7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG;IACtD,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,SAAS,EAAE,aAAa,EAAE,CAAA;CAC3B,CAsCA;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAgC7D;AAED,kEAAkE;AAClE,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,GAAG,SAAS,GAC/B,aAAa,CA4Bf"}