@codeperfect/eslint-plugin 2.0.0 → 2.2.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 (301) hide show
  1. package/README.md +3 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/application/custom-rules.d.ts +8 -8
  4. package/dist/application/custom-rules.js +14 -14
  5. package/dist/application/index.d.ts +1 -1
  6. package/dist/application/index.d.ts.map +1 -1
  7. package/dist/application/index.js +2 -2
  8. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  9. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +3 -4
  10. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -1
  11. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +5 -3
  12. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -1
  13. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +17 -7
  14. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
  15. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +36 -4
  16. package/dist/domain/architecture/consistent-barrel-files/index.d.ts +2 -0
  17. package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -1
  18. package/dist/domain/architecture/consistent-barrel-files/index.js +3 -1
  19. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts +5 -0
  20. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -0
  21. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +247 -0
  22. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts +5 -0
  23. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -0
  24. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +136 -0
  25. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -1
  26. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +8 -3
  27. package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
  28. package/dist/domain/architecture/consistent-barrel-files/rule.js +12 -5
  29. package/dist/domain/architecture/index.d.ts +2 -1
  30. package/dist/domain/architecture/index.d.ts.map +1 -1
  31. package/dist/domain/architecture/index.js +3 -2
  32. package/dist/domain/architecture/no-unused-exports/index.d.ts +3 -0
  33. package/dist/domain/architecture/no-unused-exports/index.d.ts.map +1 -0
  34. package/dist/domain/architecture/no-unused-exports/index.js +2 -0
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts +50 -0
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -0
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +141 -0
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +49 -0
  39. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -0
  40. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +608 -0
  41. package/dist/domain/architecture/no-unused-exports/rule.d.ts +5 -0
  42. package/dist/domain/architecture/no-unused-exports/rule.d.ts.map +1 -0
  43. package/dist/domain/architecture/no-unused-exports/rule.js +82 -0
  44. package/dist/domain/architecture/no-unused-exports/types.d.ts +32 -0
  45. package/dist/domain/architecture/no-unused-exports/types.d.ts.map +1 -0
  46. package/dist/domain/architecture/no-unused-exports/types.js +2 -0
  47. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  48. package/dist/domain/core/no-multiple-declarators/rule.js +58 -6
  49. package/dist/domain/core/no-multiple-declarators/types.d.ts +3 -1
  50. package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -1
  51. package/dist/domain/core/no-multiple-declarators/types.js +5 -2
  52. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  53. package/dist/domain/core/prefer-interface-types/rule.js +94 -23
  54. package/dist/domain/custom-rule-documentation.d.ts +3 -14
  55. package/dist/domain/custom-rule-documentation.d.ts.map +1 -1
  56. package/dist/domain/custom-rule-documentation.js +3 -2
  57. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  58. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +11 -2
  59. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
  60. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +1 -1
  61. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +1 -1
  62. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  63. package/dist/domain/docs/no-interface-member-docs/rule.js +12 -4
  64. package/dist/domain/docs/require-example-language/examples.d.ts +4 -15
  65. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  66. package/dist/domain/docs/require-example-language/examples.js +119 -26
  67. package/dist/domain/docs/require-example-language/fixes.d.ts +1 -21
  68. package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
  69. package/dist/domain/docs/require-example-language/fixes.js +5 -2
  70. package/dist/domain/docs/require-example-language/reporting.d.ts +2 -38
  71. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
  72. package/dist/domain/docs/require-example-language/reporting.js +2 -2
  73. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  74. package/dist/domain/docs/require-example-language/rule.js +7 -3
  75. package/dist/domain/docs/require-example-language/types.d.ts +1 -1
  76. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  77. package/dist/domain/docs/require-example-language/types.js +1 -1
  78. package/dist/domain/docs/single-line-jsdoc/rule.d.ts +1 -2
  79. package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
  80. package/dist/domain/docs/single-line-jsdoc/rule.js +18 -13
  81. package/dist/domain/index.d.ts +2 -3
  82. package/dist/domain/index.d.ts.map +1 -1
  83. package/dist/domain/index.js +3 -4
  84. package/dist/domain/testing/aaa/analyzer.analysis.d.ts +2 -78
  85. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
  86. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +121 -3
  87. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  88. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +199 -4
  89. package/dist/domain/testing/aaa/analyzer.analysis.js +30 -188
  90. package/dist/domain/testing/aaa/analyzer.assertions.d.ts +1 -92
  91. package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -1
  92. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +93 -0
  93. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -0
  94. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +184 -0
  95. package/dist/domain/testing/aaa/analyzer.assertions.js +5 -283
  96. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +62 -0
  97. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -0
  98. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +106 -0
  99. package/dist/domain/testing/aaa/analyzer.classification.d.ts +1 -74
  100. package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -1
  101. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +75 -0
  102. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -0
  103. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +202 -0
  104. package/dist/domain/testing/aaa/analyzer.classification.js +5 -201
  105. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +13 -0
  106. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -0
  107. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +32 -0
  108. package/dist/domain/testing/aaa/analyzer.super.d.ts +6 -13
  109. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  110. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +14 -0
  111. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -0
  112. package/dist/domain/testing/aaa/analyzer.super.helpers.js +64 -0
  113. package/dist/domain/testing/aaa/analyzer.super.js +29 -61
  114. package/dist/domain/testing/aaa/index.d.ts +1 -2
  115. package/dist/domain/testing/aaa/index.d.ts.map +1 -1
  116. package/dist/domain/testing/aaa/index.js +2 -2
  117. package/dist/domain/testing/aaa/types.d.ts +1 -1
  118. package/dist/domain/testing/aaa/types.d.ts.map +1 -1
  119. package/dist/domain/testing/aaa/types.js +1 -1
  120. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
  121. package/dist/domain/testing/assert-actual-expected-names/rule.js +33 -5
  122. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -1
  123. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -1
  124. package/dist/domain/testing/enforce-aaa-phase-purity/index.js +3 -2
  125. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +1 -1
  126. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -1
  127. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
  128. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +1 -1
  129. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
  130. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +78 -16
  131. package/dist/domain/testing/{require-aaa-sections → enforce-aaa-structure}/missing-section-fixes.d.ts +1 -1
  132. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -0
  133. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +150 -0
  134. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  135. package/dist/domain/testing/enforce-aaa-structure/rule.js +165 -3
  136. package/dist/domain/testing/index.d.ts +0 -3
  137. package/dist/domain/testing/index.d.ts.map +1 -1
  138. package/dist/domain/testing/index.js +1 -4
  139. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +1 -15
  140. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -1
  141. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +2 -71
  142. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
  143. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +4 -2
  144. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +1 -13
  145. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
  146. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +3 -21
  147. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
  148. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +2 -1
  149. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
  150. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +1 -1
  151. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +6 -6
  152. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +1 -12
  153. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
  154. package/dist/domain/testing/prefer-vi-mocked-import/match.js +149 -15
  155. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
  156. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +6 -3
  157. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  158. package/dist/domain/testing/require-act-result-capture/rule.js +42 -10
  159. package/dist/domain/testing/require-test-companion/index.d.ts +0 -1
  160. package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -1
  161. package/dist/domain/testing/require-test-companion/index.js +1 -2
  162. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts +2 -1
  163. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
  164. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +13 -58
  165. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts +2 -1
  166. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -1
  167. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -5
  168. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  169. package/dist/domain/testing/require-test-companion/rule.js +34 -9
  170. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
  171. package/dist/domain/testing/single-act-statement/rule.js +11 -5
  172. package/dist/index.d.ts +1 -1
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +2 -2
  175. package/dist/infrastructure/codeperfect-plugin.d.ts +6 -6
  176. package/dist/infrastructure/codeperfect-plugin.js +5 -5
  177. package/dist/infrastructure/presets.d.ts.map +1 -1
  178. package/dist/infrastructure/presets.js +23 -7
  179. package/package.json +37 -38
  180. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +0 -41
  181. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
  182. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -87
  183. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +0 -40
  184. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
  185. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -91
  186. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +0 -4
  187. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +0 -1
  188. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +0 -4
  189. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts +0 -141
  190. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
  191. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +0 -20
  192. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +0 -1
  193. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +0 -25
  194. package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +0 -235
  195. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +0 -101
  196. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +0 -1
  197. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +0 -108
  198. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +0 -35
  199. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +0 -1
  200. package/dist/domain/core/no-multiple-declarators/rule.fixes.js +0 -95
  201. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +0 -4
  202. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +0 -1
  203. package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +0 -4
  204. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +0 -4
  205. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +0 -1
  206. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +0 -4
  207. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts +0 -110
  208. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
  209. package/dist/domain/core/prefer-interface-types/test-helpers.js +0 -116
  210. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -89
  211. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
  212. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
  213. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts +0 -103
  214. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
  215. package/dist/domain/docs/no-interface-member-docs/test-helpers.js +0 -157
  216. package/dist/domain/docs/require-example-language/create-fixer.d.ts +0 -5
  217. package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +0 -1
  218. package/dist/domain/docs/require-example-language/create-fixer.js +0 -5
  219. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +0 -4
  220. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +0 -1
  221. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +0 -5
  222. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +0 -4
  223. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +0 -1
  224. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +0 -5
  225. package/dist/domain/docs/test-helpers.d.ts +0 -50
  226. package/dist/domain/docs/test-helpers.d.ts.map +0 -1
  227. package/dist/domain/docs/test-helpers.js +0 -107
  228. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +0 -9
  229. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +0 -1
  230. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +0 -10
  231. package/dist/domain/testing/aaa/analyzer.d.ts +0 -46
  232. package/dist/domain/testing/aaa/analyzer.d.ts.map +0 -1
  233. package/dist/domain/testing/aaa/analyzer.js +0 -59
  234. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +0 -4
  235. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +0 -1
  236. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +0 -4
  237. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +0 -42
  238. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +0 -1
  239. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +0 -188
  240. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts +0 -5
  241. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
  242. package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +0 -34
  243. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +0 -20
  244. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +0 -1
  245. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +0 -39
  246. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +0 -86
  247. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +0 -1
  248. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +0 -150
  249. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +0 -2
  250. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +0 -1
  251. package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +0 -2
  252. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +0 -14
  253. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +0 -1
  254. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +0 -81
  255. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +0 -13
  256. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +0 -1
  257. package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +0 -189
  258. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +0 -25
  259. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +0 -1
  260. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +0 -92
  261. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +0 -32
  262. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +0 -1
  263. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +0 -164
  264. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +0 -5
  265. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +0 -1
  266. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +0 -4
  267. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +0 -1
  268. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +0 -4
  269. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +0 -4
  270. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +0 -1
  271. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +0 -4
  272. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +0 -62
  273. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +0 -4
  274. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +0 -1
  275. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +0 -4
  276. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +0 -24
  277. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +0 -1
  278. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +0 -113
  279. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +0 -36
  280. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +0 -1
  281. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +0 -138
  282. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +0 -203
  283. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +0 -1
  284. package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +0 -2
  285. package/dist/domain/testing/require-aaa-sections/index.d.ts +0 -2
  286. package/dist/domain/testing/require-aaa-sections/index.d.ts.map +0 -1
  287. package/dist/domain/testing/require-aaa-sections/index.js +0 -2
  288. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +0 -1
  289. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +0 -150
  290. package/dist/domain/testing/require-aaa-sections/rule.d.ts +0 -5
  291. package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +0 -1
  292. package/dist/domain/testing/require-aaa-sections/rule.js +0 -129
  293. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +0 -104
  294. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +0 -1
  295. package/dist/domain/testing/require-aaa-sections/rule.reporting.js +0 -217
  296. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts +0 -51
  297. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
  298. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +0 -184
  299. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts +0 -28
  300. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
  301. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +0 -26
@@ -0,0 +1,50 @@
1
+ import type { NoUnusedExportsState } from "./types.js";
2
+ /** Default public API files where exported symbols are intentionally exposed. */
3
+ export declare const DEFAULT_PUBLIC_API_FILES: readonly ["**/src/index.ts", "**/__tests__/**/*.ts"];
4
+ /** Default glob patterns used to classify test files. */
5
+ export declare const DEFAULT_TEST_FILE_PATTERNS: readonly ["**/*.{test,spec,e2e}.ts", "**/__tests__/**/*.ts"];
6
+ /**
7
+ * Checks whether one file path is lintable.
8
+ * @param filename Input filename.
9
+ * @returns True when the path is absolute and matches source-file scope.
10
+ * @example
11
+ * ```typescript
12
+ * const ok = isLintableFilename("/repo/src/feature.ts");
13
+ * ```
14
+ */
15
+ export declare const isLintableFilename: (filename: string) => boolean;
16
+ /**
17
+ * Builds normalized options from raw rule options.
18
+ * @param options Raw rule options.
19
+ * @returns Normalized options state.
20
+ * @example
21
+ * ```typescript
22
+ * const state = getOptions([{}]);
23
+ * ```
24
+ */
25
+ export declare const getOptions: (options: readonly unknown[]) => NoUnusedExportsState;
26
+ /**
27
+ * Checks whether one file defines a public API export surface.
28
+ * @param filename Absolute filename.
29
+ * @param state Normalized options.
30
+ * @param repoRoot Absolute repository root.
31
+ * @returns True when the file is a public API file.
32
+ * @example
33
+ * ```typescript
34
+ * const publicApiFile = isPublicApiFile("/repo/src/index.ts", state, "/repo");
35
+ * ```
36
+ */
37
+ export declare const isPublicApiFile: (filename: string, state: NoUnusedExportsState, repoRoot: string) => boolean;
38
+ /**
39
+ * Checks whether one file should be treated as a test file.
40
+ * @param filename Absolute filename.
41
+ * @param state Normalized options.
42
+ * @param repoRoot Absolute repository root.
43
+ * @returns True when the file path matches a test pattern.
44
+ * @example
45
+ * ```typescript
46
+ * const testFile = isTestFile("/repo/tests/e2e/demo.ts", state, "/repo");
47
+ * ```
48
+ */
49
+ export declare const isTestFile: (filename: string, state: NoUnusedExportsState, repoRoot: string) => boolean;
50
+ //# sourceMappingURL=no-unused-exports-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-unused-exports-options.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/no-unused-exports-options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA0B,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE5E,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,sDAG3B,CAAC;AAEX,yDAAyD;AACzD,eAAO,MAAM,0BAA0B,8DAG7B,CAAC;AAiBX;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,OAUrD,CAAC;AA4BF;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GACrB,SAAS,SAAS,OAAO,EAAE,KAC1B,oBAaF,CAAC;AAwDF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,OAAO,oBAAoB,EAC3B,UAAU,MAAM,KACf,OAAsE,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,EAChB,OAAO,oBAAoB,EAC3B,UAAU,MAAM,KACf,OAAwE,CAAC"}
@@ -0,0 +1,141 @@
1
+ import { minimatch } from "minimatch";
2
+ import path from "node:path";
3
+ /** Default public API files where exported symbols are intentionally exposed. */
4
+ export const DEFAULT_PUBLIC_API_FILES = [
5
+ "**/src/index.ts",
6
+ "**/__tests__/**/*.ts",
7
+ ];
8
+ /** Default glob patterns used to classify test files. */
9
+ export const DEFAULT_TEST_FILE_PATTERNS = [
10
+ "**/*.{test,spec,e2e}.ts",
11
+ "**/__tests__/**/*.ts",
12
+ ];
13
+ /** Default file pattern used to scope analysis to source files. */
14
+ const DEFAULT_LINTABLE_FILE_PATTERN = "**/src/**/*.ts";
15
+ /**
16
+ * Checks whether one path is absolute and non-empty.
17
+ * @param filename Input filename.
18
+ * @returns True when the path is absolute and non-empty.
19
+ * @example
20
+ * ```typescript
21
+ * const ok = isAbsolutePath("/repo/src/feature.ts");
22
+ * ```
23
+ */
24
+ const isAbsolutePath = (filename) => filename.length > 0 && path.isAbsolute(filename);
25
+ /**
26
+ * Checks whether one file path is lintable.
27
+ * @param filename Input filename.
28
+ * @returns True when the path is absolute and matches source-file scope.
29
+ * @example
30
+ * ```typescript
31
+ * const ok = isLintableFilename("/repo/src/feature.ts");
32
+ * ```
33
+ */
34
+ export const isLintableFilename = (filename) => {
35
+ if (!isAbsolutePath(filename)) {
36
+ return false;
37
+ }
38
+ const normalizedPath = filename.split(path.sep).join("/");
39
+ return minimatch(normalizedPath, DEFAULT_LINTABLE_FILE_PATTERN, {
40
+ dot: true,
41
+ });
42
+ };
43
+ /**
44
+ * Normalizes one rule option value into a string list.
45
+ * @param value Raw option value.
46
+ * @param defaults Default values.
47
+ * @returns Normalized list.
48
+ * @example
49
+ * ```typescript
50
+ * const list = normalizeStringList(["src/**"], ["src/**"]);
51
+ * ```
52
+ */
53
+ const normalizeStringList = (value, defaults) => {
54
+ if (Array.isArray(value)) {
55
+ const normalized = value
56
+ .filter((entry) => typeof entry === "string")
57
+ .map((entry) => entry.trim())
58
+ .filter((entry) => entry.length > 0);
59
+ return normalized.length > 0 ? normalized : [...defaults];
60
+ }
61
+ return [...defaults];
62
+ };
63
+ /**
64
+ * Builds normalized options from raw rule options.
65
+ * @param options Raw rule options.
66
+ * @returns Normalized options state.
67
+ * @example
68
+ * ```typescript
69
+ * const state = getOptions([{}]);
70
+ * ```
71
+ */
72
+ export const getOptions = (options) => {
73
+ const raw = options[0];
74
+ return {
75
+ publicApiFiles: normalizeStringList(raw?.publicApiFiles, DEFAULT_PUBLIC_API_FILES),
76
+ testFilePatterns: normalizeStringList(raw?.testFilePatterns, DEFAULT_TEST_FILE_PATTERNS),
77
+ };
78
+ };
79
+ /**
80
+ * Converts an absolute filename into a repo-root-relative POSIX path.
81
+ * @param filename Absolute filename.
82
+ * @param repoRoot Absolute repository root.
83
+ * @returns Repo-relative POSIX path or undefined when outside repo root.
84
+ * @example
85
+ * ```typescript
86
+ * const relativePath = toRepoRelativePosixPath("/repo/src/feature.ts", "/repo");
87
+ * ```
88
+ */
89
+ const toRepoRelativePosixPath = (filename, repoRoot) => {
90
+ if (!isAbsolutePath(filename) || !isAbsolutePath(repoRoot)) {
91
+ return void 0;
92
+ }
93
+ const relativePath = path.relative(repoRoot, filename);
94
+ if (relativePath.startsWith("..") || path.isAbsolute(relativePath)) {
95
+ return void 0;
96
+ }
97
+ return relativePath.split(path.sep).join("/");
98
+ };
99
+ /**
100
+ * Checks whether one filename matches any glob pattern.
101
+ * @param filename Absolute filename.
102
+ * @param patterns Glob patterns.
103
+ * @param repoRoot Absolute repository root.
104
+ * @returns True when any pattern matches.
105
+ * @example
106
+ * ```typescript
107
+ * const match = matchesAnyPattern("/repo/src/index.ts", ["src-pattern"], "/repo");
108
+ * ```
109
+ */
110
+ const matchesAnyPattern = (filename, patterns, repoRoot) => {
111
+ const relativePath = toRepoRelativePosixPath(filename, repoRoot);
112
+ if (relativePath === void 0 || patterns.length === 0) {
113
+ return false;
114
+ }
115
+ return patterns.some((pattern) => minimatch(relativePath, pattern, { dot: true }));
116
+ };
117
+ /**
118
+ * Checks whether one file defines a public API export surface.
119
+ * @param filename Absolute filename.
120
+ * @param state Normalized options.
121
+ * @param repoRoot Absolute repository root.
122
+ * @returns True when the file is a public API file.
123
+ * @example
124
+ * ```typescript
125
+ * const publicApiFile = isPublicApiFile("/repo/src/index.ts", state, "/repo");
126
+ * ```
127
+ */
128
+ export const isPublicApiFile = (filename, state, repoRoot) => matchesAnyPattern(filename, state.publicApiFiles, repoRoot);
129
+ /**
130
+ * Checks whether one file should be treated as a test file.
131
+ * @param filename Absolute filename.
132
+ * @param state Normalized options.
133
+ * @param repoRoot Absolute repository root.
134
+ * @returns True when the file path matches a test pattern.
135
+ * @example
136
+ * ```typescript
137
+ * const testFile = isTestFile("/repo/tests/e2e/demo.ts", state, "/repo");
138
+ * ```
139
+ */
140
+ export const isTestFile = (filename, state, repoRoot) => matchesAnyPattern(filename, state.testFilePatterns, repoRoot);
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdW51c2VkLWV4cG9ydHMtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL25vLXVudXNlZC1leHBvcnRzL25vLXVudXNlZC1leHBvcnRzLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFJN0IsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLGlCQUFpQjtJQUNqQixzQkFBc0I7Q0FDZCxDQUFDO0FBRVgseURBQXlEO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHO0lBQ3hDLHlCQUF5QjtJQUN6QixzQkFBc0I7Q0FDZCxDQUFDO0FBRVgsbUVBQW1FO0FBQ25FLE1BQU0sNkJBQTZCLEdBQUcsZ0JBQWdCLENBQUM7QUFFdkQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLFFBQWdCLEVBQVcsRUFBRSxDQUNuRCxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRW5EOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFnQixFQUFXLEVBQUU7SUFDOUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxRCxPQUFPLFNBQVMsQ0FBQyxjQUFjLEVBQUUsNkJBQTZCLEVBQUU7UUFDOUQsR0FBRyxFQUFFLElBQUk7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USxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFMUU7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUN4QixRQUFnQixFQUNoQixLQUEyQixFQUMzQixRQUFnQixFQUNQLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWluaW1hdGNoIH0gZnJvbSBcIm1pbmltYXRjaFwiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgdHlwZSB7IE5vVW51c2VkRXhwb3J0c09wdGlvbnMsIE5vVW51c2VkRXhwb3J0c1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqIERlZmF1bHQgcHVibGljIEFQSSBmaWxlcyB3aGVyZSBleHBvcnRlZCBzeW1ib2xzIGFyZSBpbnRlbnRpb25hbGx5IGV4cG9zZWQuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9QVUJMSUNfQVBJX0ZJTEVTID0gW1xuICBcIioqL3NyYy9pbmRleC50c1wiLFxuICBcIioqL19fdGVzdHNfXy8qKi8qLnRzXCIsXG5dIGFzIGNvbnN0O1xuXG4vKiogRGVmYXVsdCBnbG9iIHBhdHRlcm5zIHVzZWQgdG8gY2xhc3NpZnkgdGVzdCBmaWxlcy4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RFU1RfRklMRV9QQVRURVJOUyA9IFtcbiAgXCIqKi8qLnt0ZXN0LHNwZWMsZTJlfS50c1wiLFxuICBcIioqL19fdGVzdHNfXy8qKi8qLnRzXCIsXG5dIGFzIGNvbnN0O1xuXG4vKiogRGVmYXVsdCBmaWxlIHBhdHRlcm4gdXNlZCB0byBzY29wZSBhbmFseXNpcyB0byBzb3VyY2UgZmlsZXMuICovXG5jb25zdCBERUZBVUxUX0xJTlRBQkxFX0ZJTEVfUEFUVEVSTiA9IFwiKiovc3JjLyoqLyoudHNcIjtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBvbmUgcGF0aCBpcyBhYnNvbHV0ZSBhbmQgbm9uLWVtcHR5LlxuICogQHBhcmFtIGZpbGVuYW1lIElucHV0IGZpbGVuYW1lLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBwYXRoIGlzIGFic29sdXRlIGFuZCBub24tZW1wdHkuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBpc0Fic29sdXRlUGF0aChcIi9yZXBvL3NyYy9mZWF0dXJlLnRzXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzQWJzb2x1dGVQYXRoID0gKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuID0+XG4gIGZpbGVuYW1lLmxlbmd0aCA+IDAgJiYgcGF0aC5pc0Fic29sdXRlKGZpbGVuYW1lKTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBvbmUgZmlsZSBwYXRoIGlzIGxpbnRhYmxlLlxuICogQHBhcmFtIGZpbGVuYW1lIElucHV0IGZpbGVuYW1lLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBwYXRoIGlzIGFic29sdXRlIGFuZCBtYXRjaGVzIHNvdXJjZS1maWxlIHNjb3BlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gaXNMaW50YWJsZUZpbGVuYW1lKFwiL3JlcG8vc3JjL2ZlYXR1cmUudHNcIik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IGlzTGludGFibGVGaWxlbmFtZSA9IChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGlmICghaXNBYnNvbHV0ZVBhdGgoZmlsZW5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBmaWxlbmFtZS5zcGxpdChwYXRoLnNlcCkuam9pbihcIi9cIik7XG5cbiAgcmV0dXJuIG1pbmltYXRjaChub3JtYWxpemVkUGF0aCwgREVGQVVMVF9MSU5UQUJMRV9GSUxFX1BBVFRFUk4sIHtcbiAgICBkb3Q6IHRydWUsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIG9uZSBydWxlIG9wdGlvbiB2YWx1ZSBpbnRvIGEgc3RyaW5nIGxpc3QuXG4gKiBAcGFyYW0gdmFsdWUgUmF3IG9wdGlvbiB2YWx1ZS5cbiAqIEBwYXJhbSBkZWZhdWx0cyBEZWZhdWx0IHZhbHVlcy5cbiAqIEByZXR1cm5zIE5vcm1hbGl6ZWQgbGlzdC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsaXN0ID0gbm9ybWFsaXplU3RyaW5nTGlzdChbXCJzcmMvKipcIl0sIFtcInNyYy8qKlwiXSk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgbm9ybWFsaXplU3RyaW5nTGlzdCA9IChcbiAgdmFsdWU6IHVua25vd24sXG4gIGRlZmF1bHRzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IHN0cmluZ1tdID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlXG4gICAgICAuZmlsdGVyKChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09IFwic3RyaW5nXCIpXG4gICAgICAubWFwKChlbnRyeSkgPT4gZW50cnkudHJpbSgpKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lmxlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQubGVuZ3RoID4gMCA/IG5vcm1hbGl6ZWQgOiBbLi4uZGVmYXVsdHNdO1xuICB9XG5cbiAgcmV0dXJuIFsuLi5kZWZhdWx0c107XG59O1xuXG4vKipcbiAqIEJ1aWxkcyBub3JtYWxpemVkIG9wdGlvbnMgZnJvbSByYXcgcnVsZSBvcHRpb25zLlxuICogQHBhcmFtIG9wdGlvbnMgUmF3IHJ1bGUgb3B0aW9ucy5cbiAqIEByZXR1cm5zIE5vcm1hbGl6ZWQgb3B0aW9ucyBzdGF0ZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzdGF0ZSA9IGdldE9wdGlvbnMoW3t9XSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE9wdGlvbnMgPSAoXG4gIG9wdGlvbnM6IHJlYWRvbmx5IHVua25vd25bXSxcbik6IE5vVW51c2VkRXhwb3J0c1N0YXRlID0+IHtcbiAgY29uc3QgcmF3ID0gb3B0aW9uc1swXSBhcyBOb1VudXNlZEV4cG9ydHNPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgcHVibGljQXBpRmlsZXM6IG5vcm1hbGl6ZVN0cmluZ0xpc3QoXG4gICAgICByYXc/LnB1YmxpY0FwaUZpbGVzLFxuICAgICAgREVGQVVMVF9QVUJMSUNfQVBJX0ZJTEVTLFxuICAgICksXG4gICAgdGVzdEZpbGVQYXR0ZXJuczogbm9ybWFsaXplU3RyaW5nTGlzdChcbiAgICAgIHJhdz8udGVzdEZpbGVQYXR0ZXJucyxcbiAgICAgIERFRkFVTFRfVEVTVF9GSUxFX1BBVFRFUk5TLFxuICAgICksXG4gIH07XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFic29sdXRlIGZpbGVuYW1lIGludG8gYSByZXBvLXJvb3QtcmVsYXRpdmUgUE9TSVggcGF0aC5cbiAqIEBwYXJhbSBmaWxlbmFtZSBBYnNvbHV0ZSBmaWxlbmFtZS5cbiAqIEBwYXJhbSByZXBvUm9vdCBBYnNvbHV0ZSByZXBvc2l0b3J5IHJvb3QuXG4gKiBAcmV0dXJucyBSZXBvLXJlbGF0aXZlIFBPU0lYIHBhdGggb3IgdW5kZWZpbmVkIHdoZW4gb3V0c2lkZSByZXBvIHJvb3QuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVsYXRpdmVQYXRoID0gdG9SZXBvUmVsYXRpdmVQb3NpeFBhdGgoXCIvcmVwby9zcmMvZmVhdHVyZS50c1wiLCBcIi9yZXBvXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IHRvUmVwb1JlbGF0aXZlUG9zaXhQYXRoID0gKFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICByZXBvUm9vdDogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFpc0Fic29sdXRlUGF0aChmaWxlbmFtZSkgfHwgIWlzQWJzb2x1dGVQYXRoKHJlcG9Sb290KSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKHJlcG9Sb290LCBmaWxlbmFtZSk7XG5cbiAgaWYgKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiLi5cIikgfHwgcGF0aC5pc0Fic29sdXRlKHJlbGF0aXZlUGF0aCkpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgcmV0dXJuIHJlbGF0aXZlUGF0aC5zcGxpdChwYXRoLnNlcCkuam9pbihcIi9cIik7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIG9uZSBmaWxlbmFtZSBtYXRjaGVzIGFueSBnbG9iIHBhdHRlcm4uXG4gKiBAcGFyYW0gZmlsZW5hbWUgQWJzb2x1dGUgZmlsZW5hbWUuXG4gKiBAcGFyYW0gcGF0dGVybnMgR2xvYiBwYXR0ZXJucy5cbiAqIEBwYXJhbSByZXBvUm9vdCBBYnNvbHV0ZSByZXBvc2l0b3J5IHJvb3QuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gYW55IHBhdHRlcm4gbWF0Y2hlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXRjaCA9IG1hdGNoZXNBbnlQYXR0ZXJuKFwiL3JlcG8vc3JjL2luZGV4LnRzXCIsIFtcInNyYy1wYXR0ZXJuXCJdLCBcIi9yZXBvXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IG1hdGNoZXNBbnlQYXR0ZXJuID0gKFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBwYXR0ZXJuczogc3RyaW5nW10sXG4gIHJlcG9Sb290OiBzdHJpbmcsXG4pOiBib29sZWFuID0+IHtcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gdG9SZXBvUmVsYXRpdmVQb3NpeFBhdGgoZmlsZW5hbWUsIHJlcG9Sb290KTtcblxuICBpZiAocmVsYXRpdmVQYXRoID09PSB2b2lkIDAgfHwgcGF0dGVybnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHBhdHRlcm5zLnNvbWUoKHBhdHRlcm4pID0+XG4gICAgbWluaW1hdGNoKHJlbGF0aXZlUGF0aCwgcGF0dGVybiwgeyBkb3Q6IHRydWUgfSksXG4gICk7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIG9uZSBmaWxlIGRlZmluZXMgYSBwdWJsaWMgQVBJIGV4cG9ydCBzdXJmYWNlLlxuICogQHBhcmFtIGZpbGVuYW1lIEFic29sdXRlIGZpbGVuYW1lLlxuICogQHBhcmFtIHN0YXRlIE5vcm1hbGl6ZWQgb3B0aW9ucy5cbiAqIEBwYXJhbSByZXBvUm9vdCBBYnNvbHV0ZSByZXBvc2l0b3J5IHJvb3QuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGZpbGUgaXMgYSBwdWJsaWMgQVBJIGZpbGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcHVibGljQXBpRmlsZSA9IGlzUHVibGljQXBpRmlsZShcIi9yZXBvL3NyYy9pbmRleC50c1wiLCBzdGF0ZSwgXCIvcmVwb1wiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgaXNQdWJsaWNBcGlGaWxlID0gKFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBzdGF0ZTogTm9VbnVzZWRFeHBvcnRzU3RhdGUsXG4gIHJlcG9Sb290OiBzdHJpbmcsXG4pOiBib29sZWFuID0+IG1hdGNoZXNBbnlQYXR0ZXJuKGZpbGVuYW1lLCBzdGF0ZS5wdWJsaWNBcGlGaWxlcywgcmVwb1Jvb3QpO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIG9uZSBmaWxlIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgdGVzdCBmaWxlLlxuICogQHBhcmFtIGZpbGVuYW1lIEFic29sdXRlIGZpbGVuYW1lLlxuICogQHBhcmFtIHN0YXRlIE5vcm1hbGl6ZWQgb3B0aW9ucy5cbiAqIEBwYXJhbSByZXBvUm9vdCBBYnNvbHV0ZSByZXBvc2l0b3J5IHJvb3QuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGZpbGUgcGF0aCBtYXRjaGVzIGEgdGVzdCBwYXR0ZXJuLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHRlc3RGaWxlID0gaXNUZXN0RmlsZShcIi9yZXBvL3Rlc3RzL2UyZS9kZW1vLnRzXCIsIHN0YXRlLCBcIi9yZXBvXCIpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBpc1Rlc3RGaWxlID0gKFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBzdGF0ZTogTm9VbnVzZWRFeHBvcnRzU3RhdGUsXG4gIHJlcG9Sb290OiBzdHJpbmcsXG4pOiBib29sZWFuID0+IG1hdGNoZXNBbnlQYXR0ZXJuKGZpbGVuYW1lLCBzdGF0ZS50ZXN0RmlsZVBhdHRlcm5zLCByZXBvUm9vdCk7XG4iXX0=
@@ -0,0 +1,49 @@
1
+ import type { AST, Rule } from "eslint";
2
+ import * as ts from "typescript";
3
+ import type { ExportedElement, ExportUsage, NoUnusedExportsState } from "./types.js";
4
+ /**
5
+ * Resolves TypeScript parser services program when available.
6
+ * @param context Rule context.
7
+ * @returns TypeScript program when available.
8
+ * @example
9
+ * ```typescript
10
+ * const program = getTypeScriptProgram(context);
11
+ * ```
12
+ */
13
+ declare const getTypeScriptProgram: (context: Rule.RuleContext) => ts.Program | undefined;
14
+ /**
15
+ * Collects exported elements from one program body.
16
+ * @param body Program body statements.
17
+ * @returns Exported elements in declaration order.
18
+ * @example
19
+ * ```typescript
20
+ * const exported = collectExportedElements(program.body);
21
+ * ```
22
+ */
23
+ declare const collectExportedElements: (body: AST.Program["body"]) => ExportedElement[];
24
+ /**
25
+ * Collects concrete usages of one exported element across the program.
26
+ * @param program TypeScript program.
27
+ * @param sourceFilename Source filename where export is defined.
28
+ * @param state Normalized rule options.
29
+ * @param repoRoot Absolute repository root used for test-file classification.
30
+ * @param exportedElement Exported element to classify.
31
+ * @returns Concrete usages for the exported element.
32
+ * @example
33
+ * ```typescript
34
+ * const usages = collectCrossFileUsages(program, "/repo/src/feature.ts", state, "/repo", exportedElement);
35
+ * ```
36
+ */
37
+ declare const collectCrossFileUsages: (program: ts.Program, sourceFilename: string, state: NoUnusedExportsState, repoRoot: string, exportedElement: ExportedElement) => ExportUsage[];
38
+ /**
39
+ * Classifies one exported name based on cross-file usages.
40
+ * @param usages Collected usages.
41
+ * @returns Classification label.
42
+ * @example
43
+ * ```typescript
44
+ * const classification = classifyExportUsage("feature", usages);
45
+ * ```
46
+ */
47
+ declare const classifyExportUsage: (usages: ExportUsage[]) => "production" | "test-only" | "unused";
48
+ export { classifyExportUsage, collectCrossFileUsages, collectExportedElements, getTypeScriptProgram, };
49
+ //# sourceMappingURL=no-unused-exports-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-unused-exports-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/no-unused-exports-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAIxC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EACV,eAAe,EAEf,WAAW,EACX,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAgFjB;;;;;;;;GAQG;AACH,QAAA,MAAM,oBAAoB,GACxB,SAAS,IAAI,CAAC,WAAW,KACxB,EAAE,CAAC,OAAO,GAAG,SAOf,CAAC;AA0LF;;;;;;;;GAQG;AACH,QAAA,MAAM,uBAAuB,GAC3B,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KACxB,eAAe,EAsFjB,CAAC;AA+VF;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,sBAAsB,GAC1B,SAAS,EAAE,CAAC,OAAO,EACnB,gBAAgB,MAAM,EACtB,OAAO,oBAAoB,EAC3B,UAAU,MAAM,EAChB,iBAAiB,eAAe,KAC/B,WAAW,EAoDb,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,mBAAmB,GACvB,QAAQ,WAAW,EAAE,KACpB,YAAY,GAAG,WAAW,GAAG,QAY/B,CAAC;AAEF,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,GACrB,CAAC"}