@codeperfect/eslint-plugin 1.0.0 → 2.1.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 (587) hide show
  1. package/README.md +26 -4
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/{custom-rules.d.ts → application/custom-rules.d.ts} +3 -0
  4. package/dist/application/custom-rules.d.ts.map +1 -0
  5. package/dist/application/custom-rules.js +74 -0
  6. package/dist/application/index.d.ts +4 -0
  7. package/dist/application/index.d.ts.map +1 -0
  8. package/dist/application/index.js +3 -0
  9. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  10. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +56 -0
  11. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -0
  12. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +149 -0
  13. package/dist/{architecture → domain/architecture}/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +4 -4
  14. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
  15. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +98 -0
  16. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +45 -0
  17. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
  18. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +64 -0
  19. package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +5 -4
  20. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
  21. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +87 -0
  22. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
  23. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +145 -0
  24. package/dist/domain/architecture/consistent-barrel-files/index.d.ts +5 -0
  25. package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -0
  26. package/dist/domain/architecture/consistent-barrel-files/index.js +4 -0
  27. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
  28. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +90 -0
  29. package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +1 -1
  30. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
  31. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +91 -0
  32. package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +4 -6
  33. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
  34. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +95 -0
  35. package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
  36. package/dist/domain/architecture/consistent-barrel-files/rule.js +51 -0
  37. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +4 -0
  38. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +1 -0
  39. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +4 -0
  40. package/dist/{architecture → domain/architecture}/consistent-barrel-files/test-helpers.d.ts +48 -48
  41. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
  42. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +20 -0
  43. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +1 -0
  44. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +25 -0
  45. package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +235 -0
  46. package/dist/domain/architecture/consistent-barrel-files/types.d.ts +19 -0
  47. package/dist/domain/architecture/consistent-barrel-files/types.d.ts.map +1 -0
  48. package/dist/domain/architecture/consistent-barrel-files/types.js +2 -0
  49. package/dist/{architecture → domain/architecture}/index.d.ts +1 -1
  50. package/dist/domain/architecture/index.d.ts.map +1 -0
  51. package/dist/domain/architecture/index.js +2 -0
  52. package/dist/{core → domain/core}/index.d.ts +2 -2
  53. package/dist/domain/core/index.d.ts.map +1 -0
  54. package/dist/domain/core/index.js +3 -0
  55. package/dist/domain/core/no-multiple-declarators/index.d.ts +2 -0
  56. package/dist/domain/core/no-multiple-declarators/index.d.ts.map +1 -0
  57. package/dist/domain/core/no-multiple-declarators/index.js +2 -0
  58. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +101 -0
  59. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +1 -0
  60. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +108 -0
  61. package/dist/{core → domain/core}/no-multiple-declarators/rule.d.ts +1 -0
  62. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -0
  63. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +35 -0
  64. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +1 -0
  65. package/dist/domain/core/no-multiple-declarators/rule.fixes.js +95 -0
  66. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +4 -0
  67. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +1 -0
  68. package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +4 -0
  69. package/dist/domain/core/no-multiple-declarators/rule.js +222 -0
  70. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +4 -0
  71. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +1 -0
  72. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +4 -0
  73. package/dist/domain/core/no-multiple-declarators/types.d.ts +77 -0
  74. package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -0
  75. package/dist/domain/core/no-multiple-declarators/types.js +38 -0
  76. package/dist/domain/core/prefer-interface-types/index.d.ts +2 -0
  77. package/dist/domain/core/prefer-interface-types/index.d.ts.map +1 -0
  78. package/dist/domain/core/prefer-interface-types/index.js +2 -0
  79. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -0
  80. package/dist/domain/core/prefer-interface-types/rule.js +148 -0
  81. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
  82. package/dist/domain/core/prefer-interface-types/test-helpers.js +116 -0
  83. package/dist/{custom-rule-documentation.d.ts → domain/custom-rule-documentation.d.ts} +3 -1
  84. package/dist/domain/custom-rule-documentation.d.ts.map +1 -0
  85. package/dist/domain/custom-rule-documentation.js +36 -0
  86. package/dist/domain/docs/index.d.ts +4 -0
  87. package/dist/domain/docs/index.d.ts.map +1 -0
  88. package/dist/domain/docs/index.js +4 -0
  89. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
  90. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
  91. package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities.d.ts +1 -1
  92. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
  93. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +146 -0
  94. package/dist/domain/docs/no-interface-member-docs/index.d.ts +2 -0
  95. package/dist/domain/docs/no-interface-member-docs/index.d.ts.map +1 -0
  96. package/dist/domain/docs/no-interface-member-docs/index.js +2 -0
  97. package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-tags.d.ts +1 -1
  98. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
  99. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +101 -0
  100. package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-utilities.d.ts +1 -1
  101. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
  102. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +125 -0
  103. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -0
  104. package/dist/domain/docs/no-interface-member-docs/rule.js +171 -0
  105. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
  106. package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.js +2 -2
  107. package/dist/{docs → domain/docs}/no-interface-member-docs/types.d.ts +2 -2
  108. package/dist/domain/docs/no-interface-member-docs/types.d.ts.map +1 -0
  109. package/dist/domain/docs/no-interface-member-docs/types.js +2 -0
  110. package/dist/domain/docs/require-example-language/create-fixer.d.ts +5 -0
  111. package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +1 -0
  112. package/dist/domain/docs/require-example-language/create-fixer.js +5 -0
  113. package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
  114. package/dist/domain/docs/require-example-language/empty-fence-fixes.js +169 -0
  115. package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -0
  116. package/dist/domain/docs/require-example-language/example-utilities.js +76 -0
  117. package/dist/{docs → domain/docs}/require-example-language/examples.d.ts +1 -1
  118. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -0
  119. package/dist/domain/docs/require-example-language/examples.js +181 -0
  120. package/dist/{docs → domain/docs}/require-example-language/fixes.d.ts +2 -2
  121. package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -0
  122. package/dist/domain/docs/require-example-language/fixes.js +182 -0
  123. package/dist/domain/docs/require-example-language/index.d.ts +3 -0
  124. package/dist/domain/docs/require-example-language/index.d.ts.map +1 -0
  125. package/dist/domain/docs/require-example-language/index.js +2 -0
  126. package/dist/{docs → domain/docs}/require-example-language/reporting.d.ts +1 -1
  127. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -0
  128. package/dist/domain/docs/require-example-language/reporting.js +148 -0
  129. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -0
  130. package/dist/domain/docs/require-example-language/rule.js +37 -0
  131. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -0
  132. package/dist/domain/docs/require-example-language/types.js +2 -0
  133. package/dist/domain/docs/single-line-jsdoc/index.d.ts +2 -0
  134. package/dist/domain/docs/single-line-jsdoc/index.d.ts.map +1 -0
  135. package/dist/domain/docs/single-line-jsdoc/index.js +2 -0
  136. package/dist/domain/docs/single-line-jsdoc/rule.d.ts +4 -0
  137. package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -0
  138. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +4 -0
  139. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +1 -0
  140. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +5 -0
  141. package/dist/domain/docs/single-line-jsdoc/rule.js +201 -0
  142. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +4 -0
  143. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +1 -0
  144. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +5 -0
  145. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
  146. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
  147. package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +1 -1
  148. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
  149. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
  150. package/dist/domain/docs/test-helpers.d.ts.map +1 -0
  151. package/dist/domain/docs/test-helpers.js +107 -0
  152. package/dist/domain/index.d.ts +6 -0
  153. package/dist/domain/index.d.ts.map +1 -0
  154. package/dist/domain/index.js +6 -0
  155. package/dist/domain/testing/aaa/analyzer.analysis.d.ts +34 -0
  156. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -0
  157. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +145 -0
  158. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -0
  159. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +203 -0
  160. package/dist/domain/testing/aaa/analyzer.analysis.js +82 -0
  161. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts +4 -0
  162. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts.map +1 -0
  163. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.js +4 -0
  164. package/dist/domain/testing/aaa/analyzer.assertions.d.ts +18 -0
  165. package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -0
  166. package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts +4 -0
  167. package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts.map +1 -0
  168. package/dist/domain/testing/aaa/analyzer.assertions.destructured.js +4 -0
  169. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +95 -0
  170. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -0
  171. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +185 -0
  172. package/dist/domain/testing/aaa/analyzer.assertions.js +33 -0
  173. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +64 -0
  174. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -0
  175. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +105 -0
  176. package/dist/domain/testing/aaa/analyzer.classification.d.ts +16 -0
  177. package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -0
  178. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +77 -0
  179. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -0
  180. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +203 -0
  181. package/dist/domain/testing/aaa/analyzer.classification.js +31 -0
  182. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +9 -0
  183. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +1 -0
  184. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +10 -0
  185. package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts +4 -0
  186. package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts.map +1 -0
  187. package/dist/domain/testing/aaa/analyzer.classification.mutations.js +4 -0
  188. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +15 -0
  189. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -0
  190. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +34 -0
  191. package/dist/domain/testing/aaa/analyzer.d.ts +46 -0
  192. package/dist/domain/testing/aaa/analyzer.d.ts.map +1 -0
  193. package/dist/domain/testing/aaa/analyzer.js +59 -0
  194. package/dist/domain/testing/aaa/analyzer.super.d.ts +106 -0
  195. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -0
  196. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +27 -0
  197. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -0
  198. package/dist/domain/testing/aaa/analyzer.super.helpers.js +66 -0
  199. package/dist/domain/testing/aaa/analyzer.super.js +211 -0
  200. package/dist/{testing → domain/testing}/aaa/index.d.ts +2 -2
  201. package/dist/domain/testing/aaa/index.d.ts.map +1 -0
  202. package/dist/domain/testing/aaa/index.js +2 -0
  203. package/dist/domain/testing/aaa/types.d.ts +58 -0
  204. package/dist/domain/testing/aaa/types.d.ts.map +1 -0
  205. package/dist/domain/testing/aaa/types.js +2 -0
  206. package/dist/domain/testing/assert-actual-expected-names/index.d.ts +2 -0
  207. package/dist/domain/testing/assert-actual-expected-names/index.d.ts.map +1 -0
  208. package/dist/domain/testing/assert-actual-expected-names/index.js +2 -0
  209. package/dist/{testing → domain/testing}/assert-actual-expected-names/rule.d.ts +1 -0
  210. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
  211. package/dist/domain/testing/assert-actual-expected-names/rule.js +116 -0
  212. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
  213. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
  214. package/dist/domain/testing/enforce-aaa-phase-purity/index.js +2 -0
  215. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts +13 -0
  216. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -0
  217. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +134 -0
  218. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +25 -0
  219. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -0
  220. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +138 -0
  221. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts +4 -0
  222. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts.map +1 -0
  223. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.js +4 -0
  224. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts +4 -0
  225. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts.map +1 -0
  226. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.js +4 -0
  227. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +4 -0
  228. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +1 -0
  229. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +4 -0
  230. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +14 -0
  231. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -0
  232. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +180 -0
  233. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +42 -0
  234. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +1 -0
  235. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +188 -0
  236. package/dist/{testing → domain/testing}/enforce-aaa-phase-purity/rule.d.ts +1 -0
  237. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
  238. package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +37 -0
  239. package/dist/domain/testing/enforce-aaa-structure/index.d.ts +2 -0
  240. package/dist/domain/testing/enforce-aaa-structure/index.d.ts.map +1 -0
  241. package/dist/domain/testing/enforce-aaa-structure/index.js +2 -0
  242. package/dist/{testing → domain/testing}/enforce-aaa-structure/rule.d.ts +1 -0
  243. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
  244. package/dist/domain/testing/enforce-aaa-structure/rule.js +88 -0
  245. package/dist/{testing → domain/testing}/index.d.ts +9 -8
  246. package/dist/domain/testing/index.d.ts.map +1 -0
  247. package/dist/domain/testing/index.js +10 -0
  248. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +29 -0
  249. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -0
  250. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +90 -0
  251. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts +31 -0
  252. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -0
  253. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +43 -0
  254. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts +16 -0
  255. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -0
  256. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +205 -0
  257. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +28 -0
  258. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
  259. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +171 -0
  260. package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts +2 -0
  261. package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
  262. package/dist/domain/testing/prefer-vi-mocked-import/index.js +2 -0
  263. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-bindings.d.ts +1 -1
  264. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
  265. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
  266. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-declarations.d.ts +2 -1
  267. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
  268. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +131 -0
  269. package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
  270. package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
  271. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-imports.d.ts +1 -1
  272. package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
  273. package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +156 -0
  274. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-rewrites.d.ts +1 -1
  275. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
  276. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
  277. package/dist/domain/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
  278. package/dist/domain/testing/prefer-vi-mocked-import/match-walk.js +62 -0
  279. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +26 -0
  280. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
  281. package/dist/domain/testing/prefer-vi-mocked-import/match.js +198 -0
  282. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +20 -0
  283. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +1 -0
  284. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +39 -0
  285. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
  286. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +39 -0
  287. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/types.d.ts +1 -1
  288. package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
  289. package/dist/domain/testing/prefer-vi-mocked-import/types.js +2 -0
  290. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +97 -0
  291. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +1 -0
  292. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +174 -0
  293. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +2 -0
  294. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +1 -0
  295. package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +2 -0
  296. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +14 -0
  297. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +1 -0
  298. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +84 -0
  299. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +13 -0
  300. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +1 -0
  301. package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +195 -0
  302. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +25 -0
  303. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +1 -0
  304. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +96 -0
  305. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +32 -0
  306. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +1 -0
  307. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +164 -0
  308. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +5 -0
  309. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +1 -0
  310. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +4 -0
  311. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +1 -0
  312. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +4 -0
  313. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +4 -0
  314. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +1 -0
  315. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +4 -0
  316. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +88 -0
  317. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +4 -0
  318. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +1 -0
  319. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +4 -0
  320. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +24 -0
  321. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +1 -0
  322. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +113 -0
  323. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +36 -0
  324. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +1 -0
  325. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +138 -0
  326. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +187 -0
  327. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +1 -0
  328. package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +2 -0
  329. package/dist/domain/testing/require-aaa-sections/index.d.ts +2 -0
  330. package/dist/domain/testing/require-aaa-sections/index.d.ts.map +1 -0
  331. package/dist/domain/testing/require-aaa-sections/index.js +2 -0
  332. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts +17 -0
  333. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +1 -0
  334. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +150 -0
  335. package/dist/{testing → domain/testing}/require-aaa-sections/rule.d.ts +1 -0
  336. package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +1 -0
  337. package/dist/domain/testing/require-aaa-sections/rule.js +134 -0
  338. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +104 -0
  339. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +1 -0
  340. package/dist/domain/testing/require-aaa-sections/rule.reporting.js +216 -0
  341. package/dist/domain/testing/require-act-result-capture/index.d.ts +2 -0
  342. package/dist/domain/testing/require-act-result-capture/index.d.ts.map +1 -0
  343. package/dist/domain/testing/require-act-result-capture/index.js +2 -0
  344. package/dist/{testing → domain/testing}/require-act-result-capture/rule.d.ts +1 -0
  345. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -0
  346. package/dist/domain/testing/require-act-result-capture/rule.js +109 -0
  347. package/dist/domain/testing/require-test-companion/index.d.ts +3 -0
  348. package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -0
  349. package/dist/domain/testing/require-test-companion/index.js +3 -0
  350. package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-listeners.d.ts +1 -1
  351. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
  352. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +145 -0
  353. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
  354. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +113 -0
  355. package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-test-helpers.d.ts +1 -1
  356. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
  357. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +184 -0
  358. package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-utilities.d.ts +1 -1
  359. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
  360. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +26 -0
  361. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -0
  362. package/dist/domain/testing/require-test-companion/rule.js +82 -0
  363. package/dist/domain/testing/require-test-companion/types.d.ts.map +1 -0
  364. package/dist/domain/testing/require-test-companion/types.js +2 -0
  365. package/dist/domain/testing/single-act-statement/index.d.ts +2 -0
  366. package/dist/domain/testing/single-act-statement/index.d.ts.map +1 -0
  367. package/dist/domain/testing/single-act-statement/index.js +2 -0
  368. package/dist/{testing → domain/testing}/single-act-statement/rule.d.ts +1 -0
  369. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -0
  370. package/dist/domain/testing/single-act-statement/rule.js +37 -0
  371. package/dist/index.d.ts +4 -5
  372. package/dist/index.d.ts.map +1 -1
  373. package/dist/index.js +3 -6
  374. package/dist/{codeperfect-plugin.d.ts → infrastructure/codeperfect-plugin.d.ts} +2 -0
  375. package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -0
  376. package/dist/infrastructure/codeperfect-plugin.js +30 -0
  377. package/dist/infrastructure/index.d.ts +5 -0
  378. package/dist/infrastructure/index.d.ts.map +1 -0
  379. package/dist/infrastructure/index.js +4 -0
  380. package/dist/infrastructure/presets.d.ts +18 -0
  381. package/dist/infrastructure/presets.d.ts.map +1 -0
  382. package/dist/infrastructure/presets.js +81 -0
  383. package/package.json +67 -32
  384. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +0 -1
  385. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +0 -131
  386. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -48
  387. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +0 -1
  388. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +0 -126
  389. package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
  390. package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -90
  391. package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +0 -1
  392. package/dist/architecture/consistent-barrel-files/exports-only-rule.js +0 -218
  393. package/dist/architecture/consistent-barrel-files/index.d.ts +0 -5
  394. package/dist/architecture/consistent-barrel-files/index.d.ts.map +0 -1
  395. package/dist/architecture/consistent-barrel-files/index.js +0 -4
  396. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +0 -1
  397. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +0 -100
  398. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
  399. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -90
  400. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +0 -1
  401. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +0 -154
  402. package/dist/architecture/consistent-barrel-files/rule.d.ts.map +0 -1
  403. package/dist/architecture/consistent-barrel-files/rule.js +0 -58
  404. package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
  405. package/dist/architecture/consistent-barrel-files/test-helpers.js +0 -229
  406. package/dist/architecture/consistent-barrel-files/types.d.ts +0 -25
  407. package/dist/architecture/consistent-barrel-files/types.d.ts.map +0 -1
  408. package/dist/architecture/consistent-barrel-files/types.js +0 -2
  409. package/dist/architecture/index.d.ts.map +0 -1
  410. package/dist/architecture/index.js +0 -2
  411. package/dist/benchmark-rules.d.ts +0 -83
  412. package/dist/benchmark-rules.d.ts.map +0 -1
  413. package/dist/benchmark-rules.js +0 -175
  414. package/dist/codeperfect-plugin.d.ts.map +0 -1
  415. package/dist/codeperfect-plugin.js +0 -29
  416. package/dist/core/index.d.ts.map +0 -1
  417. package/dist/core/index.js +0 -3
  418. package/dist/core/no-multiple-declarators/index.d.ts +0 -2
  419. package/dist/core/no-multiple-declarators/index.d.ts.map +0 -1
  420. package/dist/core/no-multiple-declarators/index.js +0 -2
  421. package/dist/core/no-multiple-declarators/rule.d.ts.map +0 -1
  422. package/dist/core/no-multiple-declarators/rule.js +0 -100
  423. package/dist/core/prefer-interface-types/index.d.ts +0 -2
  424. package/dist/core/prefer-interface-types/index.d.ts.map +0 -1
  425. package/dist/core/prefer-interface-types/index.js +0 -2
  426. package/dist/core/prefer-interface-types/rule.d.ts.map +0 -1
  427. package/dist/core/prefer-interface-types/rule.js +0 -145
  428. package/dist/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
  429. package/dist/core/prefer-interface-types/test-helpers.js +0 -116
  430. package/dist/custom-rule-documentation.d.ts.map +0 -1
  431. package/dist/custom-rule-documentation.js +0 -35
  432. package/dist/custom-rules.d.ts.map +0 -1
  433. package/dist/custom-rules.js +0 -70
  434. package/dist/docs/index.d.ts +0 -4
  435. package/dist/docs/index.d.ts.map +0 -1
  436. package/dist/docs/index.js +0 -4
  437. package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
  438. package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
  439. package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +0 -1
  440. package/dist/docs/no-interface-member-docs/comment-utilities.js +0 -146
  441. package/dist/docs/no-interface-member-docs/index.d.ts +0 -2
  442. package/dist/docs/no-interface-member-docs/index.d.ts.map +0 -1
  443. package/dist/docs/no-interface-member-docs/index.js +0 -2
  444. package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +0 -1
  445. package/dist/docs/no-interface-member-docs/parameter-tags.js +0 -101
  446. package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +0 -1
  447. package/dist/docs/no-interface-member-docs/parameter-utilities.js +0 -125
  448. package/dist/docs/no-interface-member-docs/rule.d.ts.map +0 -1
  449. package/dist/docs/no-interface-member-docs/rule.js +0 -168
  450. package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
  451. package/dist/docs/no-interface-member-docs/types.d.ts.map +0 -1
  452. package/dist/docs/no-interface-member-docs/types.js +0 -2
  453. package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +0 -1
  454. package/dist/docs/require-example-language/empty-fence-fixes.js +0 -169
  455. package/dist/docs/require-example-language/example-utilities.d.ts.map +0 -1
  456. package/dist/docs/require-example-language/example-utilities.js +0 -76
  457. package/dist/docs/require-example-language/examples.d.ts.map +0 -1
  458. package/dist/docs/require-example-language/examples.js +0 -181
  459. package/dist/docs/require-example-language/fixes.d.ts.map +0 -1
  460. package/dist/docs/require-example-language/fixes.js +0 -182
  461. package/dist/docs/require-example-language/index.d.ts +0 -3
  462. package/dist/docs/require-example-language/index.d.ts.map +0 -1
  463. package/dist/docs/require-example-language/index.js +0 -2
  464. package/dist/docs/require-example-language/reporting.d.ts.map +0 -1
  465. package/dist/docs/require-example-language/reporting.js +0 -145
  466. package/dist/docs/require-example-language/rule.d.ts.map +0 -1
  467. package/dist/docs/require-example-language/rule.js +0 -34
  468. package/dist/docs/require-example-language/types.d.ts.map +0 -1
  469. package/dist/docs/require-example-language/types.js +0 -2
  470. package/dist/docs/single-line-jsdoc/index.d.ts +0 -2
  471. package/dist/docs/single-line-jsdoc/index.d.ts.map +0 -1
  472. package/dist/docs/single-line-jsdoc/index.js +0 -2
  473. package/dist/docs/single-line-jsdoc/rule.d.ts +0 -5
  474. package/dist/docs/single-line-jsdoc/rule.d.ts.map +0 -1
  475. package/dist/docs/single-line-jsdoc/rule.js +0 -196
  476. package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +0 -1
  477. package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +0 -95
  478. package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +0 -1
  479. package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +0 -140
  480. package/dist/docs/test-helpers.d.ts.map +0 -1
  481. package/dist/docs/test-helpers.js +0 -107
  482. package/dist/presets.d.ts +0 -10
  483. package/dist/presets.d.ts.map +0 -1
  484. package/dist/presets.js +0 -50
  485. package/dist/rules/index.d.ts +0 -5
  486. package/dist/rules/index.d.ts.map +0 -1
  487. package/dist/rules/index.js +0 -6
  488. package/dist/testing/aaa/analyzer.d.ts +0 -36
  489. package/dist/testing/aaa/analyzer.d.ts.map +0 -1
  490. package/dist/testing/aaa/analyzer.js +0 -490
  491. package/dist/testing/aaa/index.d.ts.map +0 -1
  492. package/dist/testing/aaa/index.js +0 -2
  493. package/dist/testing/aaa/types.d.ts +0 -31
  494. package/dist/testing/aaa/types.d.ts.map +0 -1
  495. package/dist/testing/aaa/types.js +0 -2
  496. package/dist/testing/assert-actual-expected-names/index.d.ts +0 -2
  497. package/dist/testing/assert-actual-expected-names/index.d.ts.map +0 -1
  498. package/dist/testing/assert-actual-expected-names/index.js +0 -2
  499. package/dist/testing/assert-actual-expected-names/rule.d.ts.map +0 -1
  500. package/dist/testing/assert-actual-expected-names/rule.js +0 -54
  501. package/dist/testing/enforce-aaa-phase-purity/index.d.ts +0 -2
  502. package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +0 -1
  503. package/dist/testing/enforce-aaa-phase-purity/index.js +0 -2
  504. package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
  505. package/dist/testing/enforce-aaa-phase-purity/rule.js +0 -110
  506. package/dist/testing/enforce-aaa-structure/index.d.ts +0 -2
  507. package/dist/testing/enforce-aaa-structure/index.d.ts.map +0 -1
  508. package/dist/testing/enforce-aaa-structure/index.js +0 -2
  509. package/dist/testing/enforce-aaa-structure/rule.d.ts.map +0 -1
  510. package/dist/testing/enforce-aaa-structure/rule.js +0 -48
  511. package/dist/testing/index.d.ts.map +0 -1
  512. package/dist/testing/index.js +0 -9
  513. package/dist/testing/prefer-vi-mocked-import/fix.d.ts +0 -16
  514. package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +0 -1
  515. package/dist/testing/prefer-vi-mocked-import/fix.js +0 -224
  516. package/dist/testing/prefer-vi-mocked-import/index.d.ts +0 -2
  517. package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +0 -1
  518. package/dist/testing/prefer-vi-mocked-import/index.js +0 -2
  519. package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +0 -1
  520. package/dist/testing/prefer-vi-mocked-import/match-bindings.js +0 -52
  521. package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +0 -1
  522. package/dist/testing/prefer-vi-mocked-import/match-declarations.js +0 -99
  523. package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +0 -1
  524. package/dist/testing/prefer-vi-mocked-import/match-helpers.js +0 -102
  525. package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +0 -1
  526. package/dist/testing/prefer-vi-mocked-import/match-imports.js +0 -156
  527. package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +0 -1
  528. package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +0 -119
  529. package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +0 -1
  530. package/dist/testing/prefer-vi-mocked-import/match-walk.js +0 -62
  531. package/dist/testing/prefer-vi-mocked-import/match.d.ts +0 -15
  532. package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +0 -1
  533. package/dist/testing/prefer-vi-mocked-import/match.js +0 -193
  534. package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +0 -1
  535. package/dist/testing/prefer-vi-mocked-import/rule.js +0 -32
  536. package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +0 -1
  537. package/dist/testing/prefer-vi-mocked-import/types.js +0 -2
  538. package/dist/testing/require-aaa-sections/index.d.ts +0 -2
  539. package/dist/testing/require-aaa-sections/index.d.ts.map +0 -1
  540. package/dist/testing/require-aaa-sections/index.js +0 -2
  541. package/dist/testing/require-aaa-sections/rule.d.ts.map +0 -1
  542. package/dist/testing/require-aaa-sections/rule.js +0 -111
  543. package/dist/testing/require-act-result-capture/index.d.ts +0 -2
  544. package/dist/testing/require-act-result-capture/index.d.ts.map +0 -1
  545. package/dist/testing/require-act-result-capture/index.js +0 -2
  546. package/dist/testing/require-act-result-capture/rule.d.ts.map +0 -1
  547. package/dist/testing/require-act-result-capture/rule.js +0 -34
  548. package/dist/testing/require-test-companion/index.d.ts +0 -3
  549. package/dist/testing/require-test-companion/index.d.ts.map +0 -1
  550. package/dist/testing/require-test-companion/index.js +0 -3
  551. package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +0 -1
  552. package/dist/testing/require-test-companion/require-test-companion-listeners.js +0 -145
  553. package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +0 -1
  554. package/dist/testing/require-test-companion/require-test-companion-options.js +0 -112
  555. package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
  556. package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +0 -183
  557. package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
  558. package/dist/testing/require-test-companion/require-test-companion-utilities.js +0 -26
  559. package/dist/testing/require-test-companion/rule.d.ts.map +0 -1
  560. package/dist/testing/require-test-companion/rule.js +0 -57
  561. package/dist/testing/require-test-companion/types.d.ts.map +0 -1
  562. package/dist/testing/require-test-companion/types.js +0 -2
  563. package/dist/testing/single-act-statement/index.d.ts +0 -2
  564. package/dist/testing/single-act-statement/index.d.ts.map +0 -1
  565. package/dist/testing/single-act-statement/index.js +0 -2
  566. package/dist/testing/single-act-statement/rule.d.ts.map +0 -1
  567. package/dist/testing/single-act-statement/rule.js +0 -33
  568. /package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule.d.ts +0 -0
  569. /package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +0 -0
  570. /package/dist/{architecture → domain/architecture}/consistent-barrel-files/rule.d.ts +0 -0
  571. /package/dist/{core → domain/core}/prefer-interface-types/rule.d.ts +0 -0
  572. /package/dist/{core → domain/core}/prefer-interface-types/test-helpers.d.ts +0 -0
  573. /package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -0
  574. /package/dist/{docs → domain/docs}/no-interface-member-docs/rule.d.ts +0 -0
  575. /package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.d.ts +0 -0
  576. /package/dist/{docs → domain/docs}/require-example-language/empty-fence-fixes.d.ts +0 -0
  577. /package/dist/{docs → domain/docs}/require-example-language/example-utilities.d.ts +0 -0
  578. /package/dist/{docs → domain/docs}/require-example-language/rule.d.ts +0 -0
  579. /package/dist/{docs → domain/docs}/require-example-language/types.d.ts +0 -0
  580. /package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-content.d.ts +0 -0
  581. /package/dist/{docs → domain/docs}/test-helpers.d.ts +0 -0
  582. /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-helpers.d.ts +0 -0
  583. /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-walk.d.ts +0 -0
  584. /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/rule.d.ts +0 -0
  585. /package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-options.d.ts +0 -0
  586. /package/dist/{testing → domain/testing}/require-test-companion/rule.d.ts +0 -0
  587. /package/dist/{testing → domain/testing}/require-test-companion/types.d.ts +0 -0
@@ -0,0 +1,27 @@
1
+ import type * as ESTree from "estree";
2
+ /**
3
+ * Visits an ESTree node graph while ignoring cycles.
4
+ * @param node Input node value.
5
+ * @param callback Input callback value.
6
+ * @param seenNodes Input seenNodes value.
7
+ * @example
8
+ * ```typescript
9
+ * visitNode(node, () => {});
10
+ * ```
11
+ */
12
+ declare function visitNode(node: ESTree.Node, callback: (node: ESTree.Node) => boolean | undefined, seenNodes?: WeakSet<object>): void;
13
+ /**
14
+ * Visits child values that may contain nested ESTree nodes.
15
+ * @param value Input value value.
16
+ * @param callback Input callback value.
17
+ * @param seenNodes Input seenNodes value.
18
+ * @example
19
+ * ```typescript
20
+ * visitValue(value, () => {}, new WeakSet<object>());
21
+ * ```
22
+ */
23
+ declare function visitValue(value: unknown, callback: (node: ESTree.Node) => boolean | undefined, seenNodes: WeakSet<object>): void;
24
+ /** Companion marker for test isolation. */
25
+ declare const analyzerSuperHelpersCompanion: true;
26
+ export { analyzerSuperHelpersCompanion, visitNode, visitValue };
27
+ //# sourceMappingURL=analyzer.super.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.super.helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.super.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAyBtC;;;;;;;;;GASG;AACH,iBAAS,SAAS,CAChB,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,GAAG,SAAS,EACpD,SAAS,kBAAwB,GAChC,IAAI,CAeN;AAED;;;;;;;;;GASG;AACH,iBAAS,UAAU,CACjB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,GAAG,SAAS,EACpD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,GACzB,IAAI,CAcN;AAED,2CAA2C;AAC3C,QAAA,MAAM,6BAA6B,EAAG,IAAa,CAAC;AAEpD,OAAO,EAAE,6BAA6B,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Checks whether a value is an ESTree node.
3
+ * @param value The value to test.
4
+ * @returns `true` when value is an ESTree node, `false` otherwise.
5
+ * @example
6
+ * ```typescript
7
+ * isNode({ type: "Identifier" }); // true
8
+ * ```
9
+ */
10
+ function isNode(value) {
11
+ return (typeof value === "object" &&
12
+ value !== null &&
13
+ "type" in value &&
14
+ typeof value.type === "string");
15
+ }
16
+ /**
17
+ * Visits an ESTree node graph while ignoring cycles.
18
+ * @param node Input node value.
19
+ * @param callback Input callback value.
20
+ * @param seenNodes Input seenNodes value.
21
+ * @example
22
+ * ```typescript
23
+ * visitNode(node, () => {});
24
+ * ```
25
+ */
26
+ function visitNode(node, callback, seenNodes = new WeakSet()) {
27
+ if (seenNodes.has(node)) {
28
+ return;
29
+ }
30
+ seenNodes.add(node);
31
+ if (callback(node) === false) {
32
+ return;
33
+ }
34
+ for (const [key, value] of Object.entries(node)) {
35
+ if (key !== "parent") {
36
+ visitValue(value, callback, seenNodes);
37
+ }
38
+ }
39
+ }
40
+ /**
41
+ * Visits child values that may contain nested ESTree nodes.
42
+ * @param value Input value value.
43
+ * @param callback Input callback value.
44
+ * @param seenNodes Input seenNodes value.
45
+ * @example
46
+ * ```typescript
47
+ * visitValue(value, () => {}, new WeakSet<object>());
48
+ * ```
49
+ */
50
+ function visitValue(value, callback, seenNodes) {
51
+ if (Array.isArray(value)) {
52
+ for (const item of value) {
53
+ if (isNode(item)) {
54
+ visitNode(item, callback, seenNodes);
55
+ }
56
+ }
57
+ return;
58
+ }
59
+ if (isNode(value)) {
60
+ visitNode(value, callback, seenNodes);
61
+ }
62
+ }
63
+ /** Companion marker for test isolation. */
64
+ const analyzerSuperHelpersCompanion = true;
65
+ export { analyzerSuperHelpersCompanion, visitNode, visitValue };
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuc3VwZXIuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9hYWEvYW5hbHl6ZXIuc3VwZXIuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsTUFBTSxDQUFDLEtBQWM7SUFDNUIsT0FBTyxDQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsS0FBSyxLQUFLLElBQUk7UUFDZCxNQUFNLElBQUksS0FBSztRQUNmLE9BQ0UsS0FJRCxDQUFDLElBQUksS0FBSyxRQUFRLENBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxTQUFTLENBQ2hCLElBQWlCLEVBQ2pCLFFBQW9ELEVBQ3BELFlBQVksSUFBSSxPQUFPLEVBQVU7SUFFakMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsT0FBTztJQUNULENBQUM7SUFFRCxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzdCLE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoRCxJQUFJLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNyQixVQUFVLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLFVBQVUsQ0FDakIsS0FBYyxFQUNkLFFBQW9ELEVBQ3BELFNBQTBCO0lBRTFCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDakIsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPO0lBQ1QsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEIsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztBQUNILENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSw2QkFBNkIsR0FBRyxJQUFhLENBQUM7QUFFcEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGFuIEVTVHJlZSBub2RlLlxyXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHRlc3QuXHJcbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHZhbHVlIGlzIGFuIEVTVHJlZSBub2RlLCBgZmFsc2VgIG90aGVyd2lzZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc05vZGUoeyB0eXBlOiBcIklkZW50aWZpZXJcIiB9KTsgLy8gdHJ1ZVxyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEVTVHJlZS5Ob2RlIHtcclxuICByZXR1cm4gKFxyXG4gICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXHJcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgXCJ0eXBlXCIgaW4gdmFsdWUgJiZcclxuICAgIHR5cGVvZiAoXHJcbiAgICAgIHZhbHVlIGFzIHtcclxuICAgICAgICAvKiogUG90ZW50aWFsIEVTVHJlZSBub2RlIHR5cGUgZmllbGQuICovXHJcbiAgICAgICAgdHlwZT86IHVua25vd247XHJcbiAgICAgIH1cclxuICAgICkudHlwZSA9PT0gXCJzdHJpbmdcIlxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWaXNpdHMgYW4gRVNUcmVlIG5vZGUgZ3JhcGggd2hpbGUgaWdub3JpbmcgY3ljbGVzLlxyXG4gKiBAcGFyYW0gbm9kZSBJbnB1dCBub2RlIHZhbHVlLlxyXG4gKiBAcGFyYW0gY2FsbGJhY2sgSW5wdXQgY2FsbGJhY2sgdmFsdWUuXHJcbiAqIEBwYXJhbSBzZWVuTm9kZXMgSW5wdXQgc2Vlbk5vZGVzIHZhbHVlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIHZpc2l0Tm9kZShub2RlLCAoKSA9PiB7fSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gdmlzaXROb2RlKFxyXG4gIG5vZGU6IEVTVHJlZS5Ob2RlLFxyXG4gIGNhbGxiYWNrOiAobm9kZTogRVNUcmVlLk5vZGUpID0+IGJvb2xlYW4gfCB1bmRlZmluZWQsXHJcbiAgc2Vlbk5vZGVzID0gbmV3IFdlYWtTZXQ8b2JqZWN0PigpLFxyXG4pOiB2b2lkIHtcclxuICBpZiAoc2Vlbk5vZGVzLmhhcyhub2RlKSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgc2Vlbk5vZGVzLmFkZChub2RlKTtcclxuICBpZiAoY2FsbGJhY2sobm9kZSkgPT09IGZhbHNlKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhub2RlKSkge1xyXG4gICAgaWYgKGtleSAhPT0gXCJwYXJlbnRcIikge1xyXG4gICAgICB2aXNpdFZhbHVlKHZhbHVlLCBjYWxsYmFjaywgc2Vlbk5vZGVzKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWaXNpdHMgY2hpbGQgdmFsdWVzIHRoYXQgbWF5IGNvbnRhaW4gbmVzdGVkIEVTVHJlZSBub2Rlcy5cclxuICogQHBhcmFtIHZhbHVlIElucHV0IHZhbHVlIHZhbHVlLlxyXG4gKiBAcGFyYW0gY2FsbGJhY2sgSW5wdXQgY2FsbGJhY2sgdmFsdWUuXHJcbiAqIEBwYXJhbSBzZWVuTm9kZXMgSW5wdXQgc2Vlbk5vZGVzIHZhbHVlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIHZpc2l0VmFsdWUodmFsdWUsICgpID0+IHt9LCBuZXcgV2Vha1NldDxvYmplY3Q+KCkpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIHZpc2l0VmFsdWUoXHJcbiAgdmFsdWU6IHVua25vd24sXHJcbiAgY2FsbGJhY2s6IChub2RlOiBFU1RyZWUuTm9kZSkgPT4gYm9vbGVhbiB8IHVuZGVmaW5lZCxcclxuICBzZWVuTm9kZXM6IFdlYWtTZXQ8b2JqZWN0PixcclxuKTogdm9pZCB7XHJcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdmFsdWUpIHtcclxuICAgICAgaWYgKGlzTm9kZShpdGVtKSkge1xyXG4gICAgICAgIHZpc2l0Tm9kZShpdGVtLCBjYWxsYmFjaywgc2Vlbk5vZGVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChpc05vZGUodmFsdWUpKSB7XHJcbiAgICB2aXNpdE5vZGUodmFsdWUsIGNhbGxiYWNrLCBzZWVuTm9kZXMpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqIENvbXBhbmlvbiBtYXJrZXIgZm9yIHRlc3QgaXNvbGF0aW9uLiAqL1xyXG5jb25zdCBhbmFseXplclN1cGVySGVscGVyc0NvbXBhbmlvbiA9IHRydWUgYXMgY29uc3Q7XHJcblxyXG5leHBvcnQgeyBhbmFseXplclN1cGVySGVscGVyc0NvbXBhbmlvbiwgdmlzaXROb2RlLCB2aXNpdFZhbHVlIH07XHJcbiJdfQ==
@@ -0,0 +1,211 @@
1
+ import { visitNode as visitNodeImplementation } from "./analyzer.super.helpers.js";
2
+ /**
3
+ * Creates a local forwarding function for an imported analyzer helper.
4
+ * @template TParameters Forwarded parameter tuple.
5
+ * @template TResult Forwarded return type.
6
+ * @param implementation Imported helper implementation.
7
+ * @returns Local function that forwards all arguments to the implementation.
8
+ * @example
9
+ * ```typescript
10
+ * const localHelper = forward(implementation);
11
+ * ```
12
+ */
13
+ function forward(implementation) {
14
+ return (...parameters) => implementation(...parameters);
15
+ }
16
+ /** Visits an ESTree node graph while ignoring cycles. */
17
+ const visitNode = forward(visitNodeImplementation);
18
+ /** Array mutator methods that imply observable state changes. */
19
+ const arrayMutationMethods = new Set([
20
+ "copyWithin",
21
+ "fill",
22
+ "pop",
23
+ "push",
24
+ "reverse",
25
+ "shift",
26
+ "sort",
27
+ "splice",
28
+ "unshift",
29
+ ]);
30
+ /** Names that usually signal Arrange-oriented helper calls. */
31
+ const setupLikeNames = /^(?:arrange|build|create|fixture|get|given|make|mock|parse|seed|setup|spy|stub|write)/u;
32
+ /** Call names that should be treated as utility operations instead of Act steps. */
33
+ const utilityMethodNames = new Set([
34
+ "advanceTimersByTime",
35
+ "clearAllMocks",
36
+ "debug",
37
+ "fn",
38
+ "info",
39
+ "join",
40
+ "log",
41
+ "mockImplementation",
42
+ "mockRejectedValue",
43
+ "mockResolvedValue",
44
+ "mockReturnValue",
45
+ "push",
46
+ "resetAllMocks",
47
+ "resolve",
48
+ "useFakeTimers",
49
+ "warn",
50
+ ]);
51
+ /** Method names that usually behave like void side-effect helpers. */
52
+ const voidLikeMethodNames = new Set([
53
+ "clear",
54
+ "debug",
55
+ "dispatch",
56
+ "emit",
57
+ "flush",
58
+ "info",
59
+ "log",
60
+ "print",
61
+ "publish",
62
+ "reset",
63
+ "set",
64
+ "trigger",
65
+ "warn",
66
+ ]);
67
+ /**
68
+ * Gets an expression name when it can be resolved statically.
69
+ * @param expression Input expression value.
70
+ * @returns Return value output.
71
+ * @example
72
+ * ```typescript
73
+ * getExpressionName(expression);
74
+ * ```
75
+ */
76
+ function getExpressionName(expression) {
77
+ if (expression.type === "Super") {
78
+ return void 0;
79
+ }
80
+ if (expression.type === "Identifier") {
81
+ return expression.name;
82
+ }
83
+ if (expression.type === "MemberExpression" &&
84
+ expression.property.type === "Identifier") {
85
+ return expression.property.name;
86
+ }
87
+ return void 0;
88
+ }
89
+ /**
90
+ * Gets a callee name for a call or construction expression.
91
+ * @param expression Input expression value.
92
+ * @returns Return value output.
93
+ * @example
94
+ * ```typescript
95
+ * getInvokedName(expression);
96
+ * ```
97
+ */
98
+ function getInvokedName(expression) {
99
+ return getExpressionName(expression.callee);
100
+ }
101
+ /**
102
+ * Splits an identifier into lowercase word tokens.
103
+ * @param identifier Input identifier value.
104
+ * @returns Return value output.
105
+ * @example
106
+ * ```typescript
107
+ * getNameWords("scheduleAndFlush");
108
+ * ```
109
+ */
110
+ function getNameWords(identifier) {
111
+ return identifier
112
+ .split(/(?=[A-Z])|[_-]/u)
113
+ .map((segment) => segment.toLowerCase())
114
+ .filter((segment) => segment.length > 0);
115
+ }
116
+ /**
117
+ * Checks whether an expression is callable.
118
+ * @param expression Input expression value.
119
+ * @returns Return value output.
120
+ * @example
121
+ * ```typescript
122
+ * isCallableExpression(expression);
123
+ * ```
124
+ */
125
+ function isCallableExpression(expression) {
126
+ return (expression?.type === "CallExpression" ||
127
+ expression?.type === "NewExpression");
128
+ }
129
+ /**
130
+ * Checks whether a comment has location metadata.
131
+ * @param comment Input comment value.
132
+ * @returns Return value output.
133
+ * @example
134
+ * ```typescript
135
+ * isLocatedComment(comment);
136
+ * ```
137
+ */
138
+ function isLocatedComment(comment) {
139
+ return (comment.loc !== null && comment.loc !== void 0 && comment.range !== void 0);
140
+ }
141
+ /**
142
+ * Checks whether a range is fully contained within another range.
143
+ * @param range Input range value.
144
+ * @param container Input container value.
145
+ * @returns Return value output.
146
+ * @example
147
+ * ```typescript
148
+ * isRangeWithin(range, container);
149
+ * ```
150
+ */
151
+ function isRangeWithin(range, container) {
152
+ return range[0] >= container[0] && range[1] <= container[1];
153
+ }
154
+ /**
155
+ * Checks whether a constructor call should be treated as setup.
156
+ * @param expression Input expression value.
157
+ * @param calleeName Input calleeName value.
158
+ * @returns Return value output.
159
+ * @example
160
+ * ```typescript
161
+ * isUtilityConstructor(expression, "Map");
162
+ * ```
163
+ */
164
+ function isUtilityConstructor(expression, calleeName) {
165
+ return (expression.type === "NewExpression" &&
166
+ (calleeName === "Error" ||
167
+ calleeName === "Map" ||
168
+ calleeName === "Set" ||
169
+ calleeName === "SourceCode" ||
170
+ calleeName === "ESLint"));
171
+ }
172
+ /**
173
+ * Checks whether a callee name looks utility-like.
174
+ * @param calleeName Input calleeName value.
175
+ * @returns Return value output.
176
+ * @example
177
+ * ```typescript
178
+ * isUtilityNamedCall("setupFixture");
179
+ * ```
180
+ */
181
+ function isUtilityNamedCall(calleeName) {
182
+ return utilityMethodNames.has(calleeName) || setupLikeNames.test(calleeName);
183
+ }
184
+ /**
185
+ * Checks whether a call uses a utility namespace.
186
+ * @param expression Input expression value.
187
+ * @returns Return value output.
188
+ * @example
189
+ * ```typescript
190
+ * isUtilityNamespaceCall(expression);
191
+ * ```
192
+ */
193
+ function isUtilityNamespaceCall(expression) {
194
+ return (expression.callee.type === "MemberExpression" &&
195
+ expression.callee.object.type === "Identifier" &&
196
+ ["console", "vi"].includes(expression.callee.object.name));
197
+ }
198
+ /**
199
+ * Checks whether a call name is built from void-like verb tokens.
200
+ * @param calleeName Input calleeName value.
201
+ * @returns Return value output.
202
+ * @example
203
+ * ```typescript
204
+ * isVoidLikeMethodName("scheduleAndFlush");
205
+ * ```
206
+ */
207
+ function isVoidLikeMethodName(calleeName) {
208
+ return getNameWords(calleeName).some((word) => voidLikeMethodNames.has(word));
209
+ }
210
+ export { arrayMutationMethods, getExpressionName, getInvokedName, isCallableExpression, isLocatedComment, isRangeWithin, isUtilityConstructor, isUtilityNamedCall, isUtilityNamespaceCall, isVoidLikeMethodName, setupLikeNames, utilityMethodNames, visitNode, voidLikeMethodNames, };
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuc3VwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL2FuYWx5emVyLnN1cGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxTQUFTLElBQUksdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxPQUFPLENBQ2QsY0FBdUQ7SUFFdkQsT0FBTyxDQUFDLEdBQUcsVUFBVSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQseURBQXlEO0FBQ3pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBRW5ELGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ25DLFlBQVk7SUFDWixNQUFNO0lBQ04sS0FBSztJQUNMLE1BQU07SUFDTixTQUFTO0lBQ1QsT0FBTztJQUNQLE1BQU07SUFDTixRQUFRO0lBQ1IsU0FBUztDQUNWLENBQUMsQ0FBQztBQUVILCtEQUErRDtBQUMvRCxNQUFNLGNBQWMsR0FDbEIsd0ZBQXdGLENBQUM7QUFFM0Ysb0ZBQW9GO0FBQ3BGLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixPQUFPO0lBQ1AsSUFBSTtJQUNKLE1BQU07SUFDTixNQUFNO0lBQ04sS0FBSztJQUNMLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixNQUFNO0lBQ04sZUFBZTtJQUNmLFNBQVM7SUFDVCxlQUFlO0lBQ2YsTUFBTTtDQUNQLENBQUMsQ0FBQztBQUVILHNFQUFzRTtBQUN0RSxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ2xDLE9BQU87SUFDUCxPQUFPO0lBQ1AsVUFBVTtJQUNWLE1BQU07SUFDTixPQUFPO0lBQ1AsTUFBTTtJQUNOLEtBQUs7SUFDTCxPQUFPO0lBQ1AsU0FBUztJQUNULE9BQU87SUFDUCxLQUFLO0lBQ0wsU0FBUztJQUNULE1BQU07Q0FDUCxDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsaUJBQWlCLENBQ3hCLFVBQXVFO0lBRXZFLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDckMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUNFLFVBQVUsQ0FBQyxJQUFJLEtBQUssa0JBQWtCO1FBQ3RDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVksRUFDekMsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxjQUFjLENBQ3JCLFVBQXdEO0lBRXhELE9BQU8saUJBQWlCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsWUFBWSxDQUFDLFVBQWtCO0lBQ3RDLE9BQU8sVUFBVTtTQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztTQUN4QixHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsVUFBeUM7SUFFekMsT0FBTyxDQUNMLFVBQVUsRUFBRSxJQUFJLEtBQUssZ0JBQWdCO1FBQ3JDLFVBQVUsRUFBRSxJQUFJLEtBQUssZUFBZSxDQUNyQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFzQjtJQUM5QyxPQUFPLENBQ0wsT0FBTyxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUMzRSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsYUFBYSxDQUNwQixLQUF1QixFQUN2QixTQUEyQjtJQUUzQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsVUFBd0QsRUFDeEQsVUFBa0I7SUFFbEIsT0FBTyxDQUNMLFVBQVUsQ0FBQyxJQUFJLEtBQUssZUFBZTtRQUNuQyxDQUFDLFVBQVUsS0FBSyxPQUFPO1lBQ3JCLFVBQVUsS0FBSyxLQUFLO1lBQ3BCLFVBQVUsS0FBSyxLQUFLO1lBQ3BCLFVBQVUsS0FBSyxZQUFZO1lBQzNCLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FDM0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsa0JBQWtCLENBQUMsVUFBa0I7SUFDNUMsT0FBTyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHNCQUFzQixDQUM3QixVQUF3RDtJQUV4RCxPQUFPLENBQ0wsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCO1FBQzdDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQzlDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDMUQsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsb0JBQW9CLENBQUMsVUFBa0I7SUFDOUMsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxtQkFBbUIsR0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcclxuXHJcbmltcG9ydCB0eXBlIHsgTG9jYXRlZENvbW1lbnQsIFNvdXJjZUNvbW1lbnQgfSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuaW1wb3J0IHsgdmlzaXROb2RlIGFzIHZpc2l0Tm9kZUltcGxlbWVudGF0aW9uIH0gZnJvbSBcIi4vYW5hbHl6ZXIuc3VwZXIuaGVscGVyc1wiO1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBsb2NhbCBmb3J3YXJkaW5nIGZ1bmN0aW9uIGZvciBhbiBpbXBvcnRlZCBhbmFseXplciBoZWxwZXIuXHJcbiAqIEB0ZW1wbGF0ZSBUUGFyYW1ldGVycyBGb3J3YXJkZWQgcGFyYW1ldGVyIHR1cGxlLlxyXG4gKiBAdGVtcGxhdGUgVFJlc3VsdCBGb3J3YXJkZWQgcmV0dXJuIHR5cGUuXHJcbiAqIEBwYXJhbSBpbXBsZW1lbnRhdGlvbiBJbXBvcnRlZCBoZWxwZXIgaW1wbGVtZW50YXRpb24uXHJcbiAqIEByZXR1cm5zIExvY2FsIGZ1bmN0aW9uIHRoYXQgZm9yd2FyZHMgYWxsIGFyZ3VtZW50cyB0byB0aGUgaW1wbGVtZW50YXRpb24uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgbG9jYWxIZWxwZXIgPSBmb3J3YXJkKGltcGxlbWVudGF0aW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBmb3J3YXJkPFRQYXJhbWV0ZXJzIGV4dGVuZHMgdW5rbm93bltdLCBUUmVzdWx0PihcclxuICBpbXBsZW1lbnRhdGlvbjogKC4uLnBhcmFtZXRlcnM6IFRQYXJhbWV0ZXJzKSA9PiBUUmVzdWx0LFxyXG4pOiAoLi4ucGFyYW1ldGVyczogVFBhcmFtZXRlcnMpID0+IFRSZXN1bHQge1xyXG4gIHJldHVybiAoLi4ucGFyYW1ldGVycykgPT4gaW1wbGVtZW50YXRpb24oLi4ucGFyYW1ldGVycyk7XHJcbn1cclxuXHJcbi8qKiBWaXNpdHMgYW4gRVNUcmVlIG5vZGUgZ3JhcGggd2hpbGUgaWdub3JpbmcgY3ljbGVzLiAqL1xyXG5jb25zdCB2aXNpdE5vZGUgPSBmb3J3YXJkKHZpc2l0Tm9kZUltcGxlbWVudGF0aW9uKTtcclxuXHJcbi8qKiBBcnJheSBtdXRhdG9yIG1ldGhvZHMgdGhhdCBpbXBseSBvYnNlcnZhYmxlIHN0YXRlIGNoYW5nZXMuICovXHJcbmNvbnN0IGFycmF5TXV0YXRpb25NZXRob2RzID0gbmV3IFNldChbXHJcbiAgXCJjb3B5V2l0aGluXCIsXHJcbiAgXCJmaWxsXCIsXHJcbiAgXCJwb3BcIixcclxuICBcInB1c2hcIixcclxuICBcInJldmVyc2VcIixcclxuICBcInNoaWZ0XCIsXHJcbiAgXCJzb3J0XCIsXHJcbiAgXCJzcGxpY2VcIixcclxuICBcInVuc2hpZnRcIixcclxuXSk7XHJcblxyXG4vKiogTmFtZXMgdGhhdCB1c3VhbGx5IHNpZ25hbCBBcnJhbmdlLW9yaWVudGVkIGhlbHBlciBjYWxscy4gKi9cclxuY29uc3Qgc2V0dXBMaWtlTmFtZXMgPVxyXG4gIC9eKD86YXJyYW5nZXxidWlsZHxjcmVhdGV8Zml4dHVyZXxnZXR8Z2l2ZW58bWFrZXxtb2NrfHBhcnNlfHNlZWR8c2V0dXB8c3B5fHN0dWJ8d3JpdGUpL3U7XHJcblxyXG4vKiogQ2FsbCBuYW1lcyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIGFzIHV0aWxpdHkgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFjdCBzdGVwcy4gKi9cclxuY29uc3QgdXRpbGl0eU1ldGhvZE5hbWVzID0gbmV3IFNldChbXHJcbiAgXCJhZHZhbmNlVGltZXJzQnlUaW1lXCIsXHJcbiAgXCJjbGVhckFsbE1vY2tzXCIsXHJcbiAgXCJkZWJ1Z1wiLFxyXG4gIFwiZm5cIixcclxuICBcImluZm9cIixcclxuICBcImpvaW5cIixcclxuICBcImxvZ1wiLFxyXG4gIFwibW9ja0ltcGxlbWVudGF0aW9uXCIsXHJcbiAgXCJtb2NrUmVqZWN0ZWRWYWx1ZVwiLFxyXG4gIFwibW9ja1Jlc29sdmVkVmFsdWVcIixcclxuICBcIm1vY2tSZXR1cm5WYWx1ZVwiLFxyXG4gIFwicHVzaFwiLFxyXG4gIFwicmVzZXRBbGxNb2Nrc1wiLFxyXG4gIFwicmVzb2x2ZVwiLFxyXG4gIFwidXNlRmFrZVRpbWVyc1wiLFxyXG4gIFwid2FyblwiLFxyXG5dKTtcclxuXHJcbi8qKiBNZXRob2QgbmFtZXMgdGhhdCB1c3VhbGx5IGJlaGF2ZSBsaWtlIHZvaWQgc2lkZS1lZmZlY3QgaGVscGVycy4gKi9cclxuY29uc3Qgdm9pZExpa2VNZXRob2ROYW1lcyA9IG5ldyBTZXQoW1xyXG4gIFwiY2xlYXJcIixcclxuICBcImRlYnVnXCIsXHJcbiAgXCJkaXNwYXRjaFwiLFxyXG4gIFwiZW1pdFwiLFxyXG4gIFwiZmx1c2hcIixcclxuICBcImluZm9cIixcclxuICBcImxvZ1wiLFxyXG4gIFwicHJpbnRcIixcclxuICBcInB1Ymxpc2hcIixcclxuICBcInJlc2V0XCIsXHJcbiAgXCJzZXRcIixcclxuICBcInRyaWdnZXJcIixcclxuICBcIndhcm5cIixcclxuXSk7XHJcblxyXG4vKipcclxuICogR2V0cyBhbiBleHByZXNzaW9uIG5hbWUgd2hlbiBpdCBjYW4gYmUgcmVzb2x2ZWQgc3RhdGljYWxseS5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBnZXRFeHByZXNzaW9uTmFtZShleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRFeHByZXNzaW9uTmFtZShcclxuICBleHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiB8IEVTVHJlZS5Qcml2YXRlSWRlbnRpZmllciB8IEVTVHJlZS5TdXBlcixcclxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICBpZiAoZXhwcmVzc2lvbi50eXBlID09PSBcIlN1cGVyXCIpIHtcclxuICAgIHJldHVybiB2b2lkIDA7XHJcbiAgfVxyXG5cclxuICBpZiAoZXhwcmVzc2lvbi50eXBlID09PSBcIklkZW50aWZpZXJcIikge1xyXG4gICAgcmV0dXJuIGV4cHJlc3Npb24ubmFtZTtcclxuICB9XHJcblxyXG4gIGlmIChcclxuICAgIGV4cHJlc3Npb24udHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcclxuICAgIGV4cHJlc3Npb24ucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCJcclxuICApIHtcclxuICAgIHJldHVybiBleHByZXNzaW9uLnByb3BlcnR5Lm5hbWU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdm9pZCAwO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0cyBhIGNhbGxlZSBuYW1lIGZvciBhIGNhbGwgb3IgY29uc3RydWN0aW9uIGV4cHJlc3Npb24uXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIElucHV0IGV4cHJlc3Npb24gdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogZ2V0SW52b2tlZE5hbWUoZXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0SW52b2tlZE5hbWUoXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkNhbGxFeHByZXNzaW9uIHwgRVNUcmVlLk5ld0V4cHJlc3Npb24sXHJcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgcmV0dXJuIGdldEV4cHJlc3Npb25OYW1lKGV4cHJlc3Npb24uY2FsbGVlKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNwbGl0cyBhbiBpZGVudGlmaWVyIGludG8gbG93ZXJjYXNlIHdvcmQgdG9rZW5zLlxyXG4gKiBAcGFyYW0gaWRlbnRpZmllciBJbnB1dCBpZGVudGlmaWVyIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGdldE5hbWVXb3JkcyhcInNjaGVkdWxlQW5kRmx1c2hcIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0TmFtZVdvcmRzKGlkZW50aWZpZXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICByZXR1cm4gaWRlbnRpZmllclxyXG4gICAgLnNwbGl0KC8oPz1bQS1aXSl8W18tXS91KVxyXG4gICAgLm1hcCgoc2VnbWVudCkgPT4gc2VnbWVudC50b0xvd2VyQ2FzZSgpKVxyXG4gICAgLmZpbHRlcigoc2VnbWVudCkgPT4gc2VnbWVudC5sZW5ndGggPiAwKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGV4cHJlc3Npb24gaXMgY2FsbGFibGUuXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIElucHV0IGV4cHJlc3Npb24gdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNDYWxsYWJsZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNDYWxsYWJsZUV4cHJlc3Npb24oXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkV4cHJlc3Npb24gfCB1bmRlZmluZWQsXHJcbik6IGV4cHJlc3Npb24gaXMgRVNUcmVlLkNhbGxFeHByZXNzaW9uIHwgRVNUcmVlLk5ld0V4cHJlc3Npb24ge1xyXG4gIHJldHVybiAoXHJcbiAgICBleHByZXNzaW9uPy50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgfHxcclxuICAgIGV4cHJlc3Npb24/LnR5cGUgPT09IFwiTmV3RXhwcmVzc2lvblwiXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGEgY29tbWVudCBoYXMgbG9jYXRpb24gbWV0YWRhdGEuXHJcbiAqIEBwYXJhbSBjb21tZW50IElucHV0IGNvbW1lbnQgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNMb2NhdGVkQ29tbWVudChjb21tZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0xvY2F0ZWRDb21tZW50KGNvbW1lbnQ6IFNvdXJjZUNvbW1lbnQpOiBjb21tZW50IGlzIExvY2F0ZWRDb21tZW50IHtcclxuICByZXR1cm4gKFxyXG4gICAgY29tbWVudC5sb2MgIT09IG51bGwgJiYgY29tbWVudC5sb2MgIT09IHZvaWQgMCAmJiBjb21tZW50LnJhbmdlICE9PSB2b2lkIDBcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSByYW5nZSBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIGFub3RoZXIgcmFuZ2UuXHJcbiAqIEBwYXJhbSByYW5nZSBJbnB1dCByYW5nZSB2YWx1ZS5cclxuICogQHBhcmFtIGNvbnRhaW5lciBJbnB1dCBjb250YWluZXIgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNSYW5nZVdpdGhpbihyYW5nZSwgY29udGFpbmVyKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1JhbmdlV2l0aGluKFxyXG4gIHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdLFxyXG4gIGNvbnRhaW5lcjogW251bWJlciwgbnVtYmVyXSxcclxuKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHJhbmdlWzBdID49IGNvbnRhaW5lclswXSAmJiByYW5nZVsxXSA8PSBjb250YWluZXJbMV07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIGNvbnN0cnVjdG9yIGNhbGwgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgc2V0dXAuXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIElucHV0IGV4cHJlc3Npb24gdmFsdWUuXHJcbiAqIEBwYXJhbSBjYWxsZWVOYW1lIElucHV0IGNhbGxlZU5hbWUgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNVdGlsaXR5Q29uc3RydWN0b3IoZXhwcmVzc2lvbiwgXCJNYXBcIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNVdGlsaXR5Q29uc3RydWN0b3IoXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkNhbGxFeHByZXNzaW9uIHwgRVNUcmVlLk5ld0V4cHJlc3Npb24sXHJcbiAgY2FsbGVlTmFtZTogc3RyaW5nLFxyXG4pOiBib29sZWFuIHtcclxuICByZXR1cm4gKFxyXG4gICAgZXhwcmVzc2lvbi50eXBlID09PSBcIk5ld0V4cHJlc3Npb25cIiAmJlxyXG4gICAgKGNhbGxlZU5hbWUgPT09IFwiRXJyb3JcIiB8fFxyXG4gICAgICBjYWxsZWVOYW1lID09PSBcIk1hcFwiIHx8XHJcbiAgICAgIGNhbGxlZU5hbWUgPT09IFwiU2V0XCIgfHxcclxuICAgICAgY2FsbGVlTmFtZSA9PT0gXCJTb3VyY2VDb2RlXCIgfHxcclxuICAgICAgY2FsbGVlTmFtZSA9PT0gXCJFU0xpbnRcIilcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSBjYWxsZWUgbmFtZSBsb29rcyB1dGlsaXR5LWxpa2UuXHJcbiAqIEBwYXJhbSBjYWxsZWVOYW1lIElucHV0IGNhbGxlZU5hbWUgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNVdGlsaXR5TmFtZWRDYWxsKFwic2V0dXBGaXh0dXJlXCIpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzVXRpbGl0eU5hbWVkQ2FsbChjYWxsZWVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICByZXR1cm4gdXRpbGl0eU1ldGhvZE5hbWVzLmhhcyhjYWxsZWVOYW1lKSB8fCBzZXR1cExpa2VOYW1lcy50ZXN0KGNhbGxlZU5hbWUpO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSBjYWxsIHVzZXMgYSB1dGlsaXR5IG5hbWVzcGFjZS5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc1V0aWxpdHlOYW1lc3BhY2VDYWxsKGV4cHJlc3Npb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzVXRpbGl0eU5hbWVzcGFjZUNhbGwoXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkNhbGxFeHByZXNzaW9uIHwgRVNUcmVlLk5ld0V4cHJlc3Npb24sXHJcbik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAoXHJcbiAgICBleHByZXNzaW9uLmNhbGxlZS50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiAmJlxyXG4gICAgZXhwcmVzc2lvbi5jYWxsZWUub2JqZWN0LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXHJcbiAgICBbXCJjb25zb2xlXCIsIFwidmlcIl0uaW5jbHVkZXMoZXhwcmVzc2lvbi5jYWxsZWUub2JqZWN0Lm5hbWUpXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGEgY2FsbCBuYW1lIGlzIGJ1aWx0IGZyb20gdm9pZC1saWtlIHZlcmIgdG9rZW5zLlxyXG4gKiBAcGFyYW0gY2FsbGVlTmFtZSBJbnB1dCBjYWxsZWVOYW1lIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzVm9pZExpa2VNZXRob2ROYW1lKFwic2NoZWR1bGVBbmRGbHVzaFwiKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1ZvaWRMaWtlTWV0aG9kTmFtZShjYWxsZWVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICByZXR1cm4gZ2V0TmFtZVdvcmRzKGNhbGxlZU5hbWUpLnNvbWUoKHdvcmQpID0+IHZvaWRMaWtlTWV0aG9kTmFtZXMuaGFzKHdvcmQpKTtcclxufVxyXG5cclxuZXhwb3J0IHtcclxuICBhcnJheU11dGF0aW9uTWV0aG9kcyxcclxuICBnZXRFeHByZXNzaW9uTmFtZSxcclxuICBnZXRJbnZva2VkTmFtZSxcclxuICBpc0NhbGxhYmxlRXhwcmVzc2lvbixcclxuICBpc0xvY2F0ZWRDb21tZW50LFxyXG4gIGlzUmFuZ2VXaXRoaW4sXHJcbiAgaXNVdGlsaXR5Q29uc3RydWN0b3IsXHJcbiAgaXNVdGlsaXR5TmFtZWRDYWxsLFxyXG4gIGlzVXRpbGl0eU5hbWVzcGFjZUNhbGwsXHJcbiAgaXNWb2lkTGlrZU1ldGhvZE5hbWUsXHJcbiAgc2V0dXBMaWtlTmFtZXMsXHJcbiAgdXRpbGl0eU1ldGhvZE5hbWVzLFxyXG4gIHZpc2l0Tm9kZSxcclxuICB2b2lkTGlrZU1ldGhvZE5hbWVzLFxyXG59O1xyXG4iXX0=
@@ -1,3 +1,3 @@
1
- export { aaaPhaseOrder, analyzeTestBlock, countActStatements, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getFlattenedSections, getIndentationAtOffset, getLineStartRange, getPhaseBoundaryComments, getSectionPhases, hasAssertion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, isValidAssertStatement, usesPrefix, } from "./analyzer";
2
- export type { AaaPhase, LocatedComment, LocatedNode, SectionComment, SourceComment, StatementPhase, TestBlockAnalysis, } from "./types";
1
+ export { aaaPhaseOrder, analyzeTestBlock, countActStatements, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getFlattenedSections, getIndentationAtOffset, getLineStartRange, getPhaseBoundaryComments, getSectionPhases, hasAssertion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, isValidAssertStatement, usesPrefix, } from "./analyzer.js";
2
+ export type { AaaPhase, LocatedComment, LocatedNode, SectionComment, SourceComment, StatementPhase, TestBlockAnalysis, } from "./types.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,EAC5B,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,yBAAyB,EACzB,sBAAsB,EACtB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,QAAQ,EACR,cAAc,EACd,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { aaaPhaseOrder, analyzeTestBlock, countActStatements, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getFlattenedSections, getIndentationAtOffset, getLineStartRange, getPhaseBoundaryComments, getSectionPhases, hasAssertion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, isValidAssertStatement, usesPrefix, } from "./analyzer.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGFBQWEsRUFDYixRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixXQUFXLEVBQ1gsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsVUFBVSxHQUNYLE1BQU0sWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgYWFhUGhhc2VPcmRlcixcbiAgYW5hbHl6ZVRlc3RCbG9jayxcbiAgY291bnRBY3RTdGF0ZW1lbnRzLFxuICBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzLFxuICBnZXRBc3NlcnRpb25JZGVudGlmaWVycyxcbiAgZ2V0RmxhdHRlbmVkU2VjdGlvbnMsXG4gIGdldEluZGVudGF0aW9uQXRPZmZzZXQsXG4gIGdldExpbmVTdGFydFJhbmdlLFxuICBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHMsXG4gIGdldFNlY3Rpb25QaGFzZXMsXG4gIGhhc0Fzc2VydGlvbixcbiAgaGFzQXN5bmNMb2dpYyxcbiAgaGFzQXdhaXQsXG4gIGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQsXG4gIGhhc0NhcHR1cmFibGVBY3RSZXN1bHQsXG4gIGhhc011dGF0aW9uLFxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQsXG4gIGlzU2V0dXBMaWtlU3RhdGVtZW50LFxuICBpc1ZhbGlkQXNzZXJ0U3RhdGVtZW50LFxuICB1c2VzUHJlZml4LFxufSBmcm9tIFwiLi9hbmFseXplclwiO1xuZXhwb3J0IHR5cGUge1xuICBBYWFQaGFzZSxcbiAgTG9jYXRlZENvbW1lbnQsXG4gIExvY2F0ZWROb2RlLFxuICBTZWN0aW9uQ29tbWVudCxcbiAgU291cmNlQ29tbWVudCxcbiAgU3RhdGVtZW50UGhhc2UsXG4gIFRlc3RCbG9ja0FuYWx5c2lzLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuIl19
@@ -0,0 +1,58 @@
1
+ import type { Rule } from "eslint";
2
+ import type * as ESTree from "estree";
3
+ /** Named AAA phases recognized by the analyzer. */
4
+ type AaaPhase = "Act" | "Arrange" | "Assert";
5
+ /** Source comment with guaranteed location and range metadata. */
6
+ type LocatedComment = SourceComment & {
7
+ /** Normalized location for the comment. */
8
+ loc: NonNullable<SourceComment["loc"]>;
9
+ /** Inclusive source range for the comment. */
10
+ range: [number, number];
11
+ };
12
+ /**
13
+ * ESTree node with required location and range metadata.
14
+ * @template TNode Node subtype carried by the wrapper.
15
+ */
16
+ type LocatedNode<TNode extends ESTree.Node = ESTree.Node> = TNode & {
17
+ /** Normalized location for the node. */
18
+ loc: NonNullable<ESTree.Node["loc"]>;
19
+ /** Inclusive source range for the node. */
20
+ range: [number, number];
21
+ };
22
+ /** Section comment and the AAA phases it declares. */
23
+ interface SectionComment {
24
+ /** Located line comment used as the section marker. */
25
+ comment: LocatedComment;
26
+ /** Phases declared by the section marker. */
27
+ phases: AaaPhase[];
28
+ }
29
+ /** Raw source comment nodes returned by ESLint. */
30
+ type SourceComment = ReturnType<Rule.RuleContext["sourceCode"]["getAllComments"]>[number];
31
+ /** Statement annotated with its active AAA phases. */
32
+ interface StatementPhase {
33
+ /** Statement node that belongs to the analyzed test body. */
34
+ node: LocatedNode<ESTree.Statement>;
35
+ /** Last active phase before this statement, when any exists. */
36
+ phase: AaaPhase | undefined;
37
+ /** All active phases inherited from the nearest section marker. */
38
+ phases: AaaPhase[];
39
+ }
40
+ /** Derived metadata for a supported test callback. */
41
+ interface TestBlockAnalysis {
42
+ /** Block body belonging to the test callback. */
43
+ body: LocatedNode<ESTree.BlockStatement>;
44
+ /** Number of lines inside the callback body. */
45
+ bodyLineCount: number;
46
+ /** Original call expression for `it` or `test`. */
47
+ callExpression: LocatedNode<ESTree.CallExpression>;
48
+ /** Newline style used by the source text. */
49
+ newline: "\n" | "\r\n";
50
+ /** Ordered AAA section comments within the callback body. */
51
+ sectionComments: SectionComment[];
52
+ /** Full source text for the analyzed file. */
53
+ sourceText: string;
54
+ /** Statements paired with their resolved AAA phases. */
55
+ statements: StatementPhase[];
56
+ }
57
+ export type { AaaPhase, LocatedComment, LocatedNode, SectionComment, SourceComment, StatementPhase, TestBlockAnalysis, };
58
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,mDAAmD;AACnD,KAAK,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7C,kEAAkE;AAClE,KAAK,cAAc,GAAG,aAAa,GAAG;IACpC,2CAA2C;IAC3C,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvC,8CAA8C;IAC9C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,KAAK,WAAW,CAAC,KAAK,SAAS,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG;IAClE,wCAAwC;IACxC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAErC,2CAA2C;IAC3C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB,CAAC;AAEF,sDAAsD;AACtD,UAAU,cAAc;IACtB,uDAAuD;IACvD,OAAO,EAAE,cAAc,CAAC;IAExB,6CAA6C;IAC7C,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,mDAAmD;AACnD,KAAK,aAAa,GAAG,UAAU,CAC7B,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,CACjD,CAAC,MAAM,CAAC,CAAC;AAEV,sDAAsD;AACtD,UAAU,cAAc;IACtB,6DAA6D;IAC7D,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEpC,gEAAgE;IAChE,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IAE5B,mEAAmE;IACnE,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,sDAAsD;AACtD,UAAU,iBAAiB;IACzB,iDAAiD;IACjD,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAEzC,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IAEtB,mDAAmD;IACnD,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAEnD,6CAA6C;IAC7C,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC;IAEvB,6DAA6D;IAC7D,eAAe,EAAE,cAAc,EAAE,CAAC;IAElC,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,YAAY,EACV,QAAQ,EACR,cAAc,EACd,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XG5cbi8qKiBOYW1lZCBBQUEgcGhhc2VzIHJlY29nbml6ZWQgYnkgdGhlIGFuYWx5emVyLiAqL1xudHlwZSBBYWFQaGFzZSA9IFwiQWN0XCIgfCBcIkFycmFuZ2VcIiB8IFwiQXNzZXJ0XCI7XG5cbi8qKiBTb3VyY2UgY29tbWVudCB3aXRoIGd1YXJhbnRlZWQgbG9jYXRpb24gYW5kIHJhbmdlIG1ldGFkYXRhLiAqL1xudHlwZSBMb2NhdGVkQ29tbWVudCA9IFNvdXJjZUNvbW1lbnQgJiB7XG4gIC8qKiBOb3JtYWxpemVkIGxvY2F0aW9uIGZvciB0aGUgY29tbWVudC4gKi9cbiAgbG9jOiBOb25OdWxsYWJsZTxTb3VyY2VDb21tZW50W1wibG9jXCJdPjtcblxuICAvKiogSW5jbHVzaXZlIHNvdXJjZSByYW5nZSBmb3IgdGhlIGNvbW1lbnQuICovXG4gIHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xufTtcblxuLyoqXG4gKiBFU1RyZWUgbm9kZSB3aXRoIHJlcXVpcmVkIGxvY2F0aW9uIGFuZCByYW5nZSBtZXRhZGF0YS5cbiAqIEB0ZW1wbGF0ZSBUTm9kZSBOb2RlIHN1YnR5cGUgY2FycmllZCBieSB0aGUgd3JhcHBlci5cbiAqL1xudHlwZSBMb2NhdGVkTm9kZTxUTm9kZSBleHRlbmRzIEVTVHJlZS5Ob2RlID0gRVNUcmVlLk5vZGU+ID0gVE5vZGUgJiB7XG4gIC8qKiBOb3JtYWxpemVkIGxvY2F0aW9uIGZvciB0aGUgbm9kZS4gKi9cbiAgbG9jOiBOb25OdWxsYWJsZTxFU1RyZWUuTm9kZVtcImxvY1wiXT47XG5cbiAgLyoqIEluY2x1c2l2ZSBzb3VyY2UgcmFuZ2UgZm9yIHRoZSBub2RlLiAqL1xuICByYW5nZTogW251bWJlciwgbnVtYmVyXTtcbn07XG5cbi8qKiBTZWN0aW9uIGNvbW1lbnQgYW5kIHRoZSBBQUEgcGhhc2VzIGl0IGRlY2xhcmVzLiAqL1xuaW50ZXJmYWNlIFNlY3Rpb25Db21tZW50IHtcbiAgLyoqIExvY2F0ZWQgbGluZSBjb21tZW50IHVzZWQgYXMgdGhlIHNlY3Rpb24gbWFya2VyLiAqL1xuICBjb21tZW50OiBMb2NhdGVkQ29tbWVudDtcblxuICAvKiogUGhhc2VzIGRlY2xhcmVkIGJ5IHRoZSBzZWN0aW9uIG1hcmtlci4gKi9cbiAgcGhhc2VzOiBBYWFQaGFzZVtdO1xufVxuXG4vKiogUmF3IHNvdXJjZSBjb21tZW50IG5vZGVzIHJldHVybmVkIGJ5IEVTTGludC4gKi9cbnR5cGUgU291cmNlQ29tbWVudCA9IFJldHVyblR5cGU8XG4gIFJ1bGUuUnVsZUNvbnRleHRbXCJzb3VyY2VDb2RlXCJdW1wiZ2V0QWxsQ29tbWVudHNcIl1cbj5bbnVtYmVyXTtcblxuLyoqIFN0YXRlbWVudCBhbm5vdGF0ZWQgd2l0aCBpdHMgYWN0aXZlIEFBQSBwaGFzZXMuICovXG5pbnRlcmZhY2UgU3RhdGVtZW50UGhhc2Uge1xuICAvKiogU3RhdGVtZW50IG5vZGUgdGhhdCBiZWxvbmdzIHRvIHRoZSBhbmFseXplZCB0ZXN0IGJvZHkuICovXG4gIG5vZGU6IExvY2F0ZWROb2RlPEVTVHJlZS5TdGF0ZW1lbnQ+O1xuXG4gIC8qKiBMYXN0IGFjdGl2ZSBwaGFzZSBiZWZvcmUgdGhpcyBzdGF0ZW1lbnQsIHdoZW4gYW55IGV4aXN0cy4gKi9cbiAgcGhhc2U6IEFhYVBoYXNlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBBbGwgYWN0aXZlIHBoYXNlcyBpbmhlcml0ZWQgZnJvbSB0aGUgbmVhcmVzdCBzZWN0aW9uIG1hcmtlci4gKi9cbiAgcGhhc2VzOiBBYWFQaGFzZVtdO1xufVxuXG4vKiogRGVyaXZlZCBtZXRhZGF0YSBmb3IgYSBzdXBwb3J0ZWQgdGVzdCBjYWxsYmFjay4gKi9cbmludGVyZmFjZSBUZXN0QmxvY2tBbmFseXNpcyB7XG4gIC8qKiBCbG9jayBib2R5IGJlbG9uZ2luZyB0byB0aGUgdGVzdCBjYWxsYmFjay4gKi9cbiAgYm9keTogTG9jYXRlZE5vZGU8RVNUcmVlLkJsb2NrU3RhdGVtZW50PjtcblxuICAvKiogTnVtYmVyIG9mIGxpbmVzIGluc2lkZSB0aGUgY2FsbGJhY2sgYm9keS4gKi9cbiAgYm9keUxpbmVDb3VudDogbnVtYmVyO1xuXG4gIC8qKiBPcmlnaW5hbCBjYWxsIGV4cHJlc3Npb24gZm9yIGBpdGAgb3IgYHRlc3RgLiAqL1xuICBjYWxsRXhwcmVzc2lvbjogTG9jYXRlZE5vZGU8RVNUcmVlLkNhbGxFeHByZXNzaW9uPjtcblxuICAvKiogTmV3bGluZSBzdHlsZSB1c2VkIGJ5IHRoZSBzb3VyY2UgdGV4dC4gKi9cbiAgbmV3bGluZTogXCJcXG5cIiB8IFwiXFxyXFxuXCI7XG5cbiAgLyoqIE9yZGVyZWQgQUFBIHNlY3Rpb24gY29tbWVudHMgd2l0aGluIHRoZSBjYWxsYmFjayBib2R5LiAqL1xuICBzZWN0aW9uQ29tbWVudHM6IFNlY3Rpb25Db21tZW50W107XG5cbiAgLyoqIEZ1bGwgc291cmNlIHRleHQgZm9yIHRoZSBhbmFseXplZCBmaWxlLiAqL1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG5cbiAgLyoqIFN0YXRlbWVudHMgcGFpcmVkIHdpdGggdGhlaXIgcmVzb2x2ZWQgQUFBIHBoYXNlcy4gKi9cbiAgc3RhdGVtZW50czogU3RhdGVtZW50UGhhc2VbXTtcbn1cblxuZXhwb3J0IHR5cGUge1xuICBBYWFQaGFzZSxcbiAgTG9jYXRlZENvbW1lbnQsXG4gIExvY2F0ZWROb2RlLFxuICBTZWN0aW9uQ29tbWVudCxcbiAgU291cmNlQ29tbWVudCxcbiAgU3RhdGVtZW50UGhhc2UsXG4gIFRlc3RCbG9ja0FuYWx5c2lzLFxufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { assertActualExpectedNamesRule } from "./rule.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/assert-actual-expected-names/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { assertActualExpectedNamesRule } from "./rule.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYXNzZXJ0LWFjdHVhbC1leHBlY3RlZC1uYW1lcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBhc3NlcnRBY3R1YWxFeHBlY3RlZE5hbWVzUnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import type { Rule } from "eslint";
2
+ /** Enforces actual/expected-style prefixes for assert-phase comparison variables. */
2
3
  declare const assertActualExpectedNamesRule: Rule.RuleModule;
3
4
  export { assertActualExpectedNamesRule };
4
5
  //# sourceMappingURL=rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/assert-actual-expected-names/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAqInC,qFAAqF;AACrF,QAAA,MAAM,6BAA6B,EAAE,IAAI,CAAC,UA0CzC,CAAC;AAEF,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { analyzeTestBlock, getAssertDeclaredIdentifiers, getAssertionIdentifiers, hasAssertion, usesPrefix, } from "../aaa/index.js";
2
+ /**
3
+ * Builds the de-duplication key for a reported assertion identifier.
4
+ * @param prefix Prefix used for the assertion identifier.
5
+ * @param name Identifier name reported by the rule.
6
+ * @returns Stable de-duplication key for the identifier.
7
+ * @example
8
+ * ```typescript
9
+ * const key = getReportedNameKey("actual", "value");
10
+ * ```
11
+ */
12
+ const getReportedNameKey = (prefix, name) => `${prefix}:${name}`;
13
+ /**
14
+ * Reports a missing assertion prefix when the declared identifier is eligible.
15
+ * @param input Composite reporting input for one identifier.
16
+ * @example
17
+ * ```typescript
18
+ * reportAssertionIdentifier({
19
+ * context: {} as Rule.RuleContext,
20
+ * declaredIdentifiers: new Map(),
21
+ * name: "value",
22
+ * prefix: "actual",
23
+ * reportedNames: new Set(),
24
+ * });
25
+ * ```
26
+ */
27
+ const reportAssertionIdentifier = (input) => {
28
+ const { context, declaredIdentifiers, name, prefix, reportedNames } = input;
29
+ const declaredIdentifier = name === void 0 || usesPrefix(name, prefix)
30
+ ? void 0
31
+ : declaredIdentifiers.get(name);
32
+ if (declaredIdentifier === void 0 || name === void 0) {
33
+ return;
34
+ }
35
+ const reportedNameKey = getReportedNameKey(prefix, name);
36
+ if (reportedNames.has(reportedNameKey)) {
37
+ return;
38
+ }
39
+ reportedNames.add(reportedNameKey);
40
+ context.report({
41
+ data: { name, prefix },
42
+ messageId: "missingPrefix",
43
+ node: declaredIdentifier,
44
+ });
45
+ };
46
+ /**
47
+ * Reports missing prefixes for the actual and expected identifiers in one assertion.
48
+ * @param input Composite reporting input for one assertion.
49
+ * @example
50
+ * ```typescript
51
+ * reportAssertionPrefixes({
52
+ * assertionNode: {} as ESTree.Statement,
53
+ * context: {} as Rule.RuleContext,
54
+ * declaredIdentifiers: new Map(),
55
+ * reportedNames: new Set(),
56
+ * });
57
+ * ```
58
+ */
59
+ const reportAssertionPrefixes = (input) => {
60
+ const { assertionNode, context, declaredIdentifiers, reportedNames } = input;
61
+ const { actual, expected } = getAssertionIdentifiers(assertionNode);
62
+ reportAssertionIdentifier({
63
+ context,
64
+ declaredIdentifiers,
65
+ name: actual,
66
+ prefix: "actual",
67
+ reportedNames,
68
+ });
69
+ reportAssertionIdentifier({
70
+ context,
71
+ declaredIdentifiers,
72
+ name: expected,
73
+ prefix: "expected",
74
+ reportedNames,
75
+ });
76
+ };
77
+ /** Enforces actual/expected-style prefixes for assert-phase comparison variables. */
78
+ const assertActualExpectedNamesRule = {
79
+ create(context) {
80
+ return {
81
+ CallExpression(node) {
82
+ const analysis = analyzeTestBlock(context, node);
83
+ if (analysis === void 0) {
84
+ return;
85
+ }
86
+ const declaredIdentifiers = getAssertDeclaredIdentifiers(analysis);
87
+ const reportedNames = new Set();
88
+ for (const statement of analysis.statements) {
89
+ if (statement.phases.includes("Assert") &&
90
+ hasAssertion(statement.node)) {
91
+ reportAssertionPrefixes({
92
+ assertionNode: statement.node,
93
+ context,
94
+ declaredIdentifiers,
95
+ reportedNames,
96
+ });
97
+ }
98
+ }
99
+ },
100
+ };
101
+ },
102
+ meta: {
103
+ docs: {
104
+ description: "Require Assert-phase comparison variables to use actual*/expected* prefixes.",
105
+ recommended: false,
106
+ url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/assert-actual-expected-names.md",
107
+ },
108
+ messages: {
109
+ missingPrefix: "Rename '{{name}}' to use the '{{prefix}}' prefix when comparing values inside // Assert.",
110
+ },
111
+ schema: [],
112
+ type: "suggestion",
113
+ },
114
+ };
115
+ export { assertActualExpectedNamesRule };
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9hc3NlcnQtYWN0dWFsLWV4cGVjdGVkLW5hbWVzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUNMLGdCQUFnQixFQUNoQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDWixVQUFVLEdBQ1gsTUFBTSxRQUFRLENBQUM7QUFzQ2hCOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUF1QixFQUFFLElBQVksRUFBVSxFQUFFLENBQzNFLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO0FBRXRCOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLHlCQUF5QixHQUFHLENBQ2hDLEtBQXFDLEVBQy9CLEVBQUU7SUFDUixNQUFNLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTVFLE1BQU0sa0JBQWtCLEdBQ3RCLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUN6QyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxJQUFJLGtCQUFrQixLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JELE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE9BQU87SUFDVCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2IsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtRQUN0QixTQUFTLEVBQUUsZUFBZTtRQUMxQixJQUFJLEVBQUUsa0JBQWtCO0tBQ3pCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFtQyxFQUFRLEVBQUU7SUFDNUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzdFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFcEUseUJBQXlCLENBQUM7UUFDeEIsT0FBTztRQUNQLG1CQUFtQjtRQUNuQixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLGFBQWE7S0FDZCxDQUFDLENBQUM7SUFDSCx5QkFBeUIsQ0FBQztRQUN4QixPQUFPO1FBQ1AsbUJBQW1CO1FBQ25CLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsYUFBYTtLQUNkLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLHFGQUFxRjtBQUNyRixNQUFNLDZCQUE2QixHQUFvQjtJQUNyRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTztZQUNMLGNBQWMsQ0FBQyxJQUFJO2dCQUNqQixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELElBQUksUUFBUSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3hCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLG1CQUFtQixHQUFHLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO2dCQUV4QyxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDNUMsSUFDRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7d0JBQ25DLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQzVCLENBQUM7d0JBQ0QsdUJBQXVCLENBQUM7NEJBQ3RCLGFBQWEsRUFBRSxTQUFTLENBQUMsSUFBSTs0QkFDN0IsT0FBTzs0QkFDUCxtQkFBbUI7NEJBQ25CLGFBQWE7eUJBQ2QsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7U0FDMEIsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUNULDhFQUE4RTtZQUNoRixXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUsK0ZBQStGO1NBQ3JHO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsYUFBYSxFQUNYLDBGQUEwRjtTQUM3RjtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFlBQVk7S0FDbkI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XG5cbmltcG9ydCB7XG4gIGFuYWx5emVUZXN0QmxvY2ssXG4gIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMsXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzLFxuICBoYXNBc3NlcnRpb24sXG4gIHVzZXNQcmVmaXgsXG59IGZyb20gXCIuLi9hYWFcIjtcblxuLyoqIFN1cHBvcnRlZCBhc3NlcnRpb24gdmFyaWFibGUgcHJlZml4ZXMgZW5mb3JjZWQgYnkgdGhpcyBydWxlLiAqL1xudHlwZSBBc3NlcnRpb25QcmVmaXggPSBcImFjdHVhbFwiIHwgXCJleHBlY3RlZFwiO1xuXG4vKiogQ29tcG9zaXRlIGlucHV0IGZvciByZXBvcnRpbmcgb25lIG1pc3NpbmcgYXNzZXJ0aW9uIHByZWZpeC4gKi9cbmludGVyZmFjZSBSZXBvcnRBc3NlcnRpb25JZGVudGlmaWVySW5wdXQge1xuICAvKiogQWN0aXZlIEVTTGludCBydWxlIGNvbnRleHQuICovXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQ7XG5cbiAgLyoqIERlY2xhcmVkIGlkZW50aWZpZXJzIGNvbGxlY3RlZCBmcm9tIHRoZSBhc3NlcnQgcGhhc2UuICovXG4gIGRlY2xhcmVkSWRlbnRpZmllcnM6IFJldHVyblR5cGU8dHlwZW9mIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnM+O1xuXG4gIC8qKiBJZGVudGlmaWVyIG5hbWUgZXh0cmFjdGVkIGZyb20gdGhlIGFzc2VydGlvbi4gKi9cbiAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBSZXF1aXJlZCBwcmVmaXggZm9yIHRoZSBpZGVudGlmaWVyLiAqL1xuICBwcmVmaXg6IEFzc2VydGlvblByZWZpeDtcblxuICAvKiogU2V0IG9mIGFscmVhZHkgcmVwb3J0ZWQgaWRlbnRpZmllciBrZXlzLiAqL1xuICByZXBvcnRlZE5hbWVzOiBTZXQ8c3RyaW5nPjtcbn1cblxuLyoqIENvbXBvc2l0ZSBpbnB1dCBmb3IgcmVwb3J0aW5nIG1pc3NpbmcgcHJlZml4ZXMgaW4gb25lIGFzc2VydGlvbi4gKi9cbmludGVyZmFjZSBSZXBvcnRBc3NlcnRpb25QcmVmaXhlc0lucHV0IHtcbiAgLyoqIEFzc2VydGlvbiBub2RlIHdob3NlIGlkZW50aWZpZXJzIHNob3VsZCBiZSBpbnNwZWN0ZWQuICovXG4gIGFzc2VydGlvbk5vZGU6IEVTVHJlZS5TdGF0ZW1lbnQ7XG5cbiAgLyoqIEFjdGl2ZSBFU0xpbnQgcnVsZSBjb250ZXh0LiAqL1xuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0O1xuXG4gIC8qKiBEZWNsYXJlZCBpZGVudGlmaWVycyBjb2xsZWN0ZWQgZnJvbSB0aGUgYXNzZXJ0IHBoYXNlLiAqL1xuICBkZWNsYXJlZElkZW50aWZpZXJzOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzPjtcblxuICAvKiogU2V0IG9mIGFscmVhZHkgcmVwb3J0ZWQgaWRlbnRpZmllciBrZXlzLiAqL1xuICByZXBvcnRlZE5hbWVzOiBTZXQ8c3RyaW5nPjtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGRlLWR1cGxpY2F0aW9uIGtleSBmb3IgYSByZXBvcnRlZCBhc3NlcnRpb24gaWRlbnRpZmllci5cbiAqIEBwYXJhbSBwcmVmaXggUHJlZml4IHVzZWQgZm9yIHRoZSBhc3NlcnRpb24gaWRlbnRpZmllci5cbiAqIEBwYXJhbSBuYW1lIElkZW50aWZpZXIgbmFtZSByZXBvcnRlZCBieSB0aGUgcnVsZS5cbiAqIEByZXR1cm5zIFN0YWJsZSBkZS1kdXBsaWNhdGlvbiBrZXkgZm9yIHRoZSBpZGVudGlmaWVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGtleSA9IGdldFJlcG9ydGVkTmFtZUtleShcImFjdHVhbFwiLCBcInZhbHVlXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFJlcG9ydGVkTmFtZUtleSA9IChwcmVmaXg6IEFzc2VydGlvblByZWZpeCwgbmFtZTogc3RyaW5nKTogc3RyaW5nID0+XG4gIGAke3ByZWZpeH06JHtuYW1lfWA7XG5cbi8qKlxuICogUmVwb3J0cyBhIG1pc3NpbmcgYXNzZXJ0aW9uIHByZWZpeCB3aGVuIHRoZSBkZWNsYXJlZCBpZGVudGlmaWVyIGlzIGVsaWdpYmxlLlxuICogQHBhcmFtIGlucHV0IENvbXBvc2l0ZSByZXBvcnRpbmcgaW5wdXQgZm9yIG9uZSBpZGVudGlmaWVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydEFzc2VydGlvbklkZW50aWZpZXIoe1xuICogICBjb250ZXh0OiB7fSBhcyBSdWxlLlJ1bGVDb250ZXh0LFxuICogICBkZWNsYXJlZElkZW50aWZpZXJzOiBuZXcgTWFwKCksXG4gKiAgIG5hbWU6IFwidmFsdWVcIixcbiAqICAgcHJlZml4OiBcImFjdHVhbFwiLFxuICogICByZXBvcnRlZE5hbWVzOiBuZXcgU2V0KCksXG4gKiB9KTtcbiAqIGBgYFxuICovXG5jb25zdCByZXBvcnRBc3NlcnRpb25JZGVudGlmaWVyID0gKFxuICBpbnB1dDogUmVwb3J0QXNzZXJ0aW9uSWRlbnRpZmllcklucHV0LFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHsgY29udGV4dCwgZGVjbGFyZWRJZGVudGlmaWVycywgbmFtZSwgcHJlZml4LCByZXBvcnRlZE5hbWVzIH0gPSBpbnB1dDtcblxuICBjb25zdCBkZWNsYXJlZElkZW50aWZpZXIgPVxuICAgIG5hbWUgPT09IHZvaWQgMCB8fCB1c2VzUHJlZml4KG5hbWUsIHByZWZpeClcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IGRlY2xhcmVkSWRlbnRpZmllcnMuZ2V0KG5hbWUpO1xuICBpZiAoZGVjbGFyZWRJZGVudGlmaWVyID09PSB2b2lkIDAgfHwgbmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVwb3J0ZWROYW1lS2V5ID0gZ2V0UmVwb3J0ZWROYW1lS2V5KHByZWZpeCwgbmFtZSk7XG4gIGlmIChyZXBvcnRlZE5hbWVzLmhhcyhyZXBvcnRlZE5hbWVLZXkpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVwb3J0ZWROYW1lcy5hZGQocmVwb3J0ZWROYW1lS2V5KTtcbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIGRhdGE6IHsgbmFtZSwgcHJlZml4IH0sXG4gICAgbWVzc2FnZUlkOiBcIm1pc3NpbmdQcmVmaXhcIixcbiAgICBub2RlOiBkZWNsYXJlZElkZW50aWZpZXIsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXBvcnRzIG1pc3NpbmcgcHJlZml4ZXMgZm9yIHRoZSBhY3R1YWwgYW5kIGV4cGVjdGVkIGlkZW50aWZpZXJzIGluIG9uZSBhc3NlcnRpb24uXG4gKiBAcGFyYW0gaW5wdXQgQ29tcG9zaXRlIHJlcG9ydGluZyBpbnB1dCBmb3Igb25lIGFzc2VydGlvbi5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRBc3NlcnRpb25QcmVmaXhlcyh7XG4gKiAgIGFzc2VydGlvbk5vZGU6IHt9IGFzIEVTVHJlZS5TdGF0ZW1lbnQsXG4gKiAgIGNvbnRleHQ6IHt9IGFzIFJ1bGUuUnVsZUNvbnRleHQsXG4gKiAgIGRlY2xhcmVkSWRlbnRpZmllcnM6IG5ldyBNYXAoKSxcbiAqICAgcmVwb3J0ZWROYW1lczogbmV3IFNldCgpLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0QXNzZXJ0aW9uUHJlZml4ZXMgPSAoaW5wdXQ6IFJlcG9ydEFzc2VydGlvblByZWZpeGVzSW5wdXQpOiB2b2lkID0+IHtcbiAgY29uc3QgeyBhc3NlcnRpb25Ob2RlLCBjb250ZXh0LCBkZWNsYXJlZElkZW50aWZpZXJzLCByZXBvcnRlZE5hbWVzIH0gPSBpbnB1dDtcbiAgY29uc3QgeyBhY3R1YWwsIGV4cGVjdGVkIH0gPSBnZXRBc3NlcnRpb25JZGVudGlmaWVycyhhc3NlcnRpb25Ob2RlKTtcblxuICByZXBvcnRBc3NlcnRpb25JZGVudGlmaWVyKHtcbiAgICBjb250ZXh0LFxuICAgIGRlY2xhcmVkSWRlbnRpZmllcnMsXG4gICAgbmFtZTogYWN0dWFsLFxuICAgIHByZWZpeDogXCJhY3R1YWxcIixcbiAgICByZXBvcnRlZE5hbWVzLFxuICB9KTtcbiAgcmVwb3J0QXNzZXJ0aW9uSWRlbnRpZmllcih7XG4gICAgY29udGV4dCxcbiAgICBkZWNsYXJlZElkZW50aWZpZXJzLFxuICAgIG5hbWU6IGV4cGVjdGVkLFxuICAgIHByZWZpeDogXCJleHBlY3RlZFwiLFxuICAgIHJlcG9ydGVkTmFtZXMsXG4gIH0pO1xufTtcblxuLyoqIEVuZm9yY2VzIGFjdHVhbC9leHBlY3RlZC1zdHlsZSBwcmVmaXhlcyBmb3IgYXNzZXJ0LXBoYXNlIGNvbXBhcmlzb24gdmFyaWFibGVzLiAqL1xuY29uc3QgYXNzZXJ0QWN0dWFsRXhwZWN0ZWROYW1lc1J1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIENhbGxFeHByZXNzaW9uKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYW5hbHlzaXMgPSBhbmFseXplVGVzdEJsb2NrKGNvbnRleHQsIG5vZGUpO1xuICAgICAgICBpZiAoYW5hbHlzaXMgPT09IHZvaWQgMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY2xhcmVkSWRlbnRpZmllcnMgPSBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzKGFuYWx5c2lzKTtcbiAgICAgICAgY29uc3QgcmVwb3J0ZWROYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGFuYWx5c2lzLnN0YXRlbWVudHMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBzdGF0ZW1lbnQucGhhc2VzLmluY2x1ZGVzKFwiQXNzZXJ0XCIpICYmXG4gICAgICAgICAgICBoYXNBc3NlcnRpb24oc3RhdGVtZW50Lm5vZGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXBvcnRBc3NlcnRpb25QcmVmaXhlcyh7XG4gICAgICAgICAgICAgIGFzc2VydGlvbk5vZGU6IHN0YXRlbWVudC5ub2RlLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBkZWNsYXJlZElkZW50aWZpZXJzLFxuICAgICAgICAgICAgICByZXBvcnRlZE5hbWVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIFJ1bGUuUnVsZUxpc3RlbmVyO1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSBBc3NlcnQtcGhhc2UgY29tcGFyaXNvbiB2YXJpYWJsZXMgdG8gdXNlIGFjdHVhbCovZXhwZWN0ZWQqIHByZWZpeGVzLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvYXNzZXJ0LWFjdHVhbC1leHBlY3RlZC1uYW1lcy5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIG1pc3NpbmdQcmVmaXg6XG4gICAgICAgIFwiUmVuYW1lICd7e25hbWV9fScgdG8gdXNlIHRoZSAne3twcmVmaXh9fScgcHJlZml4IHdoZW4gY29tcGFyaW5nIHZhbHVlcyBpbnNpZGUgLy8gQXNzZXJ0LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IGFzc2VydEFjdHVhbEV4cGVjdGVkTmFtZXNSdWxlIH07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { enforceAaaPhasePurityRule } from "./rule.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/enforce-aaa-phase-purity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { enforceAaaPhasePurityRule } from "./rule.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvZW5mb3JjZS1hYWEtcGhhc2UtcHVyaXR5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGVuZm9yY2VBYWFQaGFzZVB1cml0eVJ1bGUgfSBmcm9tIFwiLi9ydWxlXCI7XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import type * as ESTree from "estree";
2
+ /**
3
+ * Collects all identifier names declared by a destructuring or identifier pattern.
4
+ * @param pattern Pattern node to inspect.
5
+ * @param identifiers Identifier set updated in place.
6
+ * @example
7
+ * ```typescript
8
+ * collectPatternIdentifiers({ name: "value", type: "Identifier" }, new Set<string>());
9
+ * ```
10
+ */
11
+ declare function collectPatternIdentifiers(pattern: ESTree.Pattern, identifiers: Set<string>): void;
12
+ export { collectPatternIdentifiers };
13
+ //# sourceMappingURL=pattern-identifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-identifiers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AA2FtC;;;;;;;;GAQG;AACH,iBAAS,yBAAyB,CAChC,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,IAAI,CAEN;AA4ED,OAAO,EAAE,yBAAyB,EAAE,CAAC"}