@codeperfect/eslint-plugin 2.1.0 → 2.3.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 (309) 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 +29 -2
  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/rule.d.ts.map +1 -1
  26. package/dist/domain/architecture/consistent-barrel-files/rule.js +1 -2
  27. package/dist/domain/architecture/index.d.ts +2 -1
  28. package/dist/domain/architecture/index.d.ts.map +1 -1
  29. package/dist/domain/architecture/index.js +3 -2
  30. package/dist/domain/architecture/no-unused-exports/index.d.ts +3 -0
  31. package/dist/domain/architecture/no-unused-exports/index.d.ts.map +1 -0
  32. package/dist/domain/architecture/no-unused-exports/index.js +2 -0
  33. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts +50 -0
  34. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -0
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +141 -0
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +49 -0
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -0
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +612 -0
  39. package/dist/domain/architecture/no-unused-exports/rule.d.ts +5 -0
  40. package/dist/domain/architecture/no-unused-exports/rule.d.ts.map +1 -0
  41. package/dist/domain/architecture/no-unused-exports/rule.js +82 -0
  42. package/dist/domain/architecture/no-unused-exports/types.d.ts +32 -0
  43. package/dist/domain/architecture/no-unused-exports/types.d.ts.map +1 -0
  44. package/dist/domain/architecture/no-unused-exports/types.js +2 -0
  45. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  46. package/dist/domain/core/no-multiple-declarators/rule.js +53 -4
  47. package/dist/domain/core/no-multiple-declarators/types.d.ts +3 -1
  48. package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -1
  49. package/dist/domain/core/no-multiple-declarators/types.js +5 -2
  50. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  51. package/dist/domain/core/prefer-interface-types/rule.js +90 -22
  52. package/dist/domain/custom-rule-documentation.d.ts +1 -14
  53. package/dist/domain/custom-rule-documentation.d.ts.map +1 -1
  54. package/dist/domain/custom-rule-documentation.js +2 -2
  55. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  56. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +11 -2
  57. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
  58. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +1 -1
  59. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  60. package/dist/domain/docs/no-interface-member-docs/rule.js +7 -2
  61. package/dist/domain/docs/require-example-language/examples.d.ts +4 -15
  62. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  63. package/dist/domain/docs/require-example-language/examples.js +119 -26
  64. package/dist/domain/docs/require-example-language/fixes.d.ts +1 -21
  65. package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
  66. package/dist/domain/docs/require-example-language/fixes.js +5 -2
  67. package/dist/domain/docs/require-example-language/reporting.d.ts +2 -38
  68. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
  69. package/dist/domain/docs/require-example-language/reporting.js +2 -2
  70. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  71. package/dist/domain/docs/require-example-language/rule.js +2 -1
  72. package/dist/domain/docs/require-example-language/types.d.ts +1 -1
  73. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  74. package/dist/domain/docs/require-example-language/types.js +1 -1
  75. package/dist/domain/docs/single-line-jsdoc/rule.js +8 -8
  76. package/dist/domain/index.d.ts +2 -3
  77. package/dist/domain/index.d.ts.map +1 -1
  78. package/dist/domain/index.js +3 -4
  79. package/dist/domain/testing/aaa/analyzer.analysis.d.ts +1 -19
  80. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
  81. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +8 -31
  82. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  83. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +18 -22
  84. package/dist/domain/testing/aaa/analyzer.analysis.js +46 -39
  85. package/dist/domain/testing/aaa/analyzer.assertions.d.ts +1 -17
  86. package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -1
  87. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +1 -3
  88. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
  89. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +3 -4
  90. package/dist/domain/testing/aaa/analyzer.assertions.js +5 -33
  91. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +1 -3
  92. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
  93. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +6 -5
  94. package/dist/domain/testing/aaa/analyzer.classification.d.ts +1 -15
  95. package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -1
  96. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +1 -3
  97. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -1
  98. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +5 -6
  99. package/dist/domain/testing/aaa/analyzer.classification.js +5 -31
  100. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +1 -3
  101. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -1
  102. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +3 -5
  103. package/dist/domain/testing/aaa/analyzer.super.d.ts +1 -7
  104. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  105. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +1 -14
  106. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -1
  107. package/dist/domain/testing/aaa/analyzer.super.helpers.js +2 -4
  108. package/dist/domain/testing/aaa/analyzer.super.js +5 -20
  109. package/dist/domain/testing/aaa/index.d.ts +1 -2
  110. package/dist/domain/testing/aaa/index.d.ts.map +1 -1
  111. package/dist/domain/testing/aaa/index.js +2 -2
  112. package/dist/domain/testing/aaa/types.d.ts +1 -1
  113. package/dist/domain/testing/aaa/types.d.ts.map +1 -1
  114. package/dist/domain/testing/aaa/types.js +1 -1
  115. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
  116. package/dist/domain/testing/assert-actual-expected-names/rule.js +28 -3
  117. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -1
  118. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -1
  119. package/dist/domain/testing/enforce-aaa-phase-purity/index.js +3 -2
  120. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +1 -1
  121. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -1
  122. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
  123. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +1 -1
  124. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
  125. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +78 -16
  126. package/dist/domain/testing/{require-aaa-sections → enforce-aaa-structure}/missing-section-fixes.d.ts +1 -1
  127. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -0
  128. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +150 -0
  129. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  130. package/dist/domain/testing/enforce-aaa-structure/rule.js +166 -7
  131. package/dist/domain/testing/index.d.ts +0 -3
  132. package/dist/domain/testing/index.d.ts.map +1 -1
  133. package/dist/domain/testing/index.js +1 -4
  134. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +1 -15
  135. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -1
  136. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +2 -71
  137. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
  138. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +4 -2
  139. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +1 -13
  140. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
  141. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +3 -21
  142. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
  143. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +2 -1
  144. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
  145. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +1 -1
  146. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +6 -6
  147. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +1 -12
  148. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
  149. package/dist/domain/testing/prefer-vi-mocked-import/match.js +149 -15
  150. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  151. package/dist/domain/testing/require-act-result-capture/rule.js +37 -8
  152. package/dist/domain/testing/require-test-companion/index.d.ts +0 -1
  153. package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -1
  154. package/dist/domain/testing/require-test-companion/index.js +1 -2
  155. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts +2 -1
  156. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
  157. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +13 -58
  158. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts +2 -1
  159. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -1
  160. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -5
  161. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  162. package/dist/domain/testing/require-test-companion/rule.js +7 -7
  163. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
  164. package/dist/domain/testing/single-act-statement/rule.js +6 -3
  165. package/dist/index.d.ts +1 -1
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +2 -2
  168. package/dist/infrastructure/codeperfect-plugin.d.ts +6 -6
  169. package/dist/infrastructure/codeperfect-plugin.js +5 -5
  170. package/dist/infrastructure/presets.d.ts.map +1 -1
  171. package/dist/infrastructure/presets.js +23 -7
  172. package/package.json +24 -31
  173. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +0 -41
  174. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
  175. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -87
  176. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +0 -40
  177. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
  178. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -91
  179. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +0 -4
  180. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +0 -1
  181. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +0 -4
  182. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts +0 -141
  183. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
  184. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +0 -20
  185. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +0 -1
  186. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +0 -25
  187. package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +0 -235
  188. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +0 -101
  189. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +0 -1
  190. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +0 -108
  191. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +0 -35
  192. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +0 -1
  193. package/dist/domain/core/no-multiple-declarators/rule.fixes.js +0 -95
  194. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +0 -4
  195. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +0 -1
  196. package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +0 -4
  197. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +0 -4
  198. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +0 -1
  199. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +0 -4
  200. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts +0 -110
  201. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
  202. package/dist/domain/core/prefer-interface-types/test-helpers.js +0 -116
  203. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -89
  204. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
  205. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
  206. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts +0 -103
  207. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
  208. package/dist/domain/docs/no-interface-member-docs/test-helpers.js +0 -157
  209. package/dist/domain/docs/require-example-language/create-fixer.d.ts +0 -5
  210. package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +0 -1
  211. package/dist/domain/docs/require-example-language/create-fixer.js +0 -5
  212. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +0 -4
  213. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +0 -1
  214. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +0 -5
  215. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +0 -4
  216. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +0 -1
  217. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +0 -5
  218. package/dist/domain/docs/test-helpers.d.ts +0 -50
  219. package/dist/domain/docs/test-helpers.d.ts.map +0 -1
  220. package/dist/domain/docs/test-helpers.js +0 -107
  221. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts +0 -4
  222. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts.map +0 -1
  223. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.js +0 -4
  224. package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts +0 -4
  225. package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts.map +0 -1
  226. package/dist/domain/testing/aaa/analyzer.assertions.destructured.js +0 -4
  227. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +0 -9
  228. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +0 -1
  229. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +0 -10
  230. package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts +0 -4
  231. package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts.map +0 -1
  232. package/dist/domain/testing/aaa/analyzer.classification.mutations.js +0 -4
  233. package/dist/domain/testing/aaa/analyzer.d.ts +0 -46
  234. package/dist/domain/testing/aaa/analyzer.d.ts.map +0 -1
  235. package/dist/domain/testing/aaa/analyzer.js +0 -59
  236. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts +0 -4
  237. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts.map +0 -1
  238. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.js +0 -4
  239. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts +0 -4
  240. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts.map +0 -1
  241. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.js +0 -4
  242. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +0 -4
  243. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +0 -1
  244. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +0 -4
  245. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +0 -42
  246. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +0 -1
  247. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +0 -188
  248. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts +0 -5
  249. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
  250. package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +0 -37
  251. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +0 -20
  252. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +0 -1
  253. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +0 -39
  254. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +0 -97
  255. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +0 -1
  256. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +0 -174
  257. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +0 -2
  258. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +0 -1
  259. package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +0 -2
  260. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +0 -14
  261. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +0 -1
  262. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +0 -84
  263. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +0 -13
  264. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +0 -1
  265. package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +0 -195
  266. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +0 -25
  267. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +0 -1
  268. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +0 -96
  269. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +0 -32
  270. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +0 -1
  271. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +0 -164
  272. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +0 -5
  273. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +0 -1
  274. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +0 -4
  275. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +0 -1
  276. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +0 -4
  277. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +0 -4
  278. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +0 -1
  279. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +0 -4
  280. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +0 -88
  281. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +0 -4
  282. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +0 -1
  283. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +0 -4
  284. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +0 -24
  285. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +0 -1
  286. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +0 -113
  287. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +0 -36
  288. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +0 -1
  289. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +0 -138
  290. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +0 -187
  291. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +0 -1
  292. package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +0 -2
  293. package/dist/domain/testing/require-aaa-sections/index.d.ts +0 -2
  294. package/dist/domain/testing/require-aaa-sections/index.d.ts.map +0 -1
  295. package/dist/domain/testing/require-aaa-sections/index.js +0 -2
  296. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +0 -1
  297. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +0 -150
  298. package/dist/domain/testing/require-aaa-sections/rule.d.ts +0 -5
  299. package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +0 -1
  300. package/dist/domain/testing/require-aaa-sections/rule.js +0 -134
  301. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +0 -104
  302. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +0 -1
  303. package/dist/domain/testing/require-aaa-sections/rule.reporting.js +0 -216
  304. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts +0 -51
  305. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
  306. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +0 -184
  307. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts +0 -28
  308. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
  309. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +0 -26
@@ -1,134 +0,0 @@
1
- import { analyzeTestBlock, getLineStartRange, getPhaseBoundaryComments, hasBlankLineBeforeComment, } from "../aaa/index.js";
2
- import { buildMissingSectionFixes } from "./missing-section-fixes.js";
3
- /** Enforces explicit AAA section comments and spacing within supported test blocks. */
4
- const requireAaaSectionsRule = {
5
- create(context) {
6
- return {
7
- CallExpression(node) {
8
- const analysis = analyzeTestBlock(context, node);
9
- if (analysis === void 0) {
10
- return;
11
- }
12
- reportMissingSections(context, analysis);
13
- reportEmptySections(context, analysis);
14
- reportCodeBeforeArrange(context, analysis);
15
- reportBlankLineSeparators(context, analysis);
16
- },
17
- };
18
- },
19
- meta: {
20
- docs: {
21
- description: "Require strict // Arrange, // Act, and // Assert markers in supported test blocks.",
22
- recommended: false,
23
- url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/require-aaa-sections.md",
24
- },
25
- fixable: "code",
26
- messages: {
27
- blankLineBeforeSection: "Insert a blank line before the // {{section}} section comment.",
28
- codeBeforeArrange: "Move setup statements below the first // Arrange section comment.",
29
- emptySection: "The // {{section}} section must contain code; comments alone do not count.",
30
- missingSections: "Add the missing AAA section comments: {{sections}}.",
31
- },
32
- schema: [],
33
- type: "layout",
34
- },
35
- };
36
- /**
37
- * Reports section comments that are missing a blank line above them.
38
- * @param context ESLint rule context.
39
- * @param analysis Parsed test-block analysis.
40
- * @example
41
- * ```typescript
42
- * reportBlankLineSeparators({ report() {} } as never, { sectionComments: [], sourceText: "" } as never);
43
- * ```
44
- */
45
- function reportBlankLineSeparators(context, analysis) {
46
- const firstSectionComment = analysis.sectionComments[0]?.comment;
47
- for (const sectionComment of getPhaseBoundaryComments(analysis)) {
48
- if (sectionComment.comment !== firstSectionComment &&
49
- !hasBlankLineBeforeComment(analysis.sourceText, sectionComment.comment)) {
50
- context.report({
51
- data: { section: sectionComment.phases.join(" & ") },
52
- fix: (fixer) => fixer.insertTextBeforeRange(getLineStartRange(analysis.sourceText, sectionComment.comment.loc.start.line), analysis.newline),
53
- messageId: "blankLineBeforeSection",
54
- node: sectionComment.comment,
55
- });
56
- }
57
- }
58
- }
59
- /**
60
- * Reports executable statements that appear before the first Arrange section.
61
- * @param context ESLint rule context.
62
- * @param analysis Parsed test-block analysis.
63
- * @example
64
- * ```typescript
65
- * reportCodeBeforeArrange({ report() {} } as never, { sectionComments: [], statements: [] } as never);
66
- * ```
67
- */
68
- function reportCodeBeforeArrange(context, analysis) {
69
- const firstArrangeLine = analysis.sectionComments.find((sectionComment) => sectionComment.phases.includes("Arrange"))?.comment.loc.start.line;
70
- if (firstArrangeLine === void 0) {
71
- return;
72
- }
73
- const statementBeforeArrange = analysis.statements.find((statement) => statement.node.loc.start.line < firstArrangeLine);
74
- if (statementBeforeArrange === void 0) {
75
- return;
76
- }
77
- context.report({
78
- messageId: "codeBeforeArrange",
79
- node: statementBeforeArrange.node,
80
- });
81
- }
82
- /**
83
- * Reports Arrange sections that contain only comments or whitespace.
84
- * @param context ESLint rule context.
85
- * @param analysis Parsed test-block analysis.
86
- * @example
87
- * ```typescript
88
- * reportEmptySections({ report() {} } as never, { sectionComments: [], statements: [] } as never);
89
- * ```
90
- */
91
- function reportEmptySections(context, analysis) {
92
- for (const [index, sectionComment] of analysis.sectionComments.entries()) {
93
- const nextSectionLine = analysis.sectionComments[index + 1]?.comment.loc.start.line;
94
- const hasArrangePhase = sectionComment.phases.includes("Arrange");
95
- const hasCodeInSection = analysis.statements.some((statement) => {
96
- const statementLine = statement.node.loc.start.line;
97
- return (statementLine > sectionComment.comment.loc.start.line &&
98
- (nextSectionLine === void 0 || statementLine < nextSectionLine));
99
- });
100
- if (hasArrangePhase && !hasCodeInSection) {
101
- context.report({
102
- data: { section: sectionComment.phases.join(" & ") },
103
- messageId: "emptySection",
104
- node: sectionComment.comment,
105
- });
106
- }
107
- }
108
- }
109
- /**
110
- * Reports any AAA section markers that are missing from a supported test block.
111
- * @param context ESLint rule context.
112
- * @param analysis Parsed test-block analysis.
113
- * @example
114
- * ```typescript
115
- * reportMissingSections({ report() {} } as never, { sectionComments: [] } as never);
116
- * ```
117
- */
118
- function reportMissingSections(context, analysis) {
119
- const presentSections = new Set(analysis.sectionComments.flatMap((sectionComment) => sectionComment.phases));
120
- const missingSections = ["Arrange", "Act", "Assert"].filter((phase) => !presentSections.has(phase));
121
- if (missingSections.length === 0) {
122
- return;
123
- }
124
- context.report({
125
- data: { sections: missingSections.join(", ") },
126
- fix: analysis.bodyLineCount >= 3
127
- ? (fixer) => buildMissingSectionFixes(analysis, missingSections, fixer)
128
- : void 0,
129
- messageId: "missingSections",
130
- node: analysis.callExpression,
131
- });
132
- }
133
- export { requireAaaSectionsRule };
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9yZXF1aXJlLWFhYS1zZWN0aW9ucy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4Qix5QkFBeUIsR0FDMUIsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkUsdUZBQXVGO0FBQ3ZGLE1BQU0sc0JBQXNCLEdBQW9CO0lBQzlDLE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPO1lBQ0wsY0FBYyxDQUFDLElBQUk7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsT0FBTztnQkFDVCxDQUFDO2dCQUVELHFCQUFxQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDekMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN2Qyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQyxDQUFDO1NBQzBCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxvRkFBb0Y7WUFDdEYsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLHVGQUF1RjtTQUM3RjtRQUNELE9BQU8sRUFBRSxNQUFNO1FBQ2YsUUFBUSxFQUFFO1lBQ1Isc0JBQXNCLEVBQ3BCLGdFQUFnRTtZQUNsRSxpQkFBaUIsRUFDZixtRUFBbUU7WUFDckUsWUFBWSxFQUNWLDRFQUE0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QUFDLEVBQUU7UUFDOUMsR0FBRyxFQUNELFFBQVEsQ0FBQyxhQUFhLElBQUksQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQyxLQUFxQixFQUFjLEVBQUUsQ0FDcEMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUM7WUFDOUQsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNaLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxjQUFjO0tBQzlCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBUZXN0QmxvY2tBbmFseXNpcyB9IGZyb20gXCIuLi9hYWFcIjtcblxuaW1wb3J0IHtcbiAgYW5hbHl6ZVRlc3RCbG9jayxcbiAgZ2V0TGluZVN0YXJ0UmFuZ2UsXG4gIGdldFBoYXNlQm91bmRhcnlDb21tZW50cyxcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCxcbn0gZnJvbSBcIi4uL2FhYVwiO1xuaW1wb3J0IHsgYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzIH0gZnJvbSBcIi4vbWlzc2luZy1zZWN0aW9uLWZpeGVzXCI7XG5cbi8qKiBFbmZvcmNlcyBleHBsaWNpdCBBQUEgc2VjdGlvbiBjb21tZW50cyBhbmQgc3BhY2luZyB3aXRoaW4gc3VwcG9ydGVkIHRlc3QgYmxvY2tzLiAqL1xuY29uc3QgcmVxdWlyZUFhYVNlY3Rpb25zUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5emVUZXN0QmxvY2soY29udGV4dCwgbm9kZSk7XG4gICAgICAgIGlmIChhbmFseXNpcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVwb3J0TWlzc2luZ1NlY3Rpb25zKGNvbnRleHQsIGFuYWx5c2lzKTtcbiAgICAgICAgcmVwb3J0RW1wdHlTZWN0aW9ucyhjb250ZXh0LCBhbmFseXNpcyk7XG4gICAgICAgIHJlcG9ydENvZGVCZWZvcmVBcnJhbmdlKGNvbnRleHQsIGFuYWx5c2lzKTtcbiAgICAgICAgcmVwb3J0QmxhbmtMaW5lU2VwYXJhdG9ycyhjb250ZXh0LCBhbmFseXNpcyk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIFJ1bGUuUnVsZUxpc3RlbmVyO1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSBzdHJpY3QgLy8gQXJyYW5nZSwgLy8gQWN0LCBhbmQgLy8gQXNzZXJ0IG1hcmtlcnMgaW4gc3VwcG9ydGVkIHRlc3QgYmxvY2tzLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvcmVxdWlyZS1hYWEtc2VjdGlvbnMubWRcIixcbiAgICB9LFxuICAgIGZpeGFibGU6IFwiY29kZVwiLFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBibGFua0xpbmVCZWZvcmVTZWN0aW9uOlxuICAgICAgICBcIkluc2VydCBhIGJsYW5rIGxpbmUgYmVmb3JlIHRoZSAvLyB7e3NlY3Rpb259fSBzZWN0aW9uIGNvbW1lbnQuXCIsXG4gICAgICBjb2RlQmVmb3JlQXJyYW5nZTpcbiAgICAgICAgXCJNb3ZlIHNldHVwIHN0YXRlbWVudHMgYmVsb3cgdGhlIGZpcnN0IC8vIEFycmFuZ2Ugc2VjdGlvbiBjb21tZW50LlwiLFxuICAgICAgZW1wdHlTZWN0aW9uOlxuICAgICAgICBcIlRoZSAvLyB7e3NlY3Rpb259fSBzZWN0aW9uIG11c3QgY29udGFpbiBjb2RlOyBjb21tZW50cyBhbG9uZSBkbyBub3QgY291bnQuXCIsXG4gICAgICBtaXNzaW5nU2VjdGlvbnM6IFwiQWRkIHRoZSBtaXNzaW5nIEFBQSBzZWN0aW9uIGNvbW1lbnRzOiB7e3NlY3Rpb25zfX0uXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwibGF5b3V0XCIsXG4gIH0sXG59O1xuXG4vKipcbiAqIFJlcG9ydHMgc2VjdGlvbiBjb21tZW50cyB0aGF0IGFyZSBtaXNzaW5nIGEgYmxhbmsgbGluZSBhYm92ZSB0aGVtLlxuICogQHBhcmFtIGNvbnRleHQgRVNMaW50IHJ1bGUgY29udGV4dC5cbiAqIEBwYXJhbSBhbmFseXNpcyBQYXJzZWQgdGVzdC1ibG9jayBhbmFseXNpcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRCbGFua0xpbmVTZXBhcmF0b3JzKHsgcmVwb3J0KCkge30gfSBhcyBuZXZlciwgeyBzZWN0aW9uQ29tbWVudHM6IFtdLCBzb3VyY2VUZXh0OiBcIlwiIH0gYXMgbmV2ZXIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydEJsYW5rTGluZVNlcGFyYXRvcnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBjb25zdCBmaXJzdFNlY3Rpb25Db21tZW50ID0gYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzWzBdPy5jb21tZW50O1xuXG4gIGZvciAoY29uc3Qgc2VjdGlvbkNvbW1lbnQgb2YgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzKGFuYWx5c2lzKSkge1xuICAgIGlmIChcbiAgICAgIHNlY3Rpb25Db21tZW50LmNvbW1lbnQgIT09IGZpcnN0U2VjdGlvbkNvbW1lbnQgJiZcbiAgICAgICFoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50KGFuYWx5c2lzLnNvdXJjZVRleHQsIHNlY3Rpb25Db21tZW50LmNvbW1lbnQpXG4gICAgKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIGRhdGE6IHsgc2VjdGlvbjogc2VjdGlvbkNvbW1lbnQucGhhc2VzLmpvaW4oXCIgJiBcIikgfSxcbiAgICAgICAgZml4OiAoZml4ZXIpID0+XG4gICAgICAgICAgZml4ZXIuaW5zZXJ0VGV4dEJlZm9yZVJhbmdlKFxuICAgICAgICAgICAgZ2V0TGluZVN0YXJ0UmFuZ2UoXG4gICAgICAgICAgICAgIGFuYWx5c2lzLnNvdXJjZVRleHQsXG4gICAgICAgICAgICAgIHNlY3Rpb25Db21tZW50LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYW5hbHlzaXMubmV3bGluZSxcbiAgICAgICAgICApLFxuICAgICAgICBtZXNzYWdlSWQ6IFwiYmxhbmtMaW5lQmVmb3JlU2VjdGlvblwiLFxuICAgICAgICBub2RlOiBzZWN0aW9uQ29tbWVudC5jb21tZW50LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVwb3J0cyBleGVjdXRhYmxlIHN0YXRlbWVudHMgdGhhdCBhcHBlYXIgYmVmb3JlIHRoZSBmaXJzdCBBcnJhbmdlIHNlY3Rpb24uXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydENvZGVCZWZvcmVBcnJhbmdlKHsgcmVwb3J0KCkge30gfSBhcyBuZXZlciwgeyBzZWN0aW9uQ29tbWVudHM6IFtdLCBzdGF0ZW1lbnRzOiBbXSB9IGFzIG5ldmVyKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiByZXBvcnRDb2RlQmVmb3JlQXJyYW5nZShcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgYW5hbHlzaXM6IFRlc3RCbG9ja0FuYWx5c2lzLFxuKTogdm9pZCB7XG4gIGNvbnN0IGZpcnN0QXJyYW5nZUxpbmUgPSBhbmFseXNpcy5zZWN0aW9uQ29tbWVudHMuZmluZCgoc2VjdGlvbkNvbW1lbnQpID0+XG4gICAgc2VjdGlvbkNvbW1lbnQucGhhc2VzLmluY2x1ZGVzKFwiQXJyYW5nZVwiKSxcbiAgKT8uY29tbWVudC5sb2Muc3RhcnQubGluZTtcbiAgaWYgKGZpcnN0QXJyYW5nZUxpbmUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlbWVudEJlZm9yZUFycmFuZ2UgPSBhbmFseXNpcy5zdGF0ZW1lbnRzLmZpbmQoXG4gICAgKHN0YXRlbWVudCkgPT4gc3RhdGVtZW50Lm5vZGUubG9jLnN0YXJ0LmxpbmUgPCBmaXJzdEFycmFuZ2VMaW5lLFxuICApO1xuICBpZiAoc3RhdGVtZW50QmVmb3JlQXJyYW5nZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIG1lc3NhZ2VJZDogXCJjb2RlQmVmb3JlQXJyYW5nZVwiLFxuICAgIG5vZGU6IHN0YXRlbWVudEJlZm9yZUFycmFuZ2Uubm9kZSxcbiAgfSk7XG59XG5cbi8qKlxuICogUmVwb3J0cyBBcnJhbmdlIHNlY3Rpb25zIHRoYXQgY29udGFpbiBvbmx5IGNvbW1lbnRzIG9yIHdoaXRlc3BhY2UuXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydEVtcHR5U2VjdGlvbnMoeyByZXBvcnQoKSB7fSB9IGFzIG5ldmVyLCB7IHNlY3Rpb25Db21tZW50czogW10sIHN0YXRlbWVudHM6IFtdIH0gYXMgbmV2ZXIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydEVtcHR5U2VjdGlvbnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IFtpbmRleCwgc2VjdGlvbkNvbW1lbnRdIG9mIGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBuZXh0U2VjdGlvbkxpbmUgPVxuICAgICAgYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzW2luZGV4ICsgMV0/LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmU7XG4gICAgY29uc3QgaGFzQXJyYW5nZVBoYXNlID0gc2VjdGlvbkNvbW1lbnQucGhhc2VzLmluY2x1ZGVzKFwiQXJyYW5nZVwiKTtcbiAgICBjb25zdCBoYXNDb2RlSW5TZWN0aW9uID0gYW5hbHlzaXMuc3RhdGVtZW50cy5zb21lKChzdGF0ZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudExpbmUgPSBzdGF0ZW1lbnQubm9kZS5sb2Muc3RhcnQubGluZTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgc3RhdGVtZW50TGluZSA+IHNlY3Rpb25Db21tZW50LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmUgJiZcbiAgICAgICAgKG5leHRTZWN0aW9uTGluZSA9PT0gdm9pZCAwIHx8IHN0YXRlbWVudExpbmUgPCBuZXh0U2VjdGlvbkxpbmUpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaWYgKGhhc0FycmFuZ2VQaGFzZSAmJiAhaGFzQ29kZUluU2VjdGlvbikge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IHNlY3Rpb246IHNlY3Rpb25Db21tZW50LnBoYXNlcy5qb2luKFwiICYgXCIpIH0sXG4gICAgICAgIG1lc3NhZ2VJZDogXCJlbXB0eVNlY3Rpb25cIixcbiAgICAgICAgbm9kZTogc2VjdGlvbkNvbW1lbnQuY29tbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlcG9ydHMgYW55IEFBQSBzZWN0aW9uIG1hcmtlcnMgdGhhdCBhcmUgbWlzc2luZyBmcm9tIGEgc3VwcG9ydGVkIHRlc3QgYmxvY2suXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydE1pc3NpbmdTZWN0aW9ucyh7IHJlcG9ydCgpIHt9IH0gYXMgbmV2ZXIsIHsgc2VjdGlvbkNvbW1lbnRzOiBbXSB9IGFzIG5ldmVyKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiByZXBvcnRNaXNzaW5nU2VjdGlvbnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBjb25zdCBwcmVzZW50U2VjdGlvbnMgPSBuZXcgU2V0KFxuICAgIGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5mbGF0TWFwKChzZWN0aW9uQ29tbWVudCkgPT4gc2VjdGlvbkNvbW1lbnQucGhhc2VzKSxcbiAgKTtcbiAgY29uc3QgbWlzc2luZ1NlY3Rpb25zID0gKFtcIkFycmFuZ2VcIiwgXCJBY3RcIiwgXCJBc3NlcnRcIl0gYXMgY29uc3QpLmZpbHRlcihcbiAgICAocGhhc2UpID0+ICFwcmVzZW50U2VjdGlvbnMuaGFzKHBoYXNlKSxcbiAgKTtcblxuICBpZiAobWlzc2luZ1NlY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnRleHQucmVwb3J0KHtcbiAgICBkYXRhOiB7IHNlY3Rpb25zOiBtaXNzaW5nU2VjdGlvbnMuam9pbihcIiwgXCIpIH0sXG4gICAgZml4OlxuICAgICAgYW5hbHlzaXMuYm9keUxpbmVDb3VudCA+PSAzXG4gICAgICAgID8gKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4W10gPT5cbiAgICAgICAgICAgIGJ1aWxkTWlzc2luZ1NlY3Rpb25GaXhlcyhhbmFseXNpcywgbWlzc2luZ1NlY3Rpb25zLCBmaXhlcilcbiAgICAgICAgOiB2b2lkIDAsXG4gICAgbWVzc2FnZUlkOiBcIm1pc3NpbmdTZWN0aW9uc1wiLFxuICAgIG5vZGU6IGFuYWx5c2lzLmNhbGxFeHByZXNzaW9uLFxuICB9KTtcbn1cblxuZXhwb3J0IHsgcmVxdWlyZUFhYVNlY3Rpb25zUnVsZSB9O1xuIl19
@@ -1,104 +0,0 @@
1
- import type { Rule } from "eslint";
2
- import type { TestBlockAnalysis } from "../aaa/index.js";
3
- /** Mocked AAA helper exports consumed by the rule. */
4
- interface AaaModuleMock {
5
- /** Mocked analyzer entry point. */
6
- analyzeTestBlock: () => TestBlockAnalysis;
7
- /** Mocked line-start helper. */
8
- getLineStartRange: () => [number, number];
9
- /** Mocked boundary-comment helper. */
10
- getPhaseBoundaryComments: (analysis: TestBlockAnalysis) => TestBlockAnalysis["sectionComments"];
11
- /** Mocked blank-line helper. */
12
- hasBlankLineBeforeComment: () => false;
13
- }
14
- /** Mocked missing-section-fixes module. */
15
- interface MissingSectionFixesModule {
16
- /** Mocked fix builder. */
17
- buildMissingSectionFixes: () => Rule.Fix[];
18
- }
19
- /** Message identifiers emitted by the rule under test. */
20
- type RequireAaaSectionsMessageId = "blankLineBeforeSection" | "codeBeforeArrange" | "emptySection" | "missingSections";
21
- /** Captured result from the mocked reporting scenario. */
22
- interface ScenarioResult {
23
- /** Fix emitted for the blank-line report. */
24
- blankLineFix: Rule.Fix | Rule.Fix[] | undefined;
25
- /** Fixes recorded by the synthetic fixer. */
26
- insertedFixes: Rule.Fix[];
27
- /** Message identifiers emitted in report order. */
28
- messageIds: (RequireAaaSectionsMessageId | undefined)[];
29
- /** Fix emitted for the missing-sections report. */
30
- missingSectionsFix: Rule.Fix | Rule.Fix[] | undefined;
31
- }
32
- /**
33
- * Creates the mocked AAA helper module.
34
- * @returns Mocked exports consumed by the rule module.
35
- * @example
36
- * ```typescript
37
- * const mockModule = createAaaModuleMock(); void mockModule;
38
- * ```
39
- */
40
- declare function createAaaModuleMock(): AaaModuleMock;
41
- /**
42
- * Creates the mocked missing-section-fixes module.
43
- * @param buildMissingSectionFixes Mocked fix builder.
44
- * @returns Mocked module exposing the provided fix builder.
45
- * @example
46
- * ```typescript
47
- * const mockModule = createMissingSectionFixesModule(() => []); void mockModule;
48
- * ```
49
- */
50
- declare function createMissingSectionFixesModule(buildMissingSectionFixes: () => Rule.Fix[]): MissingSectionFixesModule;
51
- /**
52
- * Creates a fixer that records inserted text edits.
53
- * @param insertedFixes Collection updated when the fixer inserts text.
54
- * @returns Rule fixer that records inserted edits.
55
- * @example
56
- * ```typescript
57
- * const fixer = createRecordedFixer([]); void fixer;
58
- * ```
59
- */
60
- declare function createRecordedFixer(insertedFixes: Rule.Fix[]): Rule.RuleFixer;
61
- /**
62
- * Creates the minimal rule context used by the mocked scenario.
63
- * @param reports Report descriptors captured during rule execution.
64
- * @returns Rule context that records emitted reports.
65
- * @example
66
- * ```typescript
67
- * const context = createRuleContext([]); void context;
68
- * ```
69
- */
70
- declare function createRuleContext(reports: Rule.ReportDescriptor[]): Rule.RuleContext;
71
- /**
72
- * Reads the fix emitted by a report descriptor.
73
- * @param descriptor Report descriptor to evaluate.
74
- * @param fixer Synthetic fixer passed into the descriptor callback.
75
- * @returns Fix output produced by the descriptor.
76
- * @example
77
- * ```typescript
78
- * const fix = getDescriptorFix(void 0, {} as never); void fix;
79
- * ```
80
- */
81
- declare function getDescriptorFix(descriptor: Rule.ReportDescriptor | undefined, fixer: Rule.RuleFixer): Rule.Fix | Rule.Fix[] | undefined;
82
- /**
83
- * Reads the message identifier from a report descriptor when present.
84
- * @param descriptor Report descriptor emitted by the rule.
85
- * @returns Supported message identifier when present.
86
- * @example
87
- * ```typescript
88
- * const messageId = getReportMessageId({ messageId: "missingSections" } as Rule.ReportDescriptor);
89
- * void messageId;
90
- * ```
91
- */
92
- declare function getReportMessageId(descriptor: Rule.ReportDescriptor): RequireAaaSectionsMessageId | undefined;
93
- /**
94
- * Loads the rule module after test mocks have been applied.
95
- * @returns The rule module under test.
96
- * @example
97
- * ```typescript
98
- * const rule = await loadRequireAaaSectionsRule(); void rule;
99
- * ```
100
- */
101
- declare function loadRequireAaaSectionsRule(): Promise<Rule.RuleModule>;
102
- export { createAaaModuleMock, createMissingSectionFixesModule, createRecordedFixer, createRuleContext, getDescriptorFix, getReportMessageId, loadRequireAaaSectionsRule, };
103
- export type { ScenarioResult };
104
- //# sourceMappingURL=rule.reporting.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rule.reporting.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-aaa-sections/rule.reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEhD,sDAAsD;AACtD,UAAU,aAAa;IACrB,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;IAC1C,gCAAgC;IAChC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,sCAAsC;IACtC,wBAAwB,EAAE,CACxB,QAAQ,EAAE,iBAAiB,KACxB,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1C,gCAAgC;IAChC,yBAAyB,EAAE,MAAM,KAAK,CAAC;CACxC;AAED,2CAA2C;AAC3C,UAAU,yBAAyB;IACjC,0BAA0B;IAC1B,wBAAwB,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;CAC5C;AAED,0DAA0D;AAC1D,KAAK,2BAA2B,GAC5B,wBAAwB,GACxB,mBAAmB,GACnB,cAAc,GACd,iBAAiB,CAAC;AAEtB,0DAA0D;AAC1D,UAAU,cAAc;IACtB,6CAA6C;IAC7C,YAAY,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAChD,6CAA6C;IAC7C,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,mDAAmD;IACnD,UAAU,EAAE,CAAC,2BAA2B,GAAG,SAAS,CAAC,EAAE,CAAC;IACxD,mDAAmD;IACnD,kBAAkB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;CACvD;AAcD;;;;;;;GAOG;AACH,iBAAS,mBAAmB,IAAI,aAAa,CAO5C;AAED;;;;;;;;GAQG;AACH,iBAAS,+BAA+B,CACtC,wBAAwB,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,GACzC,yBAAyB,CAE3B;AAsDD;;;;;;;;GAQG;AACH,iBAAS,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAQtE;AAED;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,WAAW,CAM7E;AAED;;;;;;;;;GASG;AACH,iBAAS,gBAAgB,CACvB,UAAU,EAAE,IAAI,CAAC,gBAAgB,GAAG,SAAS,EAC7C,KAAK,EAAE,IAAI,CAAC,SAAS,GACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAcnC;AA8BD;;;;;;;;;GASG;AACH,iBAAS,kBAAkB,CACzB,UAAU,EAAE,IAAI,CAAC,gBAAgB,GAChC,2BAA2B,GAAG,SAAS,CAQzC;AAuBD;;;;;;;GAOG;AACH,iBAAe,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAGpE;AAED,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,GAC3B,CAAC;AAEF,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -1,216 +0,0 @@
1
- /**
2
- * Returns false so the mocked rule path always reports a missing blank line.
3
- * @returns False for every invocation.
4
- * @example
5
- * ```typescript
6
- * const actual = alwaysReturnFalse(); void actual;
7
- * ```
8
- */
9
- function alwaysReturnFalse() {
10
- return false;
11
- }
12
- /**
13
- * Creates the mocked AAA helper module.
14
- * @returns Mocked exports consumed by the rule module.
15
- * @example
16
- * ```typescript
17
- * const mockModule = createAaaModuleMock(); void mockModule;
18
- * ```
19
- */
20
- function createAaaModuleMock() {
21
- return {
22
- analyzeTestBlock: createMockAnalysis,
23
- getLineStartRange: getMockLineStartRange,
24
- getPhaseBoundaryComments: getMockPhaseBoundaryComments,
25
- hasBlankLineBeforeComment: alwaysReturnFalse,
26
- };
27
- }
28
- /**
29
- * Creates the mocked missing-section-fixes module.
30
- * @param buildMissingSectionFixes Mocked fix builder.
31
- * @returns Mocked module exposing the provided fix builder.
32
- * @example
33
- * ```typescript
34
- * const mockModule = createMissingSectionFixesModule(() => []); void mockModule;
35
- * ```
36
- */
37
- function createMissingSectionFixesModule(buildMissingSectionFixes) {
38
- return { buildMissingSectionFixes };
39
- }
40
- /**
41
- * Builds the synthetic analysis returned by the mocked AAA helpers.
42
- * @returns Minimal test-block analysis used by the regression scenario.
43
- * @example
44
- * ```typescript
45
- * const analysis = createMockAnalysis(); void analysis;
46
- * ```
47
- */
48
- function createMockAnalysis() {
49
- return {
50
- bodyLineCount: 4,
51
- callExpression: { type: "CallExpression" },
52
- newline: "\n",
53
- sectionComments: [
54
- {
55
- comment: {
56
- loc: { end: { line: 2 }, start: { line: 2 } },
57
- type: "Line",
58
- },
59
- phases: ["Arrange"],
60
- },
61
- {
62
- comment: {
63
- loc: { end: { line: 4 }, start: { line: 4 } },
64
- type: "Line",
65
- },
66
- phases: ["Act"],
67
- },
68
- ],
69
- sourceText: [
70
- "const setup = createSetup();",
71
- "// Arrange",
72
- "run();",
73
- "// Act",
74
- ].join("\n"),
75
- statements: [
76
- {
77
- node: {
78
- loc: { end: { line: 1 }, start: { line: 1 } },
79
- type: "ExpressionStatement",
80
- },
81
- },
82
- {
83
- node: {
84
- loc: { end: { line: 3 }, start: { line: 3 } },
85
- type: "ExpressionStatement",
86
- },
87
- },
88
- ],
89
- };
90
- }
91
- /**
92
- * Creates a fixer that records inserted text edits.
93
- * @param insertedFixes Collection updated when the fixer inserts text.
94
- * @returns Rule fixer that records inserted edits.
95
- * @example
96
- * ```typescript
97
- * const fixer = createRecordedFixer([]); void fixer;
98
- * ```
99
- */
100
- function createRecordedFixer(insertedFixes) {
101
- return {
102
- insertTextBeforeRange(range, text) {
103
- const fix = { range, text };
104
- insertedFixes.push(fix);
105
- return fix;
106
- },
107
- };
108
- }
109
- /**
110
- * Creates the minimal rule context used by the mocked scenario.
111
- * @param reports Report descriptors captured during rule execution.
112
- * @returns Rule context that records emitted reports.
113
- * @example
114
- * ```typescript
115
- * const context = createRuleContext([]); void context;
116
- * ```
117
- */
118
- function createRuleContext(reports) {
119
- return {
120
- report(descriptor) {
121
- reports.push(descriptor);
122
- },
123
- };
124
- }
125
- /**
126
- * Reads the fix emitted by a report descriptor.
127
- * @param descriptor Report descriptor to evaluate.
128
- * @param fixer Synthetic fixer passed into the descriptor callback.
129
- * @returns Fix output produced by the descriptor.
130
- * @example
131
- * ```typescript
132
- * const fix = getDescriptorFix(void 0, {} as never); void fix;
133
- * ```
134
- */
135
- function getDescriptorFix(descriptor, fixer) {
136
- const actual = descriptor?.fix?.(fixer);
137
- if (!(actual instanceof Object)) {
138
- return void 0;
139
- }
140
- if (Array.isArray(actual) || "range" in actual) {
141
- return actual;
142
- }
143
- const iterableFixes = actual;
144
- return [...iterableFixes];
145
- }
146
- /**
147
- * Reads the mocked line-start range for the blank-line fix.
148
- * @returns Synthetic range used by the rule fix.
149
- * @example
150
- * ```typescript
151
- * const range = getMockLineStartRange(); void range;
152
- * ```
153
- */
154
- function getMockLineStartRange() {
155
- return [7, 7];
156
- }
157
- /**
158
- * Returns the phase-boundary comments from the mocked analysis.
159
- * @param analysis Parsed analysis used by the mocked rule helpers.
160
- * @returns Only comments that begin a later AAA phase.
161
- * @example
162
- * ```typescript
163
- * const comments = getMockPhaseBoundaryComments(createMockAnalysis());
164
- * void comments;
165
- * ```
166
- */
167
- function getMockPhaseBoundaryComments(analysis) {
168
- return analysis.sectionComments.slice(1);
169
- }
170
- /**
171
- * Reads the message identifier from a report descriptor when present.
172
- * @param descriptor Report descriptor emitted by the rule.
173
- * @returns Supported message identifier when present.
174
- * @example
175
- * ```typescript
176
- * const messageId = getReportMessageId({ messageId: "missingSections" } as Rule.ReportDescriptor);
177
- * void messageId;
178
- * ```
179
- */
180
- function getReportMessageId(descriptor) {
181
- if (!("messageId" in descriptor) ||
182
- !isRequireAaaSectionsMessageId(descriptor.messageId)) {
183
- return void 0;
184
- }
185
- return descriptor.messageId;
186
- }
187
- /**
188
- * Checks whether an unknown value is a valid rule message identifier.
189
- * @param value Value to validate.
190
- * @returns Whether the value is a supported message identifier.
191
- * @example
192
- * ```typescript
193
- * const actual = isRequireAaaSectionsMessageId("missingSections");
194
- * void actual;
195
- * ```
196
- */
197
- function isRequireAaaSectionsMessageId(value) {
198
- return (value === "blankLineBeforeSection" ||
199
- value === "codeBeforeArrange" ||
200
- value === "emptySection" ||
201
- value === "missingSections");
202
- }
203
- /**
204
- * Loads the rule module after test mocks have been applied.
205
- * @returns The rule module under test.
206
- * @example
207
- * ```typescript
208
- * const rule = await loadRequireAaaSectionsRule(); void rule;
209
- * ```
210
- */
211
- async function loadRequireAaaSectionsRule() {
212
- const { requireAaaSectionsRule } = await import("./rule.js");
213
- return requireAaaSectionsRule;
214
- }
215
- export { createAaaModuleMock, createMissingSectionFixesModule, createRecordedFixer, createRuleContext, getDescriptorFix, getReportMessageId, loadRequireAaaSectionsRule, };
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5yZXBvcnRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcmVxdWlyZS1hYWEtc2VjdGlvbnMvcnVsZS5yZXBvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkNBOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLGlCQUFpQjtJQUN4QixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxtQkFBbUI7SUFDMUIsT0FBTztRQUNMLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxpQkFBaUIsRUFBRSxxQkFBcUI7UUFDeEMsd0JBQXdCLEVBQUUsNEJBQTRCO1FBQ3RELHlCQUF5QixFQUFFLGlCQUFpQjtLQUM3QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUywrQkFBK0IsQ0FDdEMsd0JBQTBDO0lBRTFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxrQkFBa0I7SUFDekIsT0FBTztRQUNMLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtRQUMxQyxPQUFPLEVBQUUsSUFBSTtRQUNiLGVBQWUsRUFBRTtZQUNmO2dCQUNFLE9BQU8sRUFBRTtvQkFDUCxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUM3QyxJQUFJLEVBQUUsTUFBTTtpQkFDYjtnQkFDRCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDcEI7WUFDRDtnQkFDRSxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUss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Q0wsS0FBSyxLQUFLLHdCQUF3QjtRQUNsQyxLQUFLLEtBQUssbUJBQW1CO1FBQzdCLEtBQUssS0FBSyxjQUFjO1FBQ3hCLEtBQUssS0FBSyxpQkFBaUIsQ0FDNUIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsS0FBSyxVQUFVLDBCQUEwQjtJQUN2QyxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRCxPQUFPLHNCQUFzQixDQUFDO0FBQ2hDLENBQUM7QUFFRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLCtCQUErQixFQUMvQixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsMEJBQTBCLEdBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XHJcblxyXG5pbXBvcnQgdHlwZSB7IFRlc3RCbG9ja0FuYWx5c2lzIH0gZnJvbSBcIi4uL2FhYVwiO1xyXG5cclxuLyoqIE1vY2tlZCBBQUEgaGVscGVyIGV4cG9ydHMgY29uc3VtZWQgYnkgdGhlIHJ1bGUuICovXHJcbmludGVyZmFjZSBBYWFNb2R1bGVNb2NrIHtcclxuICAvKiogTW9ja2VkIGFuYWx5emVyIGVudHJ5IHBvaW50LiAqL1xyXG4gIGFuYWx5emVUZXN0QmxvY2s6ICgpID0+IFRlc3RCbG9ja0FuYWx5c2lzO1xyXG4gIC8qKiBNb2NrZWQgbGluZS1zdGFydCBoZWxwZXIuICovXHJcbiAgZ2V0TGluZVN0YXJ0UmFuZ2U6ICgpID0+IFtudW1iZXIsIG51bWJlcl07XHJcbiAgLyoqIE1vY2tlZCBib3VuZGFyeS1jb21tZW50IGhlbHBlci4gKi9cclxuICBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHM6IChcclxuICAgIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcclxuICApID0+IFRlc3RCbG9ja0FuYWx5c2lzW1wic2VjdGlvbkNvbW1lbnRzXCJdO1xyXG4gIC8qKiBNb2NrZWQgYmxhbmstbGluZSBoZWxwZXIuICovXHJcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudDogKCkgPT4gZmFsc2U7XHJcbn1cclxuXHJcbi8qKiBNb2NrZWQgbWlzc2luZy1zZWN0aW9uLWZpeGVzIG1vZHVsZS4gKi9cclxuaW50ZXJmYWNlIE1pc3NpbmdTZWN0aW9uRml4ZXNNb2R1bGUge1xyXG4gIC8qKiBNb2NrZWQgZml4IGJ1aWxkZXIuICovXHJcbiAgYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzOiAoKSA9PiBSdWxlLkZpeFtdO1xyXG59XHJcblxyXG4vKiogTWVzc2FnZSBpZGVudGlmaWVycyBlbWl0dGVkIGJ5IHRoZSBydWxlIHVuZGVyIHRlc3QuICovXHJcbnR5cGUgUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkID1cclxuICB8IFwiYmxhbmtMaW5lQmVmb3JlU2VjdGlvblwiXHJcbiAgfCBcImNvZGVCZWZvcmVBcnJhbmdlXCJcclxuICB8IFwiZW1wdHlTZWN0aW9uXCJcclxuICB8IFwibWlzc2luZ1NlY3Rpb25zXCI7XHJcblxyXG4vKiogQ2FwdHVyZWQgcmVzdWx0IGZyb20gdGhlIG1vY2tlZCByZXBvcnRpbmcgc2NlbmFyaW8uICovXHJcbmludGVyZmFjZSBTY2VuYXJpb1Jlc3VsdCB7XHJcbiAgLyoqIEZpeCBlbWl0dGVkIGZvciB0aGUgYmxhbmstbGluZSByZXBvcnQuICovXHJcbiAgYmxhbmtMaW5lRml4OiBSdWxlLkZpeCB8IFJ1bGUuRml4W10gfCB1bmRlZmluZWQ7XHJcbiAgLyoqIEZpeGVzIHJlY29yZGVkIGJ5IHRoZSBzeW50aGV0aWMgZml4ZXIuICovXHJcbiAgaW5zZXJ0ZWRGaXhlczogUnVsZS5GaXhbXTtcclxuICAvKiogTWVzc2FnZSBpZGVudGlmaWVycyBlbWl0dGVkIGluIHJlcG9ydCBvcmRlci4gKi9cclxuICBtZXNzYWdlSWRzOiAoUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkIHwgdW5kZWZpbmVkKVtdO1xyXG4gIC8qKiBGaXggZW1pdHRlZCBmb3IgdGhlIG1pc3Npbmctc2VjdGlvbnMgcmVwb3J0LiAqL1xyXG4gIG1pc3NpbmdTZWN0aW9uc0ZpeDogUnVsZS5GaXggfCBSdWxlLkZpeFtdIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJucyBmYWxzZSBzbyB0aGUgbW9ja2VkIHJ1bGUgcGF0aCBhbHdheXMgcmVwb3J0cyBhIG1pc3NpbmcgYmxhbmsgbGluZS5cclxuICogQHJldHVybnMgRmFsc2UgZm9yIGV2ZXJ5IGludm9jYXRpb24uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgYWN0dWFsID0gYWx3YXlzUmV0dXJuRmFsc2UoKTsgdm9pZCBhY3R1YWw7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYWx3YXlzUmV0dXJuRmFsc2UoKTogZmFsc2Uge1xyXG4gIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIG1vY2tlZCBBQUEgaGVscGVyIG1vZHVsZS5cclxuICogQHJldHVybnMgTW9ja2VkIGV4cG9ydHMgY29uc3VtZWQgYnkgdGhlIHJ1bGUgbW9kdWxlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1vY2tNb2R1bGUgPSBjcmVhdGVBYWFNb2R1bGVNb2NrKCk7IHZvaWQgbW9ja01vZHVsZTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVBYWFNb2R1bGVNb2NrKCk6IEFhYU1vZHVsZU1vY2sge1xyXG4gIHJldHVybiB7XHJcbiAgICBhbmFseXplVGVzdEJsb2NrOiBjcmVhdGVNb2NrQW5hbHlzaXMsXHJcbiAgICBnZXRMaW5lU3RhcnRSYW5nZTogZ2V0TW9ja0xpbmVTdGFydFJhbmdlLFxyXG4gICAgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzOiBnZXRNb2NrUGhhc2VCb3VuZGFyeUNvbW1lbnRzLFxyXG4gICAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudDogYWx3YXlzUmV0dXJuRmFsc2UsXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIG1vY2tlZCBtaXNzaW5nLXNlY3Rpb24tZml4ZXMgbW9kdWxlLlxyXG4gKiBAcGFyYW0gYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzIE1vY2tlZCBmaXggYnVpbGRlci5cclxuICogQHJldHVybnMgTW9ja2VkIG1vZHVsZSBleHBvc2luZyB0aGUgcHJvdmlkZWQgZml4IGJ1aWxkZXIuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgbW9ja01vZHVsZSA9IGNyZWF0ZU1pc3NpbmdTZWN0aW9uRml4ZXNNb2R1bGUoKCkgPT4gW10pOyB2b2lkIG1vY2tNb2R1bGU7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlTWlzc2luZ1NlY3Rpb25GaXhlc01vZHVsZShcclxuICBidWlsZE1pc3NpbmdTZWN0aW9uRml4ZXM6ICgpID0+IFJ1bGUuRml4W10sXHJcbik6IE1pc3NpbmdTZWN0aW9uRml4ZXNNb2R1bGUge1xyXG4gIHJldHVybiB7IGJ1aWxkTWlzc2luZ1NlY3Rpb25GaXhlcyB9O1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSBzeW50aGV0aWMgYW5hbHlzaXMgcmV0dXJuZWQgYnkgdGhlIG1vY2tlZCBBQUEgaGVscGVycy5cclxuICogQHJldHVybnMgTWluaW1hbCB0ZXN0LWJsb2NrIGFuYWx5c2lzIHVzZWQgYnkgdGhlIHJlZ3Jlc3Npb24gc2NlbmFyaW8uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgYW5hbHlzaXMgPSBjcmVhdGVNb2NrQW5hbHlzaXMoKTsgdm9pZCBhbmFseXNpcztcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVNb2NrQW5hbHlzaXMoKTogVGVzdEJsb2NrQW5hbHlzaXMge1xyXG4gIHJldHVybiB7XHJcbiAgICBib2R5TGluZUNvdW50OiA0LFxyXG4gICAgY2FsbEV4cHJlc3Npb246IHsgdHlwZTogXCJDYWxsRXhwcmVzc2lvblwiIH0sXHJcbiAgICBuZXdsaW5lOiBcIlxcblwiLFxyXG4gICAgc2VjdGlvbkNvbW1lbnRzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBjb21tZW50OiB7XHJcbiAgICAgICAgICBsb2M6IHsgZW5kOiB7IGxpbmU6IDIgfSwgc3RhcnQ6IHsgbGluZTogMiB9IH0sXHJcbiAgICAgICAgICB0eXBlOiBcIkxpbmVcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBoYXNlczogW1wiQXJyYW5nZVwiXSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNvbW1lbnQ6IHtcclxuICAgICAgICAgIGxvYzogeyBlbmQ6IHsgbGluZTogNCB9LCBzdGFydDogeyBsaW5lOiA0IH0gfSxcclxuICAgICAgICAgIHR5cGU6IFwiTGluZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGhhc2VzOiBbXCJBY3RcIl0sXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgc291cmNlVGV4dDogW1xyXG4gICAgICBcImNvbnN0IHNldHVwID0gY3JlYXRlU2V0dXAoKTtcIixcclxuICAgICAgXCIvLyBBcnJhbmdlXCIsXHJcbiAgICAgIFwicnVuKCk7XCIsXHJcbiAgICAgIFwiLy8gQWN0XCIsXHJcbiAgICBdLmpvaW4oXCJcXG5cIiksXHJcbiAgICBzdGF0ZW1lbnRzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBub2RlOiB7XHJcbiAgICAgICAgICBsb2M6IHsgZW5kOiB7IGxpbmU6IDEgfSwgc3RhcnQ6IHsgbGluZTogMSB9IH0sXHJcbiAgICAgICAgICB0eXBlOiBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIixcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbm9kZToge1xyXG4gICAgICAgICAgbG9jOiB7IGVuZDogeyBsaW5lOiAzIH0sIHN0YXJ0OiB7IGxpbmU6IDMgfSB9LFxyXG4gICAgICAgICAgdHlwZTogXCJFeHByZXNzaW9uU3RhdGVtZW50XCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSBhcyBUZXN0QmxvY2tBbmFseXNpcztcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBmaXhlciB0aGF0IHJlY29yZHMgaW5zZXJ0ZWQgdGV4dCBlZGl0cy5cclxuICogQHBhcmFtIGluc2VydGVkRml4ZXMgQ29sbGVjdGlvbiB1cGRhdGVkIHdoZW4gdGhlIGZpeGVyIGluc2VydHMgdGV4dC5cclxuICogQHJldHVybnMgUnVsZSBmaXhlciB0aGF0IHJlY29yZHMgaW5zZXJ0ZWQgZWRpdHMuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgZml4ZXIgPSBjcmVhdGVSZWNvcmRlZEZpeGVyKFtdKTsgdm9pZCBmaXhlcjtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZWNvcmRlZEZpeGVyKGluc2VydGVkRml4ZXM6IFJ1bGUuRml4W10pOiBSdWxlLlJ1bGVGaXhlciB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGluc2VydFRleHRCZWZvcmVSYW5nZShyYW5nZTogW251bWJlciwgbnVtYmVyXSwgdGV4dDogc3RyaW5nKTogUnVsZS5GaXgge1xyXG4gICAgICBjb25zdCBmaXg6IFJ1bGUuRml4ID0geyByYW5nZSwgdGV4dCB9O1xyXG4gICAgICBpbnNlcnRlZEZpeGVzLnB1c2goZml4KTtcclxuICAgICAgcmV0dXJuIGZpeDtcclxuICAgIH0sXHJcbiAgfSBhcyBSdWxlLlJ1bGVGaXhlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIG1pbmltYWwgcnVsZSBjb250ZXh0IHVzZWQgYnkgdGhlIG1vY2tlZCBzY2VuYXJpby5cclxuICogQHBhcmFtIHJlcG9ydHMgUmVwb3J0IGRlc2NyaXB0b3JzIGNhcHR1cmVkIGR1cmluZyBydWxlIGV4ZWN1dGlvbi5cclxuICogQHJldHVybnMgUnVsZSBjb250ZXh0IHRoYXQgcmVjb3JkcyBlbWl0dGVkIHJlcG9ydHMuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY29udGV4dCA9IGNyZWF0ZVJ1bGVDb250ZXh0KFtdKTsgdm9pZCBjb250ZXh0O1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVJ1bGVDb250ZXh0KHJlcG9ydHM6IFJ1bGUuUmVwb3J0RGVzY3JpcHRvcltdKTogUnVsZS5SdWxlQ29udGV4dCB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHJlcG9ydChkZXNjcmlwdG9yOiBSdWxlLlJlcG9ydERlc2NyaXB0b3IpOiB2b2lkIHtcclxuICAgICAgcmVwb3J0cy5wdXNoKGRlc2NyaXB0b3IpO1xyXG4gICAgfSxcclxuICB9IGFzIFJ1bGUuUnVsZUNvbnRleHQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZWFkcyB0aGUgZml4IGVtaXR0ZWQgYnkgYSByZXBvcnQgZGVzY3JpcHRvci5cclxuICogQHBhcmFtIGRlc2NyaXB0b3IgUmVwb3J0IGRlc2NyaXB0b3IgdG8gZXZhbHVhdGUuXHJcbiAqIEBwYXJhbSBmaXhlciBTeW50aGV0aWMgZml4ZXIgcGFzc2VkIGludG8gdGhlIGRlc2NyaXB0b3IgY2FsbGJhY2suXHJcbiAqIEByZXR1cm5zIEZpeCBvdXRwdXQgcHJvZHVjZWQgYnkgdGhlIGRlc2NyaXB0b3IuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgZml4ID0gZ2V0RGVzY3JpcHRvckZpeCh2b2lkIDAsIHt9IGFzIG5ldmVyKTsgdm9pZCBmaXg7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckZpeChcclxuICBkZXNjcmlwdG9yOiBSdWxlLlJlcG9ydERlc2NyaXB0b3IgfCB1bmRlZmluZWQsXHJcbiAgZml4ZXI6IFJ1bGUuUnVsZUZpeGVyLFxyXG4pOiBSdWxlLkZpeCB8IFJ1bGUuRml4W10gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IGFjdHVhbCA9IGRlc2NyaXB0b3I/LmZpeD8uKGZpeGVyKTtcclxuXHJcbiAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgT2JqZWN0KSkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGlmIChBcnJheS5pc0FycmF5KGFjdHVhbCkgfHwgXCJyYW5nZVwiIGluIGFjdHVhbCkge1xyXG4gICAgcmV0dXJuIGFjdHVhbDtcclxuICB9XHJcblxyXG4gIGNvbnN0IGl0ZXJhYmxlRml4ZXM6IEl0ZXJhYmxlPFJ1bGUuRml4PiA9IGFjdHVhbDtcclxuXHJcbiAgcmV0dXJuIFsuLi5pdGVyYWJsZUZpeGVzXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlYWRzIHRoZSBtb2NrZWQgbGluZS1zdGFydCByYW5nZSBmb3IgdGhlIGJsYW5rLWxpbmUgZml4LlxyXG4gKiBAcmV0dXJucyBTeW50aGV0aWMgcmFuZ2UgdXNlZCBieSB0aGUgcnVsZSBmaXguXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgcmFuZ2UgPSBnZXRNb2NrTGluZVN0YXJ0UmFuZ2UoKTsgdm9pZCByYW5nZTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRNb2NrTGluZVN0YXJ0UmFuZ2UoKTogW251bWJlciwgbnVtYmVyXSB7XHJcbiAgcmV0dXJuIFs3LCA3XTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIHBoYXNlLWJvdW5kYXJ5IGNvbW1lbnRzIGZyb20gdGhlIG1vY2tlZCBhbmFseXNpcy5cclxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCBhbmFseXNpcyB1c2VkIGJ5IHRoZSBtb2NrZWQgcnVsZSBoZWxwZXJzLlxyXG4gKiBAcmV0dXJucyBPbmx5IGNvbW1lbnRzIHRoYXQgYmVnaW4gYSBsYXRlciBBQUEgcGhhc2UuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY29tbWVudHMgPSBnZXRNb2NrUGhhc2VCb3VuZGFyeUNvbW1lbnRzKGNyZWF0ZU1vY2tBbmFseXNpcygpKTtcclxuICogdm9pZCBjb21tZW50cztcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRNb2NrUGhhc2VCb3VuZGFyeUNvbW1lbnRzKFxyXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcclxuKTogVGVzdEJsb2NrQW5hbHlzaXNbXCJzZWN0aW9uQ29tbWVudHNcIl0ge1xyXG4gIHJldHVybiBhbmFseXNpcy5zZWN0aW9uQ29tbWVudHMuc2xpY2UoMSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZWFkcyB0aGUgbWVzc2FnZSBpZGVudGlmaWVyIGZyb20gYSByZXBvcnQgZGVzY3JpcHRvciB3aGVuIHByZXNlbnQuXHJcbiAqIEBwYXJhbSBkZXNjcmlwdG9yIFJlcG9ydCBkZXNjcmlwdG9yIGVtaXR0ZWQgYnkgdGhlIHJ1bGUuXHJcbiAqIEByZXR1cm5zIFN1cHBvcnRlZCBtZXNzYWdlIGlkZW50aWZpZXIgd2hlbiBwcmVzZW50LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1lc3NhZ2VJZCA9IGdldFJlcG9ydE1lc3NhZ2VJZCh7IG1lc3NhZ2VJZDogXCJtaXNzaW5nU2VjdGlvbnNcIiB9IGFzIFJ1bGUuUmVwb3J0RGVzY3JpcHRvcik7XHJcbiAqIHZvaWQgbWVzc2FnZUlkO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldFJlcG9ydE1lc3NhZ2VJZChcclxuICBkZXNjcmlwdG9yOiBSdWxlLlJlcG9ydERlc2NyaXB0b3IsXHJcbik6IFJlcXVpcmVBYWFTZWN0aW9uc01lc3NhZ2VJZCB8IHVuZGVmaW5lZCB7XHJcbiAgaWYgKFxyXG4gICAgIShcIm1lc3NhZ2VJZFwiIGluIGRlc2NyaXB0b3IpIHx8XHJcbiAgICAhaXNSZXF1aXJlQWFhU2VjdGlvbnNNZXNzYWdlSWQoZGVzY3JpcHRvci5tZXNzYWdlSWQpXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuICByZXR1cm4gZGVzY3JpcHRvci5tZXNzYWdlSWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhbiB1bmtub3duIHZhbHVlIGlzIGEgdmFsaWQgcnVsZSBtZXNzYWdlIGlkZW50aWZpZXIuXHJcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byB2YWxpZGF0ZS5cclxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYSBzdXBwb3J0ZWQgbWVzc2FnZSBpZGVudGlmaWVyLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGFjdHVhbCA9IGlzUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkKFwibWlzc2luZ1NlY3Rpb25zXCIpO1xyXG4gKiB2b2lkIGFjdHVhbDtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1JlcXVpcmVBYWFTZWN0aW9uc01lc3NhZ2VJZChcclxuICB2YWx1ZTogdW5rbm93bixcclxuKTogdmFsdWUgaXMgUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkIHtcclxuICByZXR1cm4gKFxyXG4gICAgdmFsdWUgPT09IFwiYmxhbmtMaW5lQmVmb3JlU2VjdGlvblwiIHx8XHJcbiAgICB2YWx1ZSA9PT0gXCJjb2RlQmVmb3JlQXJyYW5nZVwiIHx8XHJcbiAgICB2YWx1ZSA9PT0gXCJlbXB0eVNlY3Rpb25cIiB8fFxyXG4gICAgdmFsdWUgPT09IFwibWlzc2luZ1NlY3Rpb25zXCJcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogTG9hZHMgdGhlIHJ1bGUgbW9kdWxlIGFmdGVyIHRlc3QgbW9ja3MgaGF2ZSBiZWVuIGFwcGxpZWQuXHJcbiAqIEByZXR1cm5zIFRoZSBydWxlIG1vZHVsZSB1bmRlciB0ZXN0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJ1bGUgPSBhd2FpdCBsb2FkUmVxdWlyZUFhYVNlY3Rpb25zUnVsZSgpOyB2b2lkIHJ1bGU7XHJcbiAqIGBgYFxyXG4gKi9cclxuYXN5bmMgZnVuY3Rpb24gbG9hZFJlcXVpcmVBYWFTZWN0aW9uc1J1bGUoKTogUHJvbWlzZTxSdWxlLlJ1bGVNb2R1bGU+IHtcclxuICBjb25zdCB7IHJlcXVpcmVBYWFTZWN0aW9uc1J1bGUgfSA9IGF3YWl0IGltcG9ydChcIi4vcnVsZVwiKTtcclxuICByZXR1cm4gcmVxdWlyZUFhYVNlY3Rpb25zUnVsZTtcclxufVxyXG5cclxuZXhwb3J0IHtcclxuICBjcmVhdGVBYWFNb2R1bGVNb2NrLFxyXG4gIGNyZWF0ZU1pc3NpbmdTZWN0aW9uRml4ZXNNb2R1bGUsXHJcbiAgY3JlYXRlUmVjb3JkZWRGaXhlcixcclxuICBjcmVhdGVSdWxlQ29udGV4dCxcclxuICBnZXREZXNjcmlwdG9yRml4LFxyXG4gIGdldFJlcG9ydE1lc3NhZ2VJZCxcclxuICBsb2FkUmVxdWlyZUFhYVNlY3Rpb25zUnVsZSxcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIHsgU2NlbmFyaW9SZXN1bHQgfTtcclxuIl19
@@ -1,51 +0,0 @@
1
- import type { RequireTestCompanionOptions } from "./types.js";
2
- /** Type definition for rule data. */
3
- interface RuleReport {
4
- /** MessageId helper value. */
5
- messageId: string | undefined;
6
- }
7
- /**
8
- * Creates createTemporaryFile.
9
- * @param root Input root value.
10
- * @param filename Input filename value.
11
- * @returns Return value output.
12
- * @example
13
- * ```typescript
14
- * createTemporaryFile();
15
- * ```
16
- */
17
- declare const createTemporaryFile: (root: "src" | "tmp", filename: string) => string;
18
- /**
19
- * Creates a temporary file pair for test/source combinations.
20
- * @param root Input root value.
21
- * @param first Input first value.
22
- * @param second Input second value.
23
- * @returns Tuple of created file paths.
24
- * @throws {Error} When the file paths are missing.
25
- * @example
26
- * ```typescript
27
- * const [source, test] = createTemporaryPair("tmp", "a.ts", "a.spec.ts");
28
- * ```
29
- */
30
- declare const createTemporaryPair: (root: "src" | "tmp", first: string, second: string) => [string, string];
31
- /**
32
- * Runs the rule with the given options.
33
- * @param filename Input filename value.
34
- * @param options Input options value.
35
- * @returns Collected rule reports.
36
- * @example
37
- * ```typescript
38
- * const reports = runRule("/tmp/feature.ts");
39
- * ```
40
- */
41
- declare const runRule: (filename: string, options?: RequireTestCompanionOptions) => RuleReport[];
42
- /**
43
- * Cleans up temporary directories created by tests.
44
- * @example
45
- * ```typescript
46
- * cleanupTemporaryDirectories();
47
- * ```
48
- */
49
- declare const cleanupTemporaryDirectories: () => void;
50
- export { cleanupTemporaryDirectories, createTemporaryFile, createTemporaryPair, runRule, };
51
- //# sourceMappingURL=require-test-companion-test-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"require-test-companion-test-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/require-test-companion-test-helpers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAU3D,qCAAqC;AACrC,UAAU,UAAU;IAClB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAgCD;;;;;;;;;GASG;AACH,QAAA,MAAM,mBAAmB,GAAI,MAAM,KAAK,GAAG,KAAK,EAAE,UAAU,MAAM,KAAG,MAMpE,CAAC;AAyBF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,mBAAmB,GACvB,MAAM,KAAK,GAAG,KAAK,EACnB,OAAO,MAAM,EACb,QAAQ,MAAM,KACb,CAAC,MAAM,EAAE,MAAM,CAOjB,CAAC;AA2EF;;;;;;;;;GASG;AACH,QAAA,MAAM,OAAO,GACX,UAAU,MAAM,EAChB,UAAU,2BAA2B,KACpC,UAAU,EAUZ,CAAC;AAEF;;;;;;GAMG;AACH,QAAA,MAAM,2BAA2B,QAAO,IAIvC,CAAC;AAEF,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,GACR,CAAC"}