@nielspeter/eess-ts 0.2.0 → 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 +87 -34
  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 -14
  88. package/dist/cli/resolve-config.js.map +1 -1
  89. package/dist/cli/rule-file-findings.d.ts +178 -0
  90. package/dist/cli/rule-file-findings.d.ts.map +1 -0
  91. package/dist/cli/rule-file-findings.js +293 -0
  92. package/dist/cli/rule-file-findings.js.map +1 -0
  93. package/dist/cli/watch.d.ts +20 -7
  94. package/dist/cli/watch.d.ts.map +1 -1
  95. package/dist/cli/watch.js +39 -14
  96. package/dist/cli/watch.js.map +1 -1
  97. package/dist/conditions/body-analysis-function.d.ts.map +1 -1
  98. package/dist/conditions/body-analysis-function.js +16 -7
  99. package/dist/conditions/body-analysis-function.js.map +1 -1
  100. package/dist/conditions/body-analysis-module.d.ts.map +1 -1
  101. package/dist/conditions/body-analysis-module.js +14 -9
  102. package/dist/conditions/body-analysis-module.js.map +1 -1
  103. package/dist/conditions/body-analysis.d.ts.map +1 -1
  104. package/dist/conditions/body-analysis.js +16 -7
  105. package/dist/conditions/body-analysis.js.map +1 -1
  106. package/dist/conditions/call.d.ts.map +1 -1
  107. package/dist/conditions/call.js +38 -17
  108. package/dist/conditions/call.js.map +1 -1
  109. package/dist/conditions/catch-analysis.d.ts +2 -1
  110. package/dist/conditions/catch-analysis.d.ts.map +1 -1
  111. package/dist/conditions/catch-analysis.js.map +1 -1
  112. package/dist/conditions/cross-layer.d.ts +2 -10
  113. package/dist/conditions/cross-layer.d.ts.map +1 -1
  114. package/dist/conditions/cross-layer.js +227 -23
  115. package/dist/conditions/cross-layer.js.map +1 -1
  116. package/dist/conditions/dependency.d.ts +35 -6
  117. package/dist/conditions/dependency.d.ts.map +1 -1
  118. package/dist/conditions/dependency.js +299 -45
  119. package/dist/conditions/dependency.js.map +1 -1
  120. package/dist/conditions/exports.d.ts.map +1 -1
  121. package/dist/conditions/exports.js +10 -0
  122. package/dist/conditions/exports.js.map +1 -1
  123. package/dist/conditions/function.d.ts.map +1 -1
  124. package/dist/conditions/function.js +19 -5
  125. package/dist/conditions/function.js.map +1 -1
  126. package/dist/conditions/helpers.d.ts +2 -1
  127. package/dist/conditions/helpers.d.ts.map +1 -1
  128. package/dist/conditions/helpers.js +4 -1
  129. package/dist/conditions/helpers.js.map +1 -1
  130. package/dist/conditions/jsx.d.ts.map +1 -1
  131. package/dist/conditions/jsx.js +7 -2
  132. package/dist/conditions/jsx.js.map +1 -1
  133. package/dist/conditions/match-identity.d.ts +43 -0
  134. package/dist/conditions/match-identity.d.ts.map +1 -0
  135. package/dist/conditions/match-identity.js +43 -0
  136. package/dist/conditions/match-identity.js.map +1 -0
  137. package/dist/conditions/members.d.ts.map +1 -1
  138. package/dist/conditions/members.js +17 -4
  139. package/dist/conditions/members.js.map +1 -1
  140. package/dist/conditions/reverse-dependency.d.ts +18 -5
  141. package/dist/conditions/reverse-dependency.d.ts.map +1 -1
  142. package/dist/conditions/reverse-dependency.js +109 -92
  143. package/dist/conditions/reverse-dependency.js.map +1 -1
  144. package/dist/conditions/slice.d.ts +86 -2
  145. package/dist/conditions/slice.d.ts.map +1 -1
  146. package/dist/conditions/slice.js +234 -53
  147. package/dist/conditions/slice.js.map +1 -1
  148. package/dist/conditions/structural.d.ts.map +1 -1
  149. package/dist/conditions/structural.js +16 -4
  150. package/dist/conditions/structural.js.map +1 -1
  151. package/dist/core/check-all.d.ts +19 -0
  152. package/dist/core/check-all.d.ts.map +1 -0
  153. package/dist/core/check-all.js +96 -0
  154. package/dist/core/check-all.js.map +1 -0
  155. package/dist/core/combinators.d.ts +48 -0
  156. package/dist/core/combinators.d.ts.map +1 -0
  157. package/dist/core/combinators.js +56 -0
  158. package/dist/core/combinators.js.map +1 -0
  159. package/dist/core/descendant-cache.d.ts +36 -0
  160. package/dist/core/descendant-cache.d.ts.map +1 -0
  161. package/dist/core/descendant-cache.js +119 -0
  162. package/dist/core/descendant-cache.js.map +1 -0
  163. package/dist/core/diagnose.d.ts +234 -0
  164. package/dist/core/diagnose.d.ts.map +1 -0
  165. package/dist/core/diagnose.js +382 -0
  166. package/dist/core/diagnose.js.map +1 -0
  167. package/dist/core/disk-set.d.ts +48 -0
  168. package/dist/core/disk-set.d.ts.map +1 -0
  169. package/dist/core/disk-set.js +218 -0
  170. package/dist/core/disk-set.js.map +1 -0
  171. package/dist/core/element-cache.d.ts +75 -0
  172. package/dist/core/element-cache.d.ts.map +1 -0
  173. package/dist/core/element-cache.js +32 -0
  174. package/dist/core/element-cache.js.map +1 -0
  175. package/dist/core/empty-project-advice.d.ts +75 -0
  176. package/dist/core/empty-project-advice.d.ts.map +1 -0
  177. package/dist/core/empty-project-advice.js +61 -0
  178. package/dist/core/empty-project-advice.js.map +1 -0
  179. package/dist/core/exclusion-comments.d.ts +54 -0
  180. package/dist/core/exclusion-comments.d.ts.map +1 -0
  181. package/dist/core/exclusion-comments.js +310 -0
  182. package/dist/core/exclusion-comments.js.map +1 -0
  183. package/dist/core/execute-rule.d.ts +150 -0
  184. package/dist/core/execute-rule.d.ts.map +1 -0
  185. package/dist/core/execute-rule.js +580 -0
  186. package/dist/core/execute-rule.js.map +1 -0
  187. package/dist/core/glob-diagnosis.d.ts +78 -0
  188. package/dist/core/glob-diagnosis.d.ts.map +1 -0
  189. package/dist/core/glob-diagnosis.js +134 -0
  190. package/dist/core/glob-diagnosis.js.map +1 -0
  191. package/dist/core/glob-evaluator.d.ts +48 -0
  192. package/dist/core/glob-evaluator.d.ts.map +1 -0
  193. package/dist/core/glob-evaluator.js +89 -0
  194. package/dist/core/glob-evaluator.js.map +1 -0
  195. package/dist/core/import-candidates.d.ts +60 -0
  196. package/dist/core/import-candidates.d.ts.map +1 -0
  197. package/dist/core/import-candidates.js +93 -0
  198. package/dist/core/import-candidates.js.map +1 -0
  199. package/dist/core/import-options.d.ts +55 -2
  200. package/dist/core/import-options.d.ts.map +1 -1
  201. package/dist/core/import-options.js +64 -0
  202. package/dist/core/import-options.js.map +1 -1
  203. package/dist/core/line-index.d.ts +3 -0
  204. package/dist/core/line-index.d.ts.map +1 -0
  205. package/dist/core/line-index.js +229 -0
  206. package/dist/core/line-index.js.map +1 -0
  207. package/dist/core/metric-violation.d.ts +86 -0
  208. package/dist/core/metric-violation.d.ts.map +1 -0
  209. package/dist/core/metric-violation.js +132 -0
  210. package/dist/core/metric-violation.js.map +1 -0
  211. package/dist/core/module-edges.d.ts +361 -0
  212. package/dist/core/module-edges.d.ts.map +1 -0
  213. package/dist/core/module-edges.js +592 -0
  214. package/dist/core/module-edges.js.map +1 -0
  215. package/dist/core/object-literal-functions.d.ts +42 -0
  216. package/dist/core/object-literal-functions.d.ts.map +1 -0
  217. package/dist/core/object-literal-functions.js +75 -0
  218. package/dist/core/object-literal-functions.js.map +1 -0
  219. package/dist/core/orphan-exclusions.d.ts +44 -0
  220. package/dist/core/orphan-exclusions.d.ts.map +1 -0
  221. package/dist/core/orphan-exclusions.js +214 -0
  222. package/dist/core/orphan-exclusions.js.map +1 -0
  223. package/dist/core/pair-condition.d.ts +32 -3
  224. package/dist/core/pair-condition.d.ts.map +1 -1
  225. package/dist/core/path-universe.d.ts +54 -0
  226. package/dist/core/path-universe.d.ts.map +1 -0
  227. package/dist/core/path-universe.js +65 -0
  228. package/dist/core/path-universe.js.map +1 -0
  229. package/dist/core/per-root-compiler-options.d.ts +20 -0
  230. package/dist/core/per-root-compiler-options.d.ts.map +1 -0
  231. package/dist/core/per-root-compiler-options.js +57 -0
  232. package/dist/core/per-root-compiler-options.js.map +1 -0
  233. package/dist/core/project-relative.d.ts +98 -0
  234. package/dist/core/project-relative.d.ts.map +1 -0
  235. package/dist/core/project-relative.js +185 -0
  236. package/dist/core/project-relative.js.map +1 -0
  237. package/dist/core/project.d.ts +7 -1
  238. package/dist/core/project.d.ts.map +1 -1
  239. package/dist/core/project.js +24 -0
  240. package/dist/core/project.js.map +1 -1
  241. package/dist/core/rule-builder.d.ts +282 -0
  242. package/dist/core/rule-builder.d.ts.map +1 -0
  243. package/dist/core/rule-builder.js +445 -0
  244. package/dist/core/rule-builder.js.map +1 -0
  245. package/dist/core/rule-declaration.d.ts +32 -0
  246. package/dist/core/rule-declaration.d.ts.map +1 -0
  247. package/dist/core/rule-declaration.js +126 -0
  248. package/dist/core/rule-declaration.js.map +1 -0
  249. package/dist/core/terminal-builder.d.ts +625 -0
  250. package/dist/core/terminal-builder.d.ts.map +1 -0
  251. package/dist/core/terminal-builder.js +787 -0
  252. package/dist/core/terminal-builder.js.map +1 -0
  253. package/dist/core/terminal-execution.d.ts +23 -0
  254. package/dist/core/terminal-execution.d.ts.map +1 -0
  255. package/dist/core/terminal-execution.js +71 -0
  256. package/dist/core/terminal-execution.js.map +1 -0
  257. package/dist/core/vacuity-diagnosis.d.ts +103 -0
  258. package/dist/core/vacuity-diagnosis.d.ts.map +1 -0
  259. package/dist/core/vacuity-diagnosis.js +415 -0
  260. package/dist/core/vacuity-diagnosis.js.map +1 -0
  261. package/dist/core/violation.d.ts +16 -11
  262. package/dist/core/violation.d.ts.map +1 -1
  263. package/dist/core/violation.js +33 -13
  264. package/dist/core/violation.js.map +1 -1
  265. package/dist/graphql/index.js +1 -1
  266. package/dist/graphql/index.js.map +1 -1
  267. package/dist/graphql/resolver-rule-builder.d.ts +98 -23
  268. package/dist/graphql/resolver-rule-builder.d.ts.map +1 -1
  269. package/dist/graphql/resolver-rule-builder.js +151 -21
  270. package/dist/graphql/resolver-rule-builder.js.map +1 -1
  271. package/dist/graphql/schema-loader.d.ts +21 -0
  272. package/dist/graphql/schema-loader.d.ts.map +1 -1
  273. package/dist/graphql/schema-loader.js +81 -12
  274. package/dist/graphql/schema-loader.js.map +1 -1
  275. package/dist/graphql/schema-rule-builder.d.ts +57 -20
  276. package/dist/graphql/schema-rule-builder.d.ts.map +1 -1
  277. package/dist/graphql/schema-rule-builder.js +101 -25
  278. package/dist/graphql/schema-rule-builder.js.map +1 -1
  279. package/dist/helpers/baseline-diagnostics.d.ts +45 -0
  280. package/dist/helpers/baseline-diagnostics.d.ts.map +1 -0
  281. package/dist/helpers/baseline-diagnostics.js +168 -0
  282. package/dist/helpers/baseline-diagnostics.js.map +1 -0
  283. package/dist/helpers/baseline-generator.d.ts +19 -0
  284. package/dist/helpers/baseline-generator.d.ts.map +1 -0
  285. package/dist/helpers/baseline-generator.js +18 -0
  286. package/dist/helpers/baseline-generator.js.map +1 -0
  287. package/dist/helpers/baseline.d.ts +336 -0
  288. package/dist/helpers/baseline.d.ts.map +1 -0
  289. package/dist/helpers/baseline.js +664 -0
  290. package/dist/helpers/baseline.js.map +1 -0
  291. package/dist/helpers/body-traversal.d.ts +27 -2
  292. package/dist/helpers/body-traversal.d.ts.map +1 -1
  293. package/dist/helpers/body-traversal.js +122 -16
  294. package/dist/helpers/body-traversal.js.map +1 -1
  295. package/dist/helpers/callback-extractor.d.ts.map +1 -1
  296. package/dist/helpers/callback-extractor.js +48 -47
  297. package/dist/helpers/callback-extractor.js.map +1 -1
  298. package/dist/helpers/complexity.d.ts +13 -5
  299. package/dist/helpers/complexity.d.ts.map +1 -1
  300. package/dist/helpers/complexity.js +15 -6
  301. package/dist/helpers/complexity.js.map +1 -1
  302. package/dist/helpers/diff-aware.d.ts +44 -0
  303. package/dist/helpers/diff-aware.d.ts.map +1 -0
  304. package/dist/helpers/diff-aware.js +84 -0
  305. package/dist/helpers/diff-aware.js.map +1 -0
  306. package/dist/helpers/matchers.d.ts +68 -7
  307. package/dist/helpers/matchers.d.ts.map +1 -1
  308. package/dist/helpers/matchers.js +114 -20
  309. package/dist/helpers/matchers.js.map +1 -1
  310. package/dist/helpers/slice-graph.d.ts +100 -8
  311. package/dist/helpers/slice-graph.d.ts.map +1 -1
  312. package/dist/helpers/slice-graph.js +126 -34
  313. package/dist/helpers/slice-graph.js.map +1 -1
  314. package/dist/helpers/tarjan.d.ts +0 -14
  315. package/dist/helpers/tarjan.d.ts.map +1 -1
  316. package/dist/helpers/tarjan.js +29 -16
  317. package/dist/helpers/tarjan.js.map +1 -1
  318. package/dist/index.d.ts +56 -17
  319. package/dist/index.d.ts.map +1 -1
  320. package/dist/index.js +57 -13
  321. package/dist/index.js.map +1 -1
  322. package/dist/models/arch-call.d.ts +3 -2
  323. package/dist/models/arch-call.d.ts.map +1 -1
  324. package/dist/models/arch-call.js.map +1 -1
  325. package/dist/models/arch-function.d.ts +28 -6
  326. package/dist/models/arch-function.d.ts.map +1 -1
  327. package/dist/models/arch-function.js +106 -3
  328. package/dist/models/arch-function.js.map +1 -1
  329. package/dist/models/arch-jsx-element.js +2 -2
  330. package/dist/models/arch-jsx-element.js.map +1 -1
  331. package/dist/models/slice.d.ts +33 -9
  332. package/dist/models/slice.d.ts.map +1 -1
  333. package/dist/models/slice.js +129 -19
  334. package/dist/models/slice.js.map +1 -1
  335. package/dist/predicates/call.d.ts.map +1 -1
  336. package/dist/predicates/call.js +5 -0
  337. package/dist/predicates/call.js.map +1 -1
  338. package/dist/predicates/identity.d.ts +21 -0
  339. package/dist/predicates/identity.d.ts.map +1 -1
  340. package/dist/predicates/identity.js +75 -3
  341. package/dist/predicates/identity.js.map +1 -1
  342. package/dist/predicates/index.d.ts +1 -1
  343. package/dist/predicates/index.d.ts.map +1 -1
  344. package/dist/predicates/index.js +1 -1
  345. package/dist/predicates/index.js.map +1 -1
  346. package/dist/predicates/metrics.d.ts +4 -2
  347. package/dist/predicates/metrics.d.ts.map +1 -1
  348. package/dist/predicates/metrics.js +4 -2
  349. package/dist/predicates/metrics.js.map +1 -1
  350. package/dist/predicates/module.d.ts +4 -12
  351. package/dist/predicates/module.d.ts.map +1 -1
  352. package/dist/predicates/module.js +57 -37
  353. package/dist/predicates/module.js.map +1 -1
  354. package/dist/presets/agent-guardrails.d.ts +22 -15
  355. package/dist/presets/agent-guardrails.d.ts.map +1 -1
  356. package/dist/presets/agent-guardrails.js +124 -19
  357. package/dist/presets/agent-guardrails.js.map +1 -1
  358. package/dist/presets/boundaries.d.ts +45 -2
  359. package/dist/presets/boundaries.d.ts.map +1 -1
  360. package/dist/presets/boundaries.js +132 -23
  361. package/dist/presets/boundaries.js.map +1 -1
  362. package/dist/presets/data-layer.d.ts +22 -2
  363. package/dist/presets/data-layer.d.ts.map +1 -1
  364. package/dist/presets/data-layer.js +58 -16
  365. package/dist/presets/data-layer.js.map +1 -1
  366. package/dist/presets/index.d.ts +7 -5
  367. package/dist/presets/index.d.ts.map +1 -1
  368. package/dist/presets/index.js +9 -3
  369. package/dist/presets/index.js.map +1 -1
  370. package/dist/presets/layered.d.ts +46 -2
  371. package/dist/presets/layered.d.ts.map +1 -1
  372. package/dist/presets/layered.js +66 -29
  373. package/dist/presets/layered.js.map +1 -1
  374. package/dist/presets/recommended.d.ts +80 -9
  375. package/dist/presets/recommended.d.ts.map +1 -1
  376. package/dist/presets/recommended.js +25 -23
  377. package/dist/presets/recommended.js.map +1 -1
  378. package/dist/presets/shared.d.ts +270 -2
  379. package/dist/presets/shared.d.ts.map +1 -1
  380. package/dist/presets/shared.js +338 -4
  381. package/dist/presets/shared.js.map +1 -1
  382. package/dist/rules/code-quality.d.ts.map +1 -1
  383. package/dist/rules/code-quality.js +15 -6
  384. package/dist/rules/code-quality.js.map +1 -1
  385. package/dist/rules/hygiene.d.ts +1 -1
  386. package/dist/rules/hygiene.js +1 -1
  387. package/dist/rules/metrics-function.d.ts +2 -1
  388. package/dist/rules/metrics-function.d.ts.map +1 -1
  389. package/dist/rules/metrics-function.js +33 -6
  390. package/dist/rules/metrics-function.js.map +1 -1
  391. package/dist/rules/metrics.d.ts +2 -1
  392. package/dist/rules/metrics.d.ts.map +1 -1
  393. package/dist/rules/metrics.js +39 -9
  394. package/dist/rules/metrics.js.map +1 -1
  395. package/dist/smells/duplicate-bodies.d.ts +58 -5
  396. package/dist/smells/duplicate-bodies.d.ts.map +1 -1
  397. package/dist/smells/duplicate-bodies.js +137 -56
  398. package/dist/smells/duplicate-bodies.js.map +1 -1
  399. package/dist/smells/fingerprint.d.ts +8 -1
  400. package/dist/smells/fingerprint.d.ts.map +1 -1
  401. package/dist/smells/fingerprint.js +21 -3
  402. package/dist/smells/fingerprint.js.map +1 -1
  403. package/dist/smells/inconsistent-siblings.d.ts +128 -7
  404. package/dist/smells/inconsistent-siblings.d.ts.map +1 -1
  405. package/dist/smells/inconsistent-siblings.js +288 -86
  406. package/dist/smells/inconsistent-siblings.js.map +1 -1
  407. package/dist/smells/sibling-files.d.ts +47 -0
  408. package/dist/smells/sibling-files.d.ts.map +1 -0
  409. package/dist/smells/sibling-files.js +104 -0
  410. package/dist/smells/sibling-files.js.map +1 -0
  411. package/dist/smells/similar-pairs.d.ts +27 -0
  412. package/dist/smells/similar-pairs.d.ts.map +1 -0
  413. package/dist/smells/similar-pairs.js +52 -0
  414. package/dist/smells/similar-pairs.js.map +1 -0
  415. package/dist/smells/smell-builder.d.ts +57 -12
  416. package/dist/smells/smell-builder.d.ts.map +1 -1
  417. package/dist/smells/smell-builder.js +111 -14
  418. package/dist/smells/smell-builder.js.map +1 -1
  419. package/dist/tsconfig/index.d.ts +19 -0
  420. package/dist/tsconfig/index.d.ts.map +1 -0
  421. package/dist/tsconfig/index.js +20 -0
  422. package/dist/tsconfig/index.js.map +1 -0
  423. package/dist/tsconfig/tsconfig-builder.d.ts +42 -9
  424. package/dist/tsconfig/tsconfig-builder.d.ts.map +1 -1
  425. package/dist/tsconfig/tsconfig-builder.js +64 -16
  426. package/dist/tsconfig/tsconfig-builder.js.map +1 -1
  427. package/package.json +3 -2
  428. package/dist/core/module-dependencies.d.ts +0 -28
  429. package/dist/core/module-dependencies.d.ts.map +0 -1
  430. package/dist/core/module-dependencies.js +0 -35
  431. package/dist/core/module-dependencies.js.map +0 -1
  432. package/dist/helpers/within.d.ts.map +0 -1
  433. package/dist/helpers/within.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { not } from '@nielspeter/eess';
1
+ import { not } from '../core/combinators.js';
2
2
  import { resideInFolder as resideInFolderPredicate } from '../predicates/identity.js';
3
3
  import { slices } from '../builders/slice-rule-builder.js';
4
4
  import { modules } from '../builders/module-rule-builder.js';
5
- import { dispatchRule, validateOverrides, finishPreset } from './shared.js';
5
+ import { collectRule, overrideFindings, validateOverrides, declaredEmptyFindings, deliver, } from './shared.js';
6
6
  const RULE_IDS = [
7
7
  'preset/layered/layer-order',
8
8
  'preset/layered/no-cycles',
@@ -13,24 +13,29 @@ const RULE_IDS = [
13
13
  /**
14
14
  * Collect violations for type-import-only rules on specified layers.
15
15
  */
16
- function applyTypeImportRules(p, typeImportsAllowed, layerGlobs, overrides) {
17
- const violations = [];
16
+ function applyTypeImportRules(p, typeImportsAllowed, layerGlobs, config, constructed) {
17
+ const builders = [];
18
18
  for (const layerGlob of typeImportsAllowed) {
19
19
  const otherLayerGlobs = layerGlobs.filter((g) => g !== layerGlob);
20
20
  if (otherLayerGlobs.length > 0) {
21
- violations.push(...dispatchRule(modules(p)
21
+ builders.push(...collectRule(modules(p)
22
22
  .that()
23
23
  .resideInFolder(layerGlob)
24
24
  .should()
25
- .onlyHaveTypeImportsFrom(...otherLayerGlobs), 'preset/layered/type-imports-only', 'warn', overrides));
25
+ .onlyHaveTypeImportsFrom(...otherLayerGlobs), {
26
+ id: 'preset/layered/type-imports-only',
27
+ because: 'a runtime import from this layer creates a real dependency, where a type-only import creates none and disappears at compile time',
28
+ suggestion: 'Use `import type { X }` so the dependency is erased, or move the value you need into a layer this one is allowed to depend on.',
29
+ imperative: 'Use `import type` for cross-layer imports from this layer',
30
+ }, 'warn', config, constructed));
26
31
  }
27
32
  }
28
- return violations;
33
+ return builders;
29
34
  }
30
35
  /**
31
36
  * Collect violations for restricted-package rules.
32
37
  */
33
- function applyRestrictedPackages(p, restrictedPackages, overrides) {
38
+ function applyRestrictedPackages(p, restrictedPackages, config, constructed) {
34
39
  // Invert: for each package, find which layers are allowed
35
40
  const packageToAllowed = new Map();
36
41
  for (const [layerGlob, packages] of Object.entries(restrictedPackages)) {
@@ -44,60 +49,92 @@ function applyRestrictedPackages(p, restrictedPackages, overrides) {
44
49
  }
45
50
  }
46
51
  }
47
- const violations = [];
52
+ const builders = [];
48
53
  for (const [pkg, allowedLayers] of packageToAllowed) {
49
- // Modules NOT in any allowed layer must not import this package
50
- const builder = modules(p).that();
54
+ // Modules NOT in any allowed layer must not import this package.
55
+ //
56
+ // `builder = builder.satisfy(...)`, not a bare call: since bug 0016 a
57
+ // builder is immutable, so discarding the return discards the predicate.
58
+ // This was the only site in the codebase relying on the old mutation, and
59
+ // it is the reason the fix is a behaviour change rather than a refactor.
60
+ let builder = modules(p).that();
51
61
  for (const allowedGlob of allowedLayers) {
52
- builder.satisfy(not(resideInFolderPredicate(allowedGlob)));
62
+ builder = builder.satisfy(not(resideInFolderPredicate(allowedGlob)));
53
63
  }
54
- violations.push(...dispatchRule(builder.should().notImportFrom(pkg), 'preset/layered/restricted-packages', 'error', overrides));
64
+ builders.push(...collectRule(builder.should().notImportFromWithOptions([pkg], config.importOptions ?? {}), {
65
+ id: 'preset/layered/restricted-packages',
66
+ because: 'this layer is meant to be independent of that package, so importing it here spreads the dependency past the layer that owns it',
67
+ suggestion: 'Move the call into the layer permitted to use the package and expose the result through a function or interface this layer may depend on.',
68
+ imperative: 'Do NOT import a restricted package in this layer',
69
+ }, 'error', config, constructed));
55
70
  }
56
- return violations;
71
+ return builders;
57
72
  }
58
- /**
59
- * Enforce a layered architecture: dependency direction, cycle freedom,
60
- * and optional package restrictions.
61
- */
62
73
  export function layeredArchitecture(p, options) {
63
- const overrides = options.overrides;
64
- validateOverrides(overrides, [...RULE_IDS]);
74
+ const config = options;
75
+ const constructed = [];
76
+ validateOverrides(config.overrides, [...RULE_IDS]);
77
+ const overrideProblems = overrideFindings(config.overrides, RULE_IDS);
65
78
  const layerNames = Object.keys(options.layers);
66
79
  const layerGlobs = Object.values(options.layers);
67
80
  const sharedGlobs = options.shared ?? [];
68
- const violations = [];
81
+ const builders = [];
69
82
  // --- Layer order (slices) ---
70
83
  const layerDef = {};
71
84
  for (const [name, glob] of Object.entries(options.layers)) {
72
85
  layerDef[name] = glob;
73
86
  }
74
- violations.push(...dispatchRule(slices(p)
87
+ builders.push(...collectRule(slices(p)
75
88
  .assignedFrom(layerDef)
76
89
  .should()
77
- .respectLayerOrder(...layerNames), 'preset/layered/layer-order', 'error', overrides));
90
+ .respectLayerOrder(layerNames, options.importOptions ?? {}), {
91
+ id: 'preset/layered/layer-order',
92
+ because: 'an import against the declared layer order inverts the architecture — the outer layer becomes a dependency of the inner one',
93
+ suggestion: 'Depend inwards only. Move the shared piece into the inner layer, or invert the call with an interface the inner layer declares and the outer implements.',
94
+ imperative: 'Do NOT import outwards across layers — depend inwards only',
95
+ }, 'error', config, constructed));
78
96
  // --- No cycles ---
79
- violations.push(...dispatchRule(slices(p).assignedFrom(layerDef).should().beFreeOfCycles(), 'preset/layered/no-cycles', 'error', overrides));
97
+ builders.push(...collectRule(slices(p).assignedFrom(layerDef).should().beFreeOfCycles(options.importOptions), {
98
+ id: 'preset/layered/no-cycles',
99
+ because: 'layers in a cycle have no order, so the layering they are declared with means nothing. Since v0.48.0 a cycle formed by `export … from` (a barrel) IS detected; dynamic `import()` still is not, deliberately, because it is lazy and is usually the fix rather than the fault.',
100
+ suggestion: 'Break the cycle at its weakest edge: move the shared type into the inner layer, or invert one direction with an interface.',
101
+ imperative: 'Do NOT create an import cycle between layers',
102
+ }, 'error', config, constructed));
80
103
  // --- Innermost isolation (strict mode) ---
81
104
  if (options.strict && layerNames.length > 0) {
82
105
  const innermostName = layerNames[layerNames.length - 1];
83
106
  const innermostGlob = innermostName !== undefined ? options.layers[innermostName] : undefined;
84
107
  if (innermostName && innermostGlob) {
85
108
  const allowedGlobs = [innermostGlob, ...sharedGlobs];
86
- violations.push(...dispatchRule(modules(p)
109
+ builders.push(...collectRule(modules(p)
87
110
  .that()
88
111
  .resideInFolder(innermostGlob)
89
112
  .should()
90
- .onlyImportFrom(...allowedGlobs), 'preset/layered/innermost-isolation', 'error', overrides));
113
+ // Forwarded, like `respectLayerOrder` and `beFreeOfCycles`. This is
114
+ // an isolation rule and `docs/presets.md` promises the option reaches
115
+ // them; measured before the fix, `{ ignoreTypeImports: true }` cleared
116
+ // `layer-order` and left `innermost-isolation` reporting the SAME
117
+ // erased edge — one preset answering the project's one question twice.
118
+ .onlyImportFromWithOptions(allowedGlobs, options.importOptions ?? {}), {
119
+ id: 'preset/layered/innermost-isolation',
120
+ because: 'the innermost layer is the one everything else depends on, so any dependency it takes is inherited by the entire system',
121
+ suggestion: 'Keep it self-contained: move the dependency outwards, or express what it needs as an interface the innermost layer declares and an outer layer implements.',
122
+ imperative: 'Do NOT add dependencies to the innermost layer',
123
+ }, 'error', config, constructed));
91
124
  }
92
125
  }
93
126
  // --- Type imports only for specified layers ---
94
127
  if (options.typeImportsAllowed && options.typeImportsAllowed.length > 0) {
95
- violations.push(...applyTypeImportRules(p, options.typeImportsAllowed, layerGlobs, overrides));
128
+ builders.push(...applyTypeImportRules(p, options.typeImportsAllowed, layerGlobs, config, constructed));
96
129
  }
97
130
  // --- Restricted packages ---
98
131
  if (options.restrictedPackages) {
99
- violations.push(...applyRestrictedPackages(p, options.restrictedPackages, overrides));
132
+ builders.push(...applyRestrictedPackages(p, options.restrictedPackages, config, constructed));
100
133
  }
101
- return finishPreset(violations, options);
134
+ // Unknown override keys FIRST: they say the configuration is wrong, which
135
+ // the reader needs before any finding produced under it (bug 0038).
136
+ // Constructed, not merely known: a rule whose option was never enabled, or that
137
+ // was overridden `off`, is not built — so a declaration naming it is dead.
138
+ return deliver([...overrideProblems, ...declaredEmptyFindings(config.expectEmpty, constructed), ...builders], options);
102
139
  }
103
140
  //# sourceMappingURL=layered.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layered.js","sourceRoot":"","sources":["../../src/presets/layered.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layered.js","sourceRoot":"","sources":["../../src/presets/layered.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,104 @@
1
+ import type { ArchViolation } from '@nielspeter/eess';
1
2
  import type { ArchProject } from '../core/project.js';
2
- import type { ArchViolation } from '../core/violation.js';
3
+ import type { Condition } from '@nielspeter/eess';
4
+ import type { ArchFunction } from '../models/arch-function.js';
5
+ import type { RuleBuilderLike } from '@nielspeter/eess';
3
6
  import type { PresetBaseOptions } from './shared.js';
4
- export interface RecommendedOptions extends PresetBaseOptions {
7
+ export interface RecommendedOptions extends PresetBaseOptions<RecommendedRuleId> {
5
8
  /**
6
9
  * Source-file glob the rules apply to. Defaults to `'**\/src/**'`, matched
7
10
  * against each file's absolute path (picomatch). This scopes the rules to your
8
11
  * source tree by convention — it does NOT itself exclude `node_modules` or
9
12
  * generated files (any `src/` segment anywhere in the path matches). Projects
10
13
  * whose source lives outside a `src/` folder (e.g. `lib/`) should override.
14
+ * Note: because the match is on the absolute path, an ancestor directory named
15
+ * `src` (e.g. a clone under `~/src/`) widens scope — anchor with a project-root
16
+ * glob if that matters.
11
17
  */
12
18
  include?: string;
13
19
  }
20
+ /**
21
+ * Single source of truth for the floor. `RULE_IDS` (for override validation) and
22
+ * the builder loop both derive from this — add a rule here and nothing else
23
+ * needs updating.
24
+ */
25
+ declare const SPECS: readonly [{
26
+ readonly condition: Condition<ArchFunction>;
27
+ readonly meta: {
28
+ readonly id: "preset/recommended/no-eval";
29
+ readonly because: "eval() executes arbitrary code — a code-injection risk";
30
+ readonly suggestion: "remove eval(); parse or dispatch explicitly";
31
+ readonly imperative: "Do NOT call eval()";
32
+ };
33
+ readonly default: "error";
34
+ }, {
35
+ readonly condition: Condition<ArchFunction>;
36
+ readonly meta: {
37
+ readonly id: "preset/recommended/no-function-constructor";
38
+ readonly because: "the Function constructor is eval() in disguise";
39
+ readonly suggestion: "define the function directly instead of building it from a string";
40
+ readonly imperative: "Do NOT use the Function constructor";
41
+ };
42
+ readonly default: "error";
43
+ }, {
44
+ readonly condition: Condition<ArchFunction>;
45
+ readonly meta: {
46
+ readonly id: "preset/recommended/no-silent-catch";
47
+ readonly because: "a silent catch hides failures";
48
+ readonly suggestion: "handle or rethrow the caught error (reference it in the catch)";
49
+ readonly imperative: "Do NOT swallow errors in an empty catch";
50
+ };
51
+ readonly default: "warn";
52
+ }, {
53
+ readonly condition: Condition<ArchFunction>;
54
+ readonly meta: {
55
+ readonly id: "preset/recommended/no-empty-bodies";
56
+ readonly because: "an empty function body is usually an unfinished stub";
57
+ readonly suggestion: "implement the body or remove the function";
58
+ readonly imperative: "Do NOT leave a function body empty";
59
+ };
60
+ readonly default: "warn";
61
+ }];
62
+ /**
63
+ * Derived from `SPECS`, never restated. A hand-written union is a second list
64
+ * that drifts the moment a rule is added — which is the whole shape of
65
+ * [bug 0157](../../../../work/bugs/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md)
66
+ * and of the census in plan 0078.
67
+ */
68
+ type RecommendedRuleId = (typeof SPECS)[number]['meta']['id'];
14
69
  /**
15
70
  * A deliberately **thin, universal safety floor** for any TypeScript project —
16
71
  * the handful of things dangerous regardless of project shape that fire ~never
17
72
  * on healthy code. Not a full architecture: shape-specific rules (layer order,
18
73
  * cycles, delegation) are yours to add.
19
74
  *
20
- * Returns `ArchViolation[]` (the eager ADR-008 form) and ends in `finishPreset`,
21
- * so a caller can `recommended(p, { report: 'return' })` to own emission, or by
22
- * default let it throw on any error-severity violation. The two `warn` rules
23
- * (silent-catch, empty-bodies) are reported to stderr but never fail and are NOT
24
- * aggregated into the returned array — they have known, suppressible false
25
- * positives; override to `'error'` to include them. Severity is tunable via
26
- * `overrides`.
75
+ * Returns severity-carrying builders (the returning form), so spread it into a
76
+ * rule file: `export default [...recommended(p)]`. The two `error` rules fail
77
+ * the run; the two `warn` rules (silent-catch, empty-bodies) are reported but
78
+ * never fail **when the rule works** — they have known, suppressible false
79
+ * positives. A configuration finding (a rule that examined zero units, or whose
80
+ * glob is dead) is `error` regardless of severity and fails the build: `'warn'`
81
+ * grades violations, not a rule that cannot enforce anything.
27
82
  *
28
83
  * Overlaps `agentGuardrails` on empty bodies and `eval`. For agent-focused
29
84
  * projects prefer `agentGuardrails` alone, or override the duplicated ids to
30
85
  * `'off'` in one preset.
31
86
  */
87
+ /**
88
+ * `report` names a delivery mode; omitting it returns the un-executed builders.
89
+ *
90
+ * Overloaded so the common call keeps its exact type — a bare union would make
91
+ * every existing `.violations()` call site an error (26 test files, measured).
92
+ *
93
+ * **The reporting overload is declared FIRST, and that ordering is load-bearing.**
94
+ * `Parameters<typeof preset>[1]` resolves to the LAST overload, and several tests
95
+ * type their options helper that way; with the builder overload last, that helper
96
+ * keeps the shape callers actually use. Overload resolution still picks the
97
+ * reporting one for a call that names `report`, because it is the first match.
98
+ */
99
+ export declare function recommended(p: ArchProject, options: RecommendedOptions & {
100
+ report: 'builders';
101
+ }): RuleBuilderLike[];
32
102
  export declare function recommended(p: ArchProject, options?: RecommendedOptions): ArchViolation[];
103
+ export {};
33
104
  //# sourceMappingURL=recommended.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../src/presets/recommended.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAMzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGpD,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AA0DD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,GAAE,kBAAuB,GAAG,aAAa,EAAE,CAiB7F"}
1
+ {"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../src/presets/recommended.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAK9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAUpD,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC;IAC9E;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAQD;;;;GAIG;AACH,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyC6B,CAAA;AAExC;;;;;GAKG;AACH,KAAK,iBAAiB,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AAI7D;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE,WAAW,EACd,OAAO,EAAE,kBAAkB,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACnD,eAAe,EAAE,CAAA;AACpB,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,aAAa,EAAE,CAAA"}
@@ -2,10 +2,10 @@ import { functions } from '../builders/function-rule-builder.js';
2
2
  import { functionNoEval, functionNoFunctionConstructor } from '../rules/security.js';
3
3
  import { functionNoSilentCatch } from '../rules/errors.js';
4
4
  import { noEmptyBodies } from '../rules/hygiene.js';
5
- import { dispatchRule, validateOverrides, finishPreset } from './shared.js';
5
+ import { overrideFindings, validateOverrides, declareEmptyIfListed, presetDeclarationSpelling, declaredEmptyFindings, deliver, } from './shared.js';
6
6
  /**
7
7
  * Single source of truth for the floor. `RULE_IDS` (for override validation) and
8
- * the dispatch loop both derive from this — add a rule here and nothing else
8
+ * the builder loop both derive from this — add a rule here and nothing else
9
9
  * needs updating.
10
10
  */
11
11
  const SPECS = [
@@ -51,31 +51,33 @@ const SPECS = [
51
51
  },
52
52
  ];
53
53
  const RULE_IDS = SPECS.map((s) => s.meta.id);
54
- /**
55
- * A deliberately **thin, universal safety floor** for any TypeScript project —
56
- * the handful of things dangerous regardless of project shape that fire ~never
57
- * on healthy code. Not a full architecture: shape-specific rules (layer order,
58
- * cycles, delegation) are yours to add.
59
- *
60
- * Returns `ArchViolation[]` (the eager ADR-008 form) and ends in `finishPreset`,
61
- * so a caller can `recommended(p, { report: 'return' })` to own emission, or by
62
- * default let it throw on any error-severity violation. The two `warn` rules
63
- * (silent-catch, empty-bodies) are reported to stderr but never fail and are NOT
64
- * aggregated into the returned array — they have known, suppressible false
65
- * positives; override to `'error'` to include them. Severity is tunable via
66
- * `overrides`.
67
- *
68
- * Overlaps `agentGuardrails` on empty bodies and `eval`. For agent-focused
69
- * projects prefer `agentGuardrails` alone, or override the duplicated ids to
70
- * `'off'` in one preset.
71
- */
72
54
  export function recommended(p, options = {}) {
73
55
  const include = options.include ?? '**/src/**';
74
56
  validateOverrides(options.overrides, RULE_IDS);
75
- const violations = [];
57
+ const overrideProblems = overrideFindings(options.overrides, RULE_IDS);
58
+ const builders = [];
59
+ const constructed = [];
76
60
  for (const { condition, meta, default: def } of SPECS) {
77
- violations.push(...dispatchRule(functions(p).that().resideInFile(include).should().satisfy(condition), meta, def, options.overrides));
61
+ const sev = options.overrides?.[meta.id] ?? def;
62
+ if (sev === 'off')
63
+ continue;
64
+ constructed.push(meta.id);
65
+ builders.push(
66
+ // Plan 0089's carrier. Applied at construction so it reaches every rule
67
+ // this preset builds, not only the ones routed through `collectRule`.
68
+ declareEmptyIfListed(functions(p, { includeObjectLiteralFunctions: true })
69
+ .that()
70
+ .resideInFile(include)
71
+ .should()
72
+ .satisfy(condition)
73
+ .rule({ ...meta, declarationSpelling: presetDeclarationSpelling(meta.id) })
74
+ .asSeverity(sev), meta.id, options));
78
75
  }
79
- return finishPreset(violations, options);
76
+ // Unknown override keys FIRST: they say the configuration is wrong, which
77
+ // the reader needs before any finding produced under it (bug 0038).
78
+ // Unbound declarations sit with the unknown-override findings: both say the
79
+ // configuration is wrong, which the reader needs before any finding produced
80
+ // under it (bug 0038).
81
+ return deliver([...overrideProblems, ...declaredEmptyFindings(options.expectEmpty, constructed), ...builders], options);
80
82
  }
81
83
  //# sourceMappingURL=recommended.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recommended.js","sourceRoot":"","sources":["../../src/presets/recommended.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAmB3E;;;;GAIG;AACH,MAAM,KAAK,GAAwB;IACjC;QACE,SAAS,EAAE,cAAc,EAAE;QAC3B,IAAI,EAAE;YACJ,EAAE,EAAE,4BAA4B;YAChC,OAAO,EAAE,wDAAwD;YACjE,UAAU,EAAE,6CAA6C;YACzD,UAAU,EAAE,oBAAoB;SACjC;QACD,OAAO,EAAE,OAAO;KACjB;IACD;QACE,SAAS,EAAE,6BAA6B,EAAE;QAC1C,IAAI,EAAE;YACJ,EAAE,EAAE,4CAA4C;YAChD,OAAO,EAAE,gDAAgD;YACzD,UAAU,EAAE,mEAAmE;YAC/E,UAAU,EAAE,qCAAqC;SAClD;QACD,OAAO,EAAE,OAAO;KACjB;IACD;QACE,SAAS,EAAE,qBAAqB,EAAE;QAClC,IAAI,EAAE;YACJ,EAAE,EAAE,oCAAoC;YACxC,OAAO,EAAE,+BAA+B;YACxC,UAAU,EAAE,gEAAgE;YAC5E,UAAU,EAAE,yCAAyC;SACtD;QACD,OAAO,EAAE,MAAM;KAChB;IACD;QACE,SAAS,EAAE,aAAa,EAAE;QAC1B,IAAI,EAAE;YACJ,EAAE,EAAE,oCAAoC;YACxC,OAAO,EAAE,sDAAsD;YAC/D,UAAU,EAAE,2CAA2C;YACvD,UAAU,EAAE,oCAAoC;SACjD;QACD,OAAO,EAAE,MAAM;KAChB;CACF,CAAA;AAED,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAE5C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,WAAW,CAAC,CAAc,EAAE,UAA8B,EAAE;IAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,CAAA;IAC9C,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAE9C,MAAM,UAAU,GAAoB,EAAE,CAAA;IACtC,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC;QACtD,UAAU,CAAC,IAAI,CACb,GAAG,YAAY,CACb,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EACrE,IAAI,EACJ,GAAG,EACH,OAAO,CAAC,SAAS,CAClB,CACF,CAAA;IACH,CAAC;IAED,OAAO,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;AAC1C,CAAC"}
1
+ {"version":3,"file":"recommended.js","sourceRoot":"","sources":["../../src/presets/recommended.ts"],"names":[],"mappings":"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"}