@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,203 @@
1
+ import { getStatementExpression, hasAssertion, isActionExpression, unwrapExpression, } from "./analyzer.assertions.js";
2
+ import { visitStatementWithoutDeferredBodies } from "./analyzer.classification.traversal.js";
3
+ import { arrayMutationMethods, getExpressionName, getInvokedName, isCallableExpression, isLocatedComment, isUtilityConstructor, isUtilityNamedCall, isUtilityNamespaceCall, isVoidLikeMethodName, visitNode, voidLikeMethodNames, } from "./analyzer.super.js";
4
+ /**
5
+ * Checks for async logic.
6
+ * @param statement Input statement value.
7
+ * @returns Return value output.
8
+ * @example
9
+ * ```typescript
10
+ * hasAsyncLogic(statement);
11
+ * ```
12
+ */
13
+ function hasAsyncLogic(statement) {
14
+ let foundAsyncLogic = false;
15
+ visitStatementWithoutDeferredBodies(statement, (node) => {
16
+ if (node.type === "AwaitExpression") {
17
+ foundAsyncLogic = true;
18
+ return;
19
+ }
20
+ if (node.type === "CallExpression" &&
21
+ node.callee.type === "MemberExpression" &&
22
+ node.callee.property.type === "Identifier" &&
23
+ ["catch", "finally", "then"].includes(node.callee.property.name)) {
24
+ foundAsyncLogic = true;
25
+ return;
26
+ }
27
+ if (node.type === "NewExpression" &&
28
+ getExpressionName(node.callee) === "Promise") {
29
+ foundAsyncLogic = true;
30
+ }
31
+ });
32
+ return foundAsyncLogic;
33
+ }
34
+ /**
35
+ * Checks for await usage.
36
+ * @param statement Input statement value.
37
+ * @returns Return value output.
38
+ * @example
39
+ * ```typescript
40
+ * hasAwait(statement);
41
+ * ```
42
+ */
43
+ function hasAwait(statement) {
44
+ let foundAwait = false;
45
+ visitStatementWithoutDeferredBodies(statement, (node) => {
46
+ if (node.type === "AwaitExpression") {
47
+ foundAwait = true;
48
+ }
49
+ });
50
+ return foundAwait;
51
+ }
52
+ /**
53
+ * Checks for blank lines before comments.
54
+ * @param sourceText Input sourceText value.
55
+ * @param comment Input comment value.
56
+ * @returns Return value output.
57
+ * @example
58
+ * ```typescript
59
+ * hasBlankLineBeforeComment(sourceText, comment);
60
+ * ```
61
+ */
62
+ function hasBlankLineBeforeComment(sourceText, comment) {
63
+ if (!isLocatedComment(comment)) {
64
+ return true;
65
+ }
66
+ const lines = sourceText.split(/\r\n|\n/u);
67
+ const previousLine = lines[comment.loc.start.line - 2];
68
+ return previousLine === void 0 || previousLine.trim().length === 0;
69
+ }
70
+ /**
71
+ * Checks for capturable Act results.
72
+ * @param statement Input statement value.
73
+ * @returns Return value output.
74
+ * @example
75
+ * ```typescript
76
+ * hasCapturableActResult(statement);
77
+ * ```
78
+ */
79
+ function hasCapturableActResult(statement) {
80
+ if (statement.type !== "ExpressionStatement") {
81
+ return false;
82
+ }
83
+ const expression = unwrapExpression(statement.expression);
84
+ if (!isActionExpression(expression) || isUtilityLikeExpression(expression)) {
85
+ return false;
86
+ }
87
+ const calleeName = getInvokedName(expression);
88
+ return (calleeName === void 0 ||
89
+ (!voidLikeMethodNames.has(calleeName) && !isVoidLikeMethodName(calleeName)));
90
+ }
91
+ /**
92
+ * Checks for mutation.
93
+ * @param statement Input statement value.
94
+ * @returns Return value output.
95
+ * @example
96
+ * ```typescript
97
+ * hasMutation(statement);
98
+ * ```
99
+ */
100
+ function hasMutation(statement) {
101
+ let foundMutation = false;
102
+ visitNode(statement, (node) => {
103
+ if (node.type === "AssignmentExpression" ||
104
+ node.type === "UpdateExpression" ||
105
+ node.type === "UnaryExpression") {
106
+ if (node.type !== "UnaryExpression" || node.operator === "delete") {
107
+ foundMutation = true;
108
+ }
109
+ return;
110
+ }
111
+ if (node.type === "CallExpression" &&
112
+ node.callee.type === "MemberExpression" &&
113
+ node.callee.property.type === "Identifier" &&
114
+ arrayMutationMethods.has(node.callee.property.name)) {
115
+ foundMutation = true;
116
+ }
117
+ });
118
+ return foundMutation;
119
+ }
120
+ /**
121
+ * Checks for meaningful Act statements.
122
+ * @param statement Input statement value.
123
+ * @returns Return value output.
124
+ * @example
125
+ * ```typescript
126
+ * isMeaningfulActStatement(statement);
127
+ * ```
128
+ */
129
+ function isMeaningfulActStatement(statement) {
130
+ const expression = getStatementExpression(statement);
131
+ if (expression === void 0) {
132
+ return false;
133
+ }
134
+ return (isActionExpression(expression) &&
135
+ !isUtilityLikeExpression(expression) &&
136
+ !hasAssertion(statement));
137
+ }
138
+ /**
139
+ * Checks for rule create calls.
140
+ * @param expression Input expression value.
141
+ * @returns Return value output.
142
+ * @example
143
+ * ```typescript
144
+ * isRuleCreateInvocation(expression);
145
+ * ```
146
+ */
147
+ function isRuleCreateInvocation(expression) {
148
+ return (expression.type === "CallExpression" &&
149
+ expression.callee.type === "MemberExpression" &&
150
+ expression.callee.object.type === "Identifier" &&
151
+ expression.callee.property.type === "Identifier" &&
152
+ expression.callee.property.name === "create" &&
153
+ expression.callee.object.name.endsWith("Rule"));
154
+ }
155
+ /**
156
+ * Checks for setup-like statements.
157
+ * @param statement Input statement value.
158
+ * @returns Return value output.
159
+ * @example
160
+ * ```typescript
161
+ * isSetupLikeStatement(statement);
162
+ * ```
163
+ */
164
+ function isSetupLikeStatement(statement) {
165
+ if (statement.type === "VariableDeclaration") {
166
+ return statement.declarations.every((declaration) => {
167
+ if (declaration.init === null) {
168
+ return true;
169
+ }
170
+ const init = unwrapExpression(declaration.init);
171
+ return !isActionExpression(init) || isUtilityLikeExpression(init);
172
+ });
173
+ }
174
+ const expression = getStatementExpression(statement);
175
+ return expression !== void 0 && isUtilityLikeExpression(expression);
176
+ }
177
+ /**
178
+ * Checks for utility-like expressions.
179
+ * @param expression Input expression value.
180
+ * @returns Return value output.
181
+ * @example
182
+ * ```typescript
183
+ * isUtilityLikeExpression(expression);
184
+ * ```
185
+ */
186
+ function isUtilityLikeExpression(expression) {
187
+ const unwrappedExpression = unwrapExpression(expression);
188
+ if (!isCallableExpression(unwrappedExpression)) {
189
+ return false;
190
+ }
191
+ const calleeName = getExpressionName(unwrappedExpression.callee);
192
+ if (calleeName === void 0) {
193
+ return false;
194
+ }
195
+ return (!isRuleCreateInvocation(unwrappedExpression) &&
196
+ (isUtilityConstructor(unwrappedExpression, calleeName) ||
197
+ isUtilityNamedCall(calleeName) ||
198
+ isUtilityNamespaceCall(unwrappedExpression)));
199
+ }
200
+ /** Companion marker for test isolation. */
201
+ const analyzerClassificationHelpersCompanion = true;
202
+ export { analyzerClassificationHelpersCompanion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, };
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24uaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9hYWEvYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24uaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsZ0JBQWdCLEdBQ2pCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxtQkFBbUIsR0FDcEIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQjs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsYUFBYSxDQUFDLFNBQTJCO0lBQ2hELElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztJQUM1QixtQ0FBbUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUN0RCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUNwQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFDRSxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFnQjtZQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxrQkFBa0I7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVk7WUFDMUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFD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Q3BELGtCQUFrQixDQUFDLFVBQVUsQ0FBQztZQUM5QixzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQy9DLENBQUM7QUFDSixDQUFDO0FBRUQsMkNBQTJDO0FBQzNDLE1BQU0sc0NBQXNDLEdBQUcsSUFBYSxDQUFDO0FBRTdELE9BQU8sRUFDTCxzQ0FBc0MsRUFDdEMsYUFBYSxFQUNiLFFBQVEsRUFDUix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsb0JBQW9CLEdBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XHJcblxyXG5pbXBvcnQgdHlwZSB7IFNvdXJjZUNvbW1lbnQgfSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuaW1wb3J0IHtcclxuICBnZXRTdGF0ZW1lbnRFeHByZXNzaW9uLFxyXG4gIGhhc0Fzc2VydGlvbixcclxuICBpc0FjdGlvbkV4cHJlc3Npb24sXHJcbiAgdW53cmFwRXhwcmVzc2lvbixcclxufSBmcm9tIFwiLi9hbmFseXplci5hc3NlcnRpb25zXCI7XHJcbmltcG9ydCB7IHZpc2l0U3RhdGVtZW50V2l0aG91dERlZmVycmVkQm9kaWVzIH0gZnJvbSBcIi4vYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24udHJhdmVyc2FsXCI7XHJcbmltcG9ydCB7XHJcbiAgYXJyYXlNdXRhdGlvbk1ldGhvZHMsXHJcbiAgZ2V0RXhwcmVzc2lvbk5hbWUsXHJcbiAgZ2V0SW52b2tlZE5hbWUsXHJcbiAgaXNDYWxsYWJsZUV4cHJlc3Npb24sXHJcbiAgaXNMb2NhdGVkQ29tbWVudCxcclxuICBpc1V0aWxpdHlDb25zdHJ1Y3RvcixcclxuICBpc1V0aWxpdHlOYW1lZENhbGwsXHJcbiAgaXNVdGlsaXR5TmFtZXNwYWNlQ2FsbCxcclxuICBpc1ZvaWRMaWtlTWV0aG9kTmFtZSxcclxuICB2aXNpdE5vZGUsXHJcbiAgdm9pZExpa2VNZXRob2ROYW1lcyxcclxufSBmcm9tIFwiLi9hbmFseXplci5zdXBlclwiO1xyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBmb3IgYXN5bmMgbG9naWMuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGhhc0FzeW5jTG9naWMoc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBoYXNBc3luY0xvZ2ljKHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCk6IGJvb2xlYW4ge1xyXG4gIGxldCBmb3VuZEFzeW5jTG9naWMgPSBmYWxzZTtcclxuICB2aXNpdFN0YXRlbWVudFdpdGhvdXREZWZlcnJlZEJvZGllcyhzdGF0ZW1lbnQsIChub2RlKSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSBcIkF3YWl0RXhwcmVzc2lvblwiKSB7XHJcbiAgICAgIGZvdW5kQXN5bmNMb2dpYyA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgbm9kZS50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiZcclxuICAgICAgbm9kZS5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcclxuICAgICAgbm9kZS5jYWxsZWUucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgICAgW1wiY2F0Y2hcIiwgXCJmaW5hbGx5XCIsIFwidGhlblwiXS5pbmNsdWRlcyhub2RlLmNhbGxlZS5wcm9wZXJ0eS5uYW1lKVxyXG4gICAgKSB7XHJcbiAgICAgIGZvdW5kQXN5bmNMb2dpYyA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgbm9kZS50eXBlID09PSBcIk5ld0V4cHJlc3Npb25cIiAmJlxyXG4gICAgICBnZXRFeHByZXNzaW9uTmFtZShub2RlLmNhbGxlZSkgPT09IFwiUHJvbWlzZVwiXHJcbiAgICApIHtcclxuICAgICAgZm91bmRBc3luY0xvZ2ljID0gdHJ1ZTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gZm91bmRBc3luY0xvZ2ljO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciBhd2FpdCB1c2FnZS5cclxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaGFzQXdhaXQoc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBoYXNBd2FpdChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBsZXQgZm91bmRBd2FpdCA9IGZhbHNlO1xyXG4gIHZpc2l0U3RhdGVtZW50V2l0aG91dERlZmVycmVkQm9kaWVzKHN0YXRlbWVudCwgKG5vZGUpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IFwiQXdhaXRFeHByZXNzaW9uXCIpIHtcclxuICAgICAgZm91bmRBd2FpdCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGZvdW5kQXdhaXQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgZm9yIGJsYW5rIGxpbmVzIGJlZm9yZSBjb21tZW50cy5cclxuICogQHBhcmFtIHNvdXJjZVRleHQgSW5wdXQgc291cmNlVGV4dCB2YWx1ZS5cclxuICogQHBhcmFtIGNvbW1lbnQgSW5wdXQgY29tbWVudCB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50KHNvdXJjZVRleHQsIGNvbW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQoXHJcbiAgc291cmNlVGV4dDogc3RyaW5nLFxyXG4gIGNvbW1lbnQ6IFNvdXJjZUNvbW1lbnQsXHJcbik6IGJvb2xlYW4ge1xyXG4gIGlmICghaXNMb2NhdGVkQ29tbWVudChjb21tZW50KSkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGNvbnN0IGxpbmVzID0gc291cmNlVGV4dC5zcGxpdCgvXFxyXFxufFxcbi91KTtcclxuICBjb25zdCBwcmV2aW91c0xpbmUgPSBsaW5lc1tjb21tZW50LmxvYy5zdGFydC5saW5lIC0gMl07XHJcbiAgcmV0dXJuIHByZXZpb3VzTGluZSA9PT0gdm9pZCAwIHx8IHByZXZpb3VzTGluZS50cmltKCkubGVuZ3RoID09PSAwO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciBjYXB0dXJhYmxlIEFjdCByZXN1bHRzLlxyXG4gKiBAcGFyYW0gc3RhdGVtZW50IElucHV0IHN0YXRlbWVudCB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBoYXNDYXB0dXJhYmxlQWN0UmVzdWx0KHN0YXRlbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBpZiAoc3RhdGVtZW50LnR5cGUgIT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGNvbnN0IGV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKHN0YXRlbWVudC5leHByZXNzaW9uKTtcclxuICBpZiAoIWlzQWN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKSB8fCBpc1V0aWxpdHlMaWtlRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBjb25zdCBjYWxsZWVOYW1lID0gZ2V0SW52b2tlZE5hbWUoXHJcbiAgICBleHByZXNzaW9uIGFzIEVTVHJlZS5DYWxsRXhwcmVzc2lvbiB8IEVTVHJlZS5OZXdFeHByZXNzaW9uLFxyXG4gICk7XHJcbiAgcmV0dXJuIChcclxuICAgIGNhbGxlZU5hbWUgPT09IHZvaWQgMCB8fFxyXG4gICAgKCF2b2lkTGlrZU1ldGhvZE5hbWVzLmhhcyhjYWxsZWVOYW1lKSAmJiAhaXNWb2lkTGlrZU1ldGhvZE5hbWUoY2FsbGVlTmFtZSkpXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBmb3IgbXV0YXRpb24uXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGhhc011dGF0aW9uKHN0YXRlbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaGFzTXV0YXRpb24oc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50KTogYm9vbGVhbiB7XHJcbiAgbGV0IGZvdW5kTXV0YXRpb24gPSBmYWxzZTtcclxuICB2aXNpdE5vZGUoc3RhdGVtZW50LCAobm9kZSkgPT4ge1xyXG4gICAgaWYgKFxyXG4gICAgICBub2RlLnR5cGUgPT09IFwiQXNzaWdubWVudEV4cHJlc3Npb25cIiB8fFxyXG4gICAgICBub2RlLnR5cGUgPT09IFwiVXBkYXRlRXhwcmVzc2lvblwiIHx8XHJcbiAgICAgIG5vZGUudHlwZSA9PT0gXCJVbmFyeUV4cHJlc3Npb25cIlxyXG4gICAgKSB7XHJcbiAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiVW5hcnlFeHByZXNzaW9uXCIgfHwgbm9kZS5vcGVyYXRvciA9PT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgIGZvdW5kTXV0YXRpb24gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgbm9kZS50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiZcclxuICAgICAgbm9kZS5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcclxuICAgICAgbm9kZS5jYWxsZWUucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgICAgYXJyYXlNdXRhdGlvbk1ldGhvZHMuaGFzKG5vZGUuY2FsbGVlLnByb3BlcnR5Lm5hbWUpXHJcbiAgICApIHtcclxuICAgICAgZm91bmRNdXRhdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGZvdW5kTXV0YXRpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgZm9yIG1lYW5pbmdmdWwgQWN0IHN0YXRlbWVudHMuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudChzdGF0ZW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBjb25zdCBleHByZXNzaW9uID0gZ2V0U3RhdGVtZW50RXhwcmVzc2lvbihzdGF0ZW1lbnQpO1xyXG4gIGlmIChleHByZXNzaW9uID09PSB2b2lkIDApIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIChcclxuICAgIGlzQWN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKSAmJlxyXG4gICAgIWlzVXRpbGl0eUxpa2VFeHByZXNzaW9uKGV4cHJlc3Npb24pICYmXHJcbiAgICAhaGFzQXNzZXJ0aW9uKHN0YXRlbWVudClcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciBydWxlIGNyZWF0ZSBjYWxscy5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc1J1bGVDcmVhdGVJbnZvY2F0aW9uKGV4cHJlc3Npb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzUnVsZUNyZWF0ZUludm9jYXRpb24oXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkNhbGxFeHByZXNzaW9uIHwgRVNUcmVlLk5ld0V4cHJlc3Npb24sXHJcbik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAoXHJcbiAgICBleHByZXNzaW9uLnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxyXG4gICAgZXhwcmVzc2lvbi5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxyXG4gICAgZXhwcmVzc2lvbi5jYWxsZWUucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnByb3BlcnR5Lm5hbWUgPT09IFwiY3JlYXRlXCIgJiZcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC5uYW1lLmVuZHNXaXRoKFwiUnVsZVwiKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgZm9yIHNldHVwLWxpa2Ugc3RhdGVtZW50cy5cclxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNTZXR1cExpa2VTdGF0ZW1lbnQoc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1NldHVwTGlrZVN0YXRlbWVudChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XHJcbiAgICByZXR1cm4gc3RhdGVtZW50LmRlY2xhcmF0aW9ucy5ldmVyeSgoZGVjbGFyYXRpb24pID0+IHtcclxuICAgICAgaWYgKGRlY2xhcmF0aW9uLmluaXQgPT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpbml0ID0gdW53cmFwRXhwcmVzc2lvbihkZWNsYXJhdGlvbi5pbml0KTtcclxuICAgICAgcmV0dXJuICFpc0FjdGlvbkV4cHJlc3Npb24oaW5pdCkgfHwgaXNVdGlsaXR5TGlrZUV4cHJlc3Npb24oaW5pdCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29uc3QgZXhwcmVzc2lvbiA9IGdldFN0YXRlbWVudEV4cHJlc3Npb24oc3RhdGVtZW50KTtcclxuICByZXR1cm4gZXhwcmVzc2lvbiAhPT0gdm9pZCAwICYmIGlzVXRpbGl0eUxpa2VFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciB1dGlsaXR5LWxpa2UgZXhwcmVzc2lvbnMuXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIElucHV0IGV4cHJlc3Npb24gdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNVdGlsaXR5TGlrZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNVdGlsaXR5TGlrZUV4cHJlc3Npb24oXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkV4cHJlc3Npb24gfCB1bmRlZmluZWQsXHJcbik6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHVud3JhcHBlZEV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG4gIGlmICghaXNDYWxsYWJsZUV4cHJlc3Npb24odW53cmFwcGVkRXhwcmVzc2lvbikpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgY29uc3QgY2FsbGVlTmFtZSA9IGdldEV4cHJlc3Npb25OYW1lKHVud3JhcHBlZEV4cHJlc3Npb24uY2FsbGVlKTtcclxuICBpZiAoY2FsbGVlTmFtZSA9PT0gdm9pZCAwKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiAoXHJcbiAgICAhaXNSdWxlQ3JlYXRlSW52b2NhdGlvbih1bndyYXBwZWRFeHByZXNzaW9uKSAmJlxyXG4gICAgKGlzVXRpbGl0eUNvbnN0cnVjdG9yKHVud3JhcHBlZEV4cHJlc3Npb24sIGNhbGxlZU5hbWUpIHx8XHJcbiAgICAgIGlzVXRpbGl0eU5hbWVkQ2FsbChjYWxsZWVOYW1lKSB8fFxyXG4gICAgICBpc1V0aWxpdHlOYW1lc3BhY2VDYWxsKHVud3JhcHBlZEV4cHJlc3Npb24pKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKiBDb21wYW5pb24gbWFya2VyIGZvciB0ZXN0IGlzb2xhdGlvbi4gKi9cclxuY29uc3QgYW5hbHl6ZXJDbGFzc2lmaWNhdGlvbkhlbHBlcnNDb21wYW5pb24gPSB0cnVlIGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IHtcclxuICBhbmFseXplckNsYXNzaWZpY2F0aW9uSGVscGVyc0NvbXBhbmlvbixcclxuICBoYXNBc3luY0xvZ2ljLFxyXG4gIGhhc0F3YWl0LFxyXG4gIGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQsXHJcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCxcclxuICBoYXNNdXRhdGlvbixcclxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQsXHJcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXHJcbn07XHJcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { hasAsyncLogic as hasAsyncLogicImplementation, hasAwait as hasAwaitImplementation, hasBlankLineBeforeComment as hasBlankLineBeforeCommentImplementation, hasCapturableActResult as hasCapturableActResultImplementation, hasMutation as hasMutationImplementation, isMeaningfulActStatement as isMeaningfulActStatementImplementation, isSetupLikeStatement as isSetupLikeStatementImplementation, } from "./analyzer.classification.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
+ /** Checks whether a statement contains any async or await logic. */
17
+ const hasAsyncLogic = forward(hasAsyncLogicImplementation);
18
+ /** Checks whether a node contains an `await` expression. */
19
+ const hasAwait = forward(hasAwaitImplementation);
20
+ /** Checks whether there is a blank line immediately before a comment node. */
21
+ const hasBlankLineBeforeComment = forward(hasBlankLineBeforeCommentImplementation);
22
+ /** Checks whether an Act statement produces a result worth capturing. */
23
+ const hasCapturableActResult = forward(hasCapturableActResultImplementation);
24
+ /** Checks whether a statement performs an observable state mutation. */
25
+ const hasMutation = forward(hasMutationImplementation);
26
+ /** Checks whether a statement is a meaningful Act step (not setup or assertion). */
27
+ const isMeaningfulActStatement = forward(isMeaningfulActStatementImplementation);
28
+ /** Checks whether a statement looks like an Arrange-phase setup step. */
29
+ const isSetupLikeStatement = forward(isSetupLikeStatementImplementation);
30
+ export { hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL2FuYWx5emVyLmNsYXNzaWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLElBQUksMkJBQTJCLEVBQzVDLFFBQVEsSUFBSSxzQkFBc0IsRUFDbEMseUJBQXlCLElBQUksdUNBQXVDLEVBQ3BFLHNCQUFzQixJQUFJLG9DQUFvQyxFQUM5RCxXQUFXLElBQUkseUJBQXlCLEVBQ3hDLHdCQUF3QixJQUFJLHNDQUFzQyxFQUNsRSxvQkFBb0IsSUFBSSxrQ0FBa0MsR0FDM0QsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxPQUFPLENBQ2QsY0FBdUQ7SUFFdkQsT0FBTyxDQUFDLEdBQUcsVUFBVSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsb0VBQW9FO0FBQ3BFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBRTNELDREQUE0RDtBQUM1RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUVqRCw4RUFBOEU7QUFDOUUsTUFBTSx5QkFBeUIsR0FBRyxPQUFPLENBQ3ZDLHVDQUF1QyxDQUN4QyxDQUFDO0FBRUYseUVBQXlFO0FBQ3pFLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFFN0Usd0VBQXdFO0FBQ3hFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRXZELG9GQUFvRjtBQUNwRixNQUFNLHdCQUF3QixHQUFHLE9BQU8sQ0FDdEMsc0NBQXNDLENBQ3ZDLENBQUM7QUFFRix5RUFBeUU7QUFDekUsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsYUFBYSxFQUNiLFFBQVEsRUFDUix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsb0JBQW9CLEdBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGhhc0FzeW5jTG9naWMgYXMgaGFzQXN5bmNMb2dpY0ltcGxlbWVudGF0aW9uLFxyXG4gIGhhc0F3YWl0IGFzIGhhc0F3YWl0SW1wbGVtZW50YXRpb24sXHJcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCBhcyBoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50SW1wbGVtZW50YXRpb24sXHJcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCBhcyBoYXNDYXB0dXJhYmxlQWN0UmVzdWx0SW1wbGVtZW50YXRpb24sXHJcbiAgaGFzTXV0YXRpb24gYXMgaGFzTXV0YXRpb25JbXBsZW1lbnRhdGlvbixcclxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQgYXMgaXNNZWFuaW5nZnVsQWN0U3RhdGVtZW50SW1wbGVtZW50YXRpb24sXHJcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQgYXMgaXNTZXR1cExpa2VTdGF0ZW1lbnRJbXBsZW1lbnRhdGlvbixcclxufSBmcm9tIFwiLi9hbmFseXplci5jbGFzc2lmaWNhdGlvbi5oZWxwZXJzXCI7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIGxvY2FsIGZvcndhcmRpbmcgZnVuY3Rpb24gZm9yIGFuIGltcG9ydGVkIGFuYWx5emVyIGhlbHBlci5cclxuICogQHRlbXBsYXRlIFRQYXJhbWV0ZXJzIEZvcndhcmRlZCBwYXJhbWV0ZXIgdHVwbGUuXHJcbiAqIEB0ZW1wbGF0ZSBUUmVzdWx0IEZvcndhcmRlZCByZXR1cm4gdHlwZS5cclxuICogQHBhcmFtIGltcGxlbWVudGF0aW9uIEltcG9ydGVkIGhlbHBlciBpbXBsZW1lbnRhdGlvbi5cclxuICogQHJldHVybnMgTG9jYWwgZnVuY3Rpb24gdGhhdCBmb3J3YXJkcyBhbGwgYXJndW1lbnRzIHRvIHRoZSBpbXBsZW1lbnRhdGlvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBsb2NhbEhlbHBlciA9IGZvcndhcmQoaW1wbGVtZW50YXRpb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGZvcndhcmQ8VFBhcmFtZXRlcnMgZXh0ZW5kcyB1bmtub3duW10sIFRSZXN1bHQ+KFxyXG4gIGltcGxlbWVudGF0aW9uOiAoLi4ucGFyYW1ldGVyczogVFBhcmFtZXRlcnMpID0+IFRSZXN1bHQsXHJcbik6ICguLi5wYXJhbWV0ZXJzOiBUUGFyYW1ldGVycykgPT4gVFJlc3VsdCB7XHJcbiAgcmV0dXJuICguLi5wYXJhbWV0ZXJzKSA9PiBpbXBsZW1lbnRhdGlvbiguLi5wYXJhbWV0ZXJzKTtcclxufVxyXG5cclxuLyoqIENoZWNrcyB3aGV0aGVyIGEgc3RhdGVtZW50IGNvbnRhaW5zIGFueSBhc3luYyBvciBhd2FpdCBsb2dpYy4gKi9cclxuY29uc3QgaGFzQXN5bmNMb2dpYyA9IGZvcndhcmQoaGFzQXN5bmNMb2dpY0ltcGxlbWVudGF0aW9uKTtcclxuXHJcbi8qKiBDaGVja3Mgd2hldGhlciBhIG5vZGUgY29udGFpbnMgYW4gYGF3YWl0YCBleHByZXNzaW9uLiAqL1xyXG5jb25zdCBoYXNBd2FpdCA9IGZvcndhcmQoaGFzQXdhaXRJbXBsZW1lbnRhdGlvbik7XHJcblxyXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlcmUgaXMgYSBibGFuayBsaW5lIGltbWVkaWF0ZWx5IGJlZm9yZSBhIGNvbW1lbnQgbm9kZS4gKi9cclxuY29uc3QgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCA9IGZvcndhcmQoXHJcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudEltcGxlbWVudGF0aW9uLFxyXG4pO1xyXG5cclxuLyoqIENoZWNrcyB3aGV0aGVyIGFuIEFjdCBzdGF0ZW1lbnQgcHJvZHVjZXMgYSByZXN1bHQgd29ydGggY2FwdHVyaW5nLiAqL1xyXG5jb25zdCBoYXNDYXB0dXJhYmxlQWN0UmVzdWx0ID0gZm9yd2FyZChoYXNDYXB0dXJhYmxlQWN0UmVzdWx0SW1wbGVtZW50YXRpb24pO1xyXG5cclxuLyoqIENoZWNrcyB3aGV0aGVyIGEgc3RhdGVtZW50IHBlcmZvcm1zIGFuIG9ic2VydmFibGUgc3RhdGUgbXV0YXRpb24uICovXHJcbmNvbnN0IGhhc011dGF0aW9uID0gZm9yd2FyZChoYXNNdXRhdGlvbkltcGxlbWVudGF0aW9uKTtcclxuXHJcbi8qKiBDaGVja3Mgd2hldGhlciBhIHN0YXRlbWVudCBpcyBhIG1lYW5pbmdmdWwgQWN0IHN0ZXAgKG5vdCBzZXR1cCBvciBhc3NlcnRpb24pLiAqL1xyXG5jb25zdCBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQgPSBmb3J3YXJkKFxyXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudEltcGxlbWVudGF0aW9uLFxyXG4pO1xyXG5cclxuLyoqIENoZWNrcyB3aGV0aGVyIGEgc3RhdGVtZW50IGxvb2tzIGxpa2UgYW4gQXJyYW5nZS1waGFzZSBzZXR1cCBzdGVwLiAqL1xyXG5jb25zdCBpc1NldHVwTGlrZVN0YXRlbWVudCA9IGZvcndhcmQoaXNTZXR1cExpa2VTdGF0ZW1lbnRJbXBsZW1lbnRhdGlvbik7XHJcblxyXG5leHBvcnQge1xyXG4gIGhhc0FzeW5jTG9naWMsXHJcbiAgaGFzQXdhaXQsXHJcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCxcclxuICBoYXNDYXB0dXJhYmxlQWN0UmVzdWx0LFxyXG4gIGhhc011dGF0aW9uLFxyXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudCxcclxuICBpc1NldHVwTGlrZVN0YXRlbWVudCxcclxufTtcclxuIl19
@@ -0,0 +1,9 @@
1
+ /** Companion exports for analyzer classification member-pattern tests. */
2
+ declare const analyzerClassificationMemberPatterns: {
3
+ hasAssertion: (statement: import("estree").Statement) => boolean;
4
+ hasCapturableActResult: (statement: import("estree").Statement) => boolean;
5
+ isMeaningfulActStatement: (statement: import("estree").Statement) => boolean;
6
+ isSetupLikeStatement: (statement: import("estree").Statement) => boolean;
7
+ };
8
+ export { analyzerClassificationMemberPatterns };
9
+ //# sourceMappingURL=analyzer.classification.member-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.classification.member-patterns.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.classification.member-patterns.ts"],"names":[],"mappings":"AAOA,0EAA0E;AAC1E,QAAA,MAAM,oCAAoC;;;;;CAKzC,CAAC;AAEF,OAAO,EAAE,oCAAoC,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { hasAssertion, hasCapturableActResult, isMeaningfulActStatement, isSetupLikeStatement, } from "./analyzer.js";
2
+ /** Companion exports for analyzer classification member-pattern tests. */
3
+ const analyzerClassificationMemberPatterns = {
4
+ hasAssertion,
5
+ hasCapturableActResult,
6
+ isMeaningfulActStatement,
7
+ isSetupLikeStatement,
8
+ };
9
+ export { analyzerClassificationMemberPatterns };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24ubWVtYmVyLXBhdHRlcm5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2FhYS9hbmFseXplci5jbGFzc2lmaWNhdGlvbi5tZW1iZXItcGF0dGVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixHQUNyQixNQUFNLFlBQVksQ0FBQztBQUVwQiwwRUFBMEU7QUFDMUUsTUFBTSxvQ0FBb0MsR0FBRztJQUMzQyxZQUFZO0lBQ1osc0JBQXNCO0lBQ3RCLHdCQUF3QjtJQUN4QixvQkFBb0I7Q0FDckIsQ0FBQztBQUVGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBoYXNBc3NlcnRpb24sXHJcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCxcclxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQsXHJcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXHJcbn0gZnJvbSBcIi4vYW5hbHl6ZXJcIjtcclxuXHJcbi8qKiBDb21wYW5pb24gZXhwb3J0cyBmb3IgYW5hbHl6ZXIgY2xhc3NpZmljYXRpb24gbWVtYmVyLXBhdHRlcm4gdGVzdHMuICovXHJcbmNvbnN0IGFuYWx5emVyQ2xhc3NpZmljYXRpb25NZW1iZXJQYXR0ZXJucyA9IHtcclxuICBoYXNBc3NlcnRpb24sXHJcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCxcclxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQsXHJcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXHJcbn07XHJcblxyXG5leHBvcnQgeyBhbmFseXplckNsYXNzaWZpY2F0aW9uTWVtYmVyUGF0dGVybnMgfTtcclxuIl19
@@ -0,0 +1,4 @@
1
+ /** Companion module for classification mutation spec coverage. */
2
+ declare const analyzerClassificationMutationsCompanion: true;
3
+ export { analyzerClassificationMutationsCompanion };
4
+ //# sourceMappingURL=analyzer.classification.mutations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.classification.mutations.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.classification.mutations.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,QAAA,MAAM,wCAAwC,EAAG,IAAa,CAAC;AAE/D,OAAO,EAAE,wCAAwC,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Companion module for classification mutation spec coverage. */
2
+ const analyzerClassificationMutationsCompanion = true;
3
+ export { analyzerClassificationMutationsCompanion };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24ubXV0YXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2FhYS9hbmFseXplci5jbGFzc2lmaWNhdGlvbi5tdXRhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE1BQU0sd0NBQXdDLEdBQUcsSUFBYSxDQUFDO0FBRS9ELE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIENvbXBhbmlvbiBtb2R1bGUgZm9yIGNsYXNzaWZpY2F0aW9uIG11dGF0aW9uIHNwZWMgY292ZXJhZ2UuICovXHJcbmNvbnN0IGFuYWx5emVyQ2xhc3NpZmljYXRpb25NdXRhdGlvbnNDb21wYW5pb24gPSB0cnVlIGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IHsgYW5hbHl6ZXJDbGFzc2lmaWNhdGlvbk11dGF0aW9uc0NvbXBhbmlvbiB9O1xyXG4iXX0=
@@ -0,0 +1,15 @@
1
+ import type * as ESTree from "estree";
2
+ /**
3
+ * Visits a statement while skipping nested function bodies that execute later.
4
+ * @param statement Input statement value.
5
+ * @param callback Input callback value.
6
+ * @example
7
+ * ```typescript
8
+ * visitStatementWithoutDeferredBodies(statement, () => {});
9
+ * ```
10
+ */
11
+ declare function visitStatementWithoutDeferredBodies(statement: ESTree.Statement, callback: (node: ESTree.Node) => void): void;
12
+ /** Companion marker for test isolation. */
13
+ declare const analyzerClassificationTraversalCompanion: true;
14
+ export { analyzerClassificationTraversalCompanion, visitStatementWithoutDeferredBodies, };
15
+ //# sourceMappingURL=analyzer.classification.traversal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.classification.traversal.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.classification.traversal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAqBtC;;;;;;;;GAQG;AACH,iBAAS,mCAAmC,CAC1C,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,GACpC,IAAI,CAKN;AAED,2CAA2C;AAC3C,QAAA,MAAM,wCAAwC,EAAG,IAAa,CAAC;AAE/D,OAAO,EACL,wCAAwC,EACxC,mCAAmC,GACpC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { visitNode } from "./analyzer.super.js";
2
+ /**
3
+ * Checks whether a node introduces deferred execution.
4
+ * @param node Input node value.
5
+ * @returns Return value output.
6
+ * @example
7
+ * ```typescript
8
+ * isDeferredFunctionNode({ type: "ArrowFunctionExpression" } as ESTree.Node);
9
+ * ```
10
+ */
11
+ function isDeferredFunctionNode(node) {
12
+ return (node.type === "ArrowFunctionExpression" ||
13
+ node.type === "FunctionDeclaration" ||
14
+ node.type === "FunctionExpression");
15
+ }
16
+ /**
17
+ * Visits a statement while skipping nested function bodies that execute later.
18
+ * @param statement Input statement value.
19
+ * @param callback Input callback value.
20
+ * @example
21
+ * ```typescript
22
+ * visitStatementWithoutDeferredBodies(statement, () => {});
23
+ * ```
24
+ */
25
+ function visitStatementWithoutDeferredBodies(statement, callback) {
26
+ visitNode(statement, (node) => {
27
+ callback(node);
28
+ return node === statement || !isDeferredFunctionNode(node);
29
+ });
30
+ }
31
+ /** Companion marker for test isolation. */
32
+ const analyzerClassificationTraversalCompanion = true;
33
+ export { analyzerClassificationTraversalCompanion, visitStatementWithoutDeferredBodies, };
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24udHJhdmVyc2FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2FhYS9hbmFseXplci5jbGFzc2lmaWNhdGlvbi50cmF2ZXJzYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxJQUFpQjtJQUMvQyxPQUFPLENBQ0wsSUFBSSxDQUFDLElBQUksS0FBSyx5QkFBeUI7UUFDdkMsSUFBSSxDQUFDLElBQUksS0FBSyxxQkFBcUI7UUFDbkMsSUFBSSxDQUFDLElBQUksS0FBSyxvQkFBb0IsQ0FDbkMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsbUNBQW1DLENBQzFDLFNBQTJCLEVBQzNCLFFBQXFDO0lBRXJDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUM1QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZixPQUFPLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSx3Q0FBd0MsR0FBRyxJQUFhLENBQUM7QUFFL0QsT0FBTyxFQUNMLHdDQUF3QyxFQUN4QyxtQ0FBbUMsR0FDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcclxuXHJcbmltcG9ydCB7IHZpc2l0Tm9kZSB9IGZyb20gXCIuL2FuYWx5emVyLnN1cGVyXCI7XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSBub2RlIGludHJvZHVjZXMgZGVmZXJyZWQgZXhlY3V0aW9uLlxyXG4gKiBAcGFyYW0gbm9kZSBJbnB1dCBub2RlIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzRGVmZXJyZWRGdW5jdGlvbk5vZGUoeyB0eXBlOiBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIgfSBhcyBFU1RyZWUuTm9kZSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNEZWZlcnJlZEZ1bmN0aW9uTm9kZShub2RlOiBFU1RyZWUuTm9kZSk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAoXHJcbiAgICBub2RlLnR5cGUgPT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiB8fFxyXG4gICAgbm9kZS50eXBlID09PSBcIkZ1bmN0aW9uRGVjbGFyYXRpb25cIiB8fFxyXG4gICAgbm9kZS50eXBlID09PSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFZpc2l0cyBhIHN0YXRlbWVudCB3aGlsZSBza2lwcGluZyBuZXN0ZWQgZnVuY3Rpb24gYm9kaWVzIHRoYXQgZXhlY3V0ZSBsYXRlci5cclxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXHJcbiAqIEBwYXJhbSBjYWxsYmFjayBJbnB1dCBjYWxsYmFjayB2YWx1ZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiB2aXNpdFN0YXRlbWVudFdpdGhvdXREZWZlcnJlZEJvZGllcyhzdGF0ZW1lbnQsICgpID0+IHt9KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiB2aXNpdFN0YXRlbWVudFdpdGhvdXREZWZlcnJlZEJvZGllcyhcclxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQsXHJcbiAgY2FsbGJhY2s6IChub2RlOiBFU1RyZWUuTm9kZSkgPT4gdm9pZCxcclxuKTogdm9pZCB7XHJcbiAgdmlzaXROb2RlKHN0YXRlbWVudCwgKG5vZGUpID0+IHtcclxuICAgIGNhbGxiYWNrKG5vZGUpO1xyXG4gICAgcmV0dXJuIG5vZGUgPT09IHN0YXRlbWVudCB8fCAhaXNEZWZlcnJlZEZ1bmN0aW9uTm9kZShub2RlKTtcclxuICB9KTtcclxufVxyXG5cclxuLyoqIENvbXBhbmlvbiBtYXJrZXIgZm9yIHRlc3QgaXNvbGF0aW9uLiAqL1xyXG5jb25zdCBhbmFseXplckNsYXNzaWZpY2F0aW9uVHJhdmVyc2FsQ29tcGFuaW9uID0gdHJ1ZSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCB7XHJcbiAgYW5hbHl6ZXJDbGFzc2lmaWNhdGlvblRyYXZlcnNhbENvbXBhbmlvbixcclxuICB2aXNpdFN0YXRlbWVudFdpdGhvdXREZWZlcnJlZEJvZGllcyxcclxufTtcclxuIl19
@@ -0,0 +1,46 @@
1
+ /** Canonical ordering used when comparing AAA phases. */
2
+ declare const aaaPhaseOrder: {
3
+ readonly Act: 1;
4
+ readonly Arrange: 0;
5
+ readonly Assert: 2;
6
+ };
7
+ /** Analyzes a supported `it` or `test` callback for AAA sections. */
8
+ declare const analyzeTestBlock: (context: import("eslint").Rule.RuleContext, node: import("estree").CallExpression) => import("./types.js").TestBlockAnalysis | undefined;
9
+ /** Counts statement forms that should be treated as Act steps. */
10
+ declare const countActStatements: (analysis: import("./types.js").TestBlockAnalysis) => number;
11
+ /** Collects identifiers declared inside Assert sections. */
12
+ declare const getAssertDeclaredIdentifiers: (analysis: import("./types.js").TestBlockAnalysis) => Map<string, import("./types.js").LocatedNode<import("estree").Identifier>>;
13
+ /** Extracts `actual` and `expected` identifiers from assertion statements. */
14
+ declare const getAssertionIdentifiers: (statement: import("estree").Statement) => import("./analyzer.assertions.helpers.js").AssertionIdentifiers;
15
+ /** Flattens section comments into one entry per resolved phase. */
16
+ declare const getFlattenedSections: (analysis: Pick<import("./types.js").TestBlockAnalysis, "sectionComments">) => import("./analyzer.analysis.helpers.js").FlattenedSection[];
17
+ /** Returns the indentation prefix that appears before a given offset. */
18
+ declare const getIndentationAtOffset: (sourceText: string, offset: number) => string;
19
+ /** Resolves the starting range for a specific source line. */
20
+ declare const getLineStartRange: (sourceText: string, line: number) => [number, number];
21
+ /** Filters section comments down to phase boundaries that matter after Arrange. */
22
+ declare const getPhaseBoundaryComments: (analysis: Pick<import("./types.js").TestBlockAnalysis, "sectionComments">) => import("./types.js").SectionComment[];
23
+ /** Parses AAA phases from a section comment value. */
24
+ declare const getSectionPhases: (commentValue: string) => import("./types.js").AaaPhase[];
25
+ /** Detects whether a statement contains any assertion call. */
26
+ declare const hasAssertion: (statement: import("estree").Statement) => boolean;
27
+ /** Detects asynchronous behavior such as awaits, promise chains, and promises. */
28
+ declare const hasAsyncLogic: (statement: import("estree").Statement) => boolean;
29
+ /** Detects whether a statement contains an `await` expression. */
30
+ declare const hasAwait: (statement: import("estree").Statement) => boolean;
31
+ /** Checks whether a section comment is separated by a blank line. */
32
+ declare const hasBlankLineBeforeComment: (sourceText: string, comment: import("estree").Comment) => boolean;
33
+ /** Detects Act expressions whose result should usually be captured. */
34
+ declare const hasCapturableActResult: (statement: import("estree").Statement) => boolean;
35
+ /** Detects mutation-oriented statements and array mutator calls. */
36
+ declare const hasMutation: (statement: import("estree").Statement) => boolean;
37
+ /** Detects statements that represent meaningful Act steps. */
38
+ declare const isMeaningfulActStatement: (statement: import("estree").Statement) => boolean;
39
+ /** Detects statements that should stay in Arrange as setup helpers. */
40
+ declare const isSetupLikeStatement: (statement: import("estree").Statement) => boolean;
41
+ /** Detects whether a statement shape is valid inside Assert. */
42
+ declare const isValidAssertStatement: (statement: import("estree").Statement) => boolean;
43
+ /** Checks whether an identifier matches the expected AAA naming prefix. */
44
+ declare const usesPrefix: (name: string, prefix: "actual" | "expected") => boolean;
45
+ export { aaaPhaseOrder, analyzeTestBlock, countActStatements, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getFlattenedSections, getIndentationAtOffset, getLineStartRange, getPhaseBoundaryComments, getSectionPhases, hasAssertion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, isValidAssertStatement, usesPrefix, };
46
+ //# sourceMappingURL=analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.ts"],"names":[],"mappings":"AA2BA,yDAAyD;AACzD,QAAA,MAAM,aAAa;;;;CAA8B,CAAC;AAmBlD,qEAAqE;AACrE,QAAA,MAAM,gBAAgB,wIAA0C,CAAC;AAEjE,kEAAkE;AAClE,QAAA,MAAM,kBAAkB,2DAA4C,CAAC;AAErE,4DAA4D;AAC5D,QAAA,MAAM,4BAA4B,4HAEjC,CAAC;AAEF,8EAA8E;AAC9E,QAAA,MAAM,uBAAuB,yGAAiD,CAAC;AAE/E,mEAAmE;AACnE,QAAA,MAAM,oBAAoB,sIAA8C,CAAC;AAEzE,yEAAyE;AACzE,QAAA,MAAM,sBAAsB,gDAAgD,CAAC;AAE7E,8DAA8D;AAC9D,QAAA,MAAM,iBAAiB,wDAA2C,CAAC;AAEnE,mFAAmF;AACnF,QAAA,MAAM,wBAAwB,gHAE7B,CAAC;AAEF,sDAAsD;AACtD,QAAA,MAAM,gBAAgB,wDAA0C,CAAC;AAEjE,+DAA+D;AAC/D,QAAA,MAAM,YAAY,oDAAsC,CAAC;AAEzD,kFAAkF;AAClF,QAAA,MAAM,aAAa,oDAAuC,CAAC;AAE3D,kEAAkE;AAClE,QAAA,MAAM,QAAQ,oDAAkC,CAAC;AAEjD,qEAAqE;AACrE,QAAA,MAAM,yBAAyB,oEAE9B,CAAC;AAEF,uEAAuE;AACvE,QAAA,MAAM,sBAAsB,oDAAgD,CAAC;AAE7E,oEAAoE;AACpE,QAAA,MAAM,WAAW,oDAAqC,CAAC;AAEvD,8DAA8D;AAC9D,QAAA,MAAM,wBAAwB,oDAE7B,CAAC;AAEF,uEAAuE;AACvE,QAAA,MAAM,oBAAoB,oDAA8C,CAAC;AAEzE,gEAAgE;AAChE,QAAA,MAAM,sBAAsB,oDAAgD,CAAC;AAE7E,2EAA2E;AAC3E,QAAA,MAAM,UAAU,0DAAoC,CAAC;AAErD,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,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { aaaPhaseOrder as aaaPhaseOrderImplementation, analyzeTestBlock as analyzeTestBlockImplementation, countActStatements as countActStatementsImplementation, getFlattenedSections as getFlattenedSectionsImplementation, getIndentationAtOffset as getIndentationAtOffsetImplementation, getLineStartRange as getLineStartRangeImplementation, getPhaseBoundaryComments as getPhaseBoundaryCommentsImplementation, getSectionPhases as getSectionPhasesImplementation, } from "./analyzer.analysis.js";
2
+ import { getAssertDeclaredIdentifiers as getAssertDeclaredIdentifiersImplementation, getAssertionIdentifiers as getAssertionIdentifiersImplementation, hasAssertion as hasAssertionImplementation, isValidAssertStatement as isValidAssertStatementImplementation, usesPrefix as usesPrefixImplementation, } from "./analyzer.assertions.js";
3
+ import { hasAsyncLogic as hasAsyncLogicImplementation, hasAwait as hasAwaitImplementation, hasBlankLineBeforeComment as hasBlankLineBeforeCommentImplementation, hasCapturableActResult as hasCapturableActResultImplementation, hasMutation as hasMutationImplementation, isMeaningfulActStatement as isMeaningfulActStatementImplementation, isSetupLikeStatement as isSetupLikeStatementImplementation, } from "./analyzer.classification.js";
4
+ /** Canonical ordering used when comparing AAA phases. */
5
+ const aaaPhaseOrder = aaaPhaseOrderImplementation;
6
+ /**
7
+ * Creates a local forwarding function for an imported analyzer helper.
8
+ * @template TParameters Forwarded parameter tuple.
9
+ * @template TResult Forwarded return type.
10
+ * @param implementation Imported helper implementation.
11
+ * @returns Local function that forwards all arguments to the implementation.
12
+ * @example
13
+ * ```typescript
14
+ * const localHelper = forward(implementation);
15
+ * ```
16
+ */
17
+ function forward(implementation) {
18
+ return (...parameters) => implementation(...parameters);
19
+ }
20
+ /** Analyzes a supported `it` or `test` callback for AAA sections. */
21
+ const analyzeTestBlock = forward(analyzeTestBlockImplementation);
22
+ /** Counts statement forms that should be treated as Act steps. */
23
+ const countActStatements = forward(countActStatementsImplementation);
24
+ /** Collects identifiers declared inside Assert sections. */
25
+ const getAssertDeclaredIdentifiers = forward(getAssertDeclaredIdentifiersImplementation);
26
+ /** Extracts `actual` and `expected` identifiers from assertion statements. */
27
+ const getAssertionIdentifiers = forward(getAssertionIdentifiersImplementation);
28
+ /** Flattens section comments into one entry per resolved phase. */
29
+ const getFlattenedSections = forward(getFlattenedSectionsImplementation);
30
+ /** Returns the indentation prefix that appears before a given offset. */
31
+ const getIndentationAtOffset = forward(getIndentationAtOffsetImplementation);
32
+ /** Resolves the starting range for a specific source line. */
33
+ const getLineStartRange = forward(getLineStartRangeImplementation);
34
+ /** Filters section comments down to phase boundaries that matter after Arrange. */
35
+ const getPhaseBoundaryComments = forward(getPhaseBoundaryCommentsImplementation);
36
+ /** Parses AAA phases from a section comment value. */
37
+ const getSectionPhases = forward(getSectionPhasesImplementation);
38
+ /** Detects whether a statement contains any assertion call. */
39
+ const hasAssertion = forward(hasAssertionImplementation);
40
+ /** Detects asynchronous behavior such as awaits, promise chains, and promises. */
41
+ const hasAsyncLogic = forward(hasAsyncLogicImplementation);
42
+ /** Detects whether a statement contains an `await` expression. */
43
+ const hasAwait = forward(hasAwaitImplementation);
44
+ /** Checks whether a section comment is separated by a blank line. */
45
+ const hasBlankLineBeforeComment = forward(hasBlankLineBeforeCommentImplementation);
46
+ /** Detects Act expressions whose result should usually be captured. */
47
+ const hasCapturableActResult = forward(hasCapturableActResultImplementation);
48
+ /** Detects mutation-oriented statements and array mutator calls. */
49
+ const hasMutation = forward(hasMutationImplementation);
50
+ /** Detects statements that represent meaningful Act steps. */
51
+ const isMeaningfulActStatement = forward(isMeaningfulActStatementImplementation);
52
+ /** Detects statements that should stay in Arrange as setup helpers. */
53
+ const isSetupLikeStatement = forward(isSetupLikeStatementImplementation);
54
+ /** Detects whether a statement shape is valid inside Assert. */
55
+ const isValidAssertStatement = forward(isValidAssertStatementImplementation);
56
+ /** Checks whether an identifier matches the expected AAA naming prefix. */
57
+ const usesPrefix = forward(usesPrefixImplementation);
58
+ export { aaaPhaseOrder, analyzeTestBlock, countActStatements, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getFlattenedSections, getIndentationAtOffset, getLineStartRange, getPhaseBoundaryComments, getSectionPhases, hasAssertion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, isValidAssertStatement, usesPrefix, };
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL2FuYWx5emVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLElBQUksMkJBQTJCLEVBQzVDLGdCQUFnQixJQUFJLDhCQUE4QixFQUNsRCxrQkFBa0IsSUFBSSxnQ0FBZ0MsRUFDdEQsb0JBQW9CLElBQUksa0NBQWtDLEVBQzFELHNCQUFzQixJQUFJLG9DQUFvQyxFQUM5RCxpQkFBaUIsSUFBSSwrQkFBK0IsRUFDcEQsd0JBQXdCLElBQUksc0NBQXNDLEVBQ2xFLGdCQUFnQixJQUFJLDhCQUE4QixHQUNuRCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCw0QkFBNEIsSUFBSSwwQ0FBMEMsRUFDMUUsdUJBQXVCLElBQUkscUNBQXFDLEVBQ2hFLFlBQVksSUFBSSwwQkFBMEIsRUFDMUMsc0JBQXNCLElBQUksb0NBQW9DLEVBQzlELFVBQVUsSUFBSSx3QkFBd0IsR0FDdkMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQ0wsYUFBYSxJQUFJLDJCQUEyQixFQUM1QyxRQUFRLElBQUksc0JBQXNCLEVBQ2xDLHlCQUF5QixJQUFJLHVDQUF1QyxFQUNwRSxzQkFBc0IsSUFBSSxvQ0FBb0MsRUFDOUQsV0FBVyxJQUFJLHlCQUF5QixFQUN4Qyx3QkFBd0IsSUFBSSxzQ0FBc0MsRUFDbEUsb0JBQW9CLElBQUksa0NBQWtDLEdBQzNELE1BQU0sMkJBQTJCLENBQUM7QUFFbkMseURBQXlEO0FBQ3pELE1BQU0sYUFBYSxHQUFHLDJCQUEyQixDQUFDO0FBRWxEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFTLE9BQU8sQ0FDZCxjQUF1RDtJQUV2RCxPQUFPLENBQUMsR0FBRyxVQUFVLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxxRUFBcUU7QUFDckUsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUVqRSxrRUFBa0U7QUFDbEUsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQUVyRSw0REFBNEQ7QUFDNUQsTUFBTSw0QkFBNEIsR0FBRyxPQUFPLENBQzFDLDBDQUEwQyxDQUMzQyxDQUFDO0FBRUYsOEVBQThFO0FBQzlFLE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFFL0UsbUVBQW1FO0FBQ25FLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFFekUseUVBQXlFO0FBQ3pFLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFFN0UsOERBQThEO0FBQzlELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFFbkUsbUZBQW1GO0FBQ25GLE1BQU0sd0JBQXdCLEdBQUcsT0FBTyxDQUN0QyxzQ0FBc0MsQ0FDdkMsQ0FBQztBQUVGLHNEQUFzRDtBQUN0RCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBRWpFLCtEQUErRDtBQUMvRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUV6RCxrRkFBa0Y7QUFDbEYsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFM0Qsa0VBQWtFO0FBQ2xFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRWpELHFFQUFxRTtBQUNyRSxNQUFNLHlCQUF5QixHQUFHLE9BQU8sQ0FDdkMsdUNBQXVDLENBQ3hDLENBQUM7QUFFRix1RUFBdUU7QUFDdkUsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUU3RSxvRUFBb0U7QUFDcEUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFdkQsOERBQThEO0FBQzlELE1BQU0sd0JBQXdCLEdBQUcsT0FBTyxDQUN0QyxzQ0FBc0MsQ0FDdkMsQ0FBQztBQUVGLHVFQUF1RTtBQUN2RSxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0FBRXpFLGdFQUFnRTtBQUNoRSxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0FBRTdFLDJFQUEyRTtBQUMzRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsNEJBQTRCLEVBQzVCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixhQUFhLEVBQ2IsUUFBUSxFQUNSLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLFVBQVUsR0FDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWFhUGhhc2VPcmRlciBhcyBhYWFQaGFzZU9yZGVySW1wbGVtZW50YXRpb24sXG4gIGFuYWx5emVUZXN0QmxvY2sgYXMgYW5hbHl6ZVRlc3RCbG9ja0ltcGxlbWVudGF0aW9uLFxuICBjb3VudEFjdFN0YXRlbWVudHMgYXMgY291bnRBY3RTdGF0ZW1lbnRzSW1wbGVtZW50YXRpb24sXG4gIGdldEZsYXR0ZW5lZFNlY3Rpb25zIGFzIGdldEZsYXR0ZW5lZFNlY3Rpb25zSW1wbGVtZW50YXRpb24sXG4gIGdldEluZGVudGF0aW9uQXRPZmZzZXQgYXMgZ2V0SW5kZW50YXRpb25BdE9mZnNldEltcGxlbWVudGF0aW9uLFxuICBnZXRMaW5lU3RhcnRSYW5nZSBhcyBnZXRMaW5lU3RhcnRSYW5nZUltcGxlbWVudGF0aW9uLFxuICBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHMgYXMgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzSW1wbGVtZW50YXRpb24sXG4gIGdldFNlY3Rpb25QaGFzZXMgYXMgZ2V0U2VjdGlvblBoYXNlc0ltcGxlbWVudGF0aW9uLFxufSBmcm9tIFwiLi9hbmFseXplci5hbmFseXNpc1wiO1xuaW1wb3J0IHtcbiAgZ2V0QXNzZXJ0RGVjbGFyZWRJZGVudGlmaWVycyBhcyBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzSW1wbGVtZW50YXRpb24sXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzIGFzIGdldEFzc2VydGlvbklkZW50aWZpZXJzSW1wbGVtZW50YXRpb24sXG4gIGhhc0Fzc2VydGlvbiBhcyBoYXNBc3NlcnRpb25JbXBsZW1lbnRhdGlvbixcbiAgaXNWYWxpZEFzc2VydFN0YXRlbWVudCBhcyBpc1ZhbGlkQXNzZXJ0U3RhdGVtZW50SW1wbGVtZW50YXRpb24sXG4gIHVzZXNQcmVmaXggYXMgdXNlc1ByZWZpeEltcGxlbWVudGF0aW9uLFxufSBmcm9tIFwiLi9hbmFseXplci5hc3NlcnRpb25zXCI7XG5pbXBvcnQge1xuICBoYXNBc3luY0xvZ2ljIGFzIGhhc0FzeW5jTG9naWNJbXBsZW1lbnRhdGlvbixcbiAgaGFzQXdhaXQgYXMgaGFzQXdhaXRJbXBsZW1lbnRhdGlvbixcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCBhcyBoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50SW1wbGVtZW50YXRpb24sXG4gIGhhc0NhcHR1cmFibGVBY3RSZXN1bHQgYXMgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdEltcGxlbWVudGF0aW9uLFxuICBoYXNNdXRhdGlvbiBhcyBoYXNNdXRhdGlvbkltcGxlbWVudGF0aW9uLFxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQgYXMgaXNNZWFuaW5nZnVsQWN0U3RhdGVtZW50SW1wbGVtZW50YXRpb24sXG4gIGlzU2V0dXBMaWtlU3RhdGVtZW50IGFzIGlzU2V0dXBMaWtlU3RhdGVtZW50SW1wbGVtZW50YXRpb24sXG59IGZyb20gXCIuL2FuYWx5emVyLmNsYXNzaWZpY2F0aW9uXCI7XG5cbi8qKiBDYW5vbmljYWwgb3JkZXJpbmcgdXNlZCB3aGVuIGNvbXBhcmluZyBBQUEgcGhhc2VzLiAqL1xuY29uc3QgYWFhUGhhc2VPcmRlciA9IGFhYVBoYXNlT3JkZXJJbXBsZW1lbnRhdGlvbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbG9jYWwgZm9yd2FyZGluZyBmdW5jdGlvbiBmb3IgYW4gaW1wb3J0ZWQgYW5hbHl6ZXIgaGVscGVyLlxuICogQHRlbXBsYXRlIFRQYXJhbWV0ZXJzIEZvcndhcmRlZCBwYXJhbWV0ZXIgdHVwbGUuXG4gKiBAdGVtcGxhdGUgVFJlc3VsdCBGb3J3YXJkZWQgcmV0dXJuIHR5cGUuXG4gKiBAcGFyYW0gaW1wbGVtZW50YXRpb24gSW1wb3J0ZWQgaGVscGVyIGltcGxlbWVudGF0aW9uLlxuICogQHJldHVybnMgTG9jYWwgZnVuY3Rpb24gdGhhdCBmb3J3YXJkcyBhbGwgYXJndW1lbnRzIHRvIHRoZSBpbXBsZW1lbnRhdGlvbi5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsb2NhbEhlbHBlciA9IGZvcndhcmQoaW1wbGVtZW50YXRpb24pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGZvcndhcmQ8VFBhcmFtZXRlcnMgZXh0ZW5kcyB1bmtub3duW10sIFRSZXN1bHQ+KFxuICBpbXBsZW1lbnRhdGlvbjogKC4uLnBhcmFtZXRlcnM6IFRQYXJhbWV0ZXJzKSA9PiBUUmVzdWx0LFxuKTogKC4uLnBhcmFtZXRlcnM6IFRQYXJhbWV0ZXJzKSA9PiBUUmVzdWx0IHtcbiAgcmV0dXJuICguLi5wYXJhbWV0ZXJzKSA9PiBpbXBsZW1lbnRhdGlvbiguLi5wYXJhbWV0ZXJzKTtcbn1cblxuLyoqIEFuYWx5emVzIGEgc3VwcG9ydGVkIGBpdGAgb3IgYHRlc3RgIGNhbGxiYWNrIGZvciBBQUEgc2VjdGlvbnMuICovXG5jb25zdCBhbmFseXplVGVzdEJsb2NrID0gZm9yd2FyZChhbmFseXplVGVzdEJsb2NrSW1wbGVtZW50YXRpb24pO1xuXG4vKiogQ291bnRzIHN0YXRlbWVudCBmb3JtcyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIGFzIEFjdCBzdGVwcy4gKi9cbmNvbnN0IGNvdW50QWN0U3RhdGVtZW50cyA9IGZvcndhcmQoY291bnRBY3RTdGF0ZW1lbnRzSW1wbGVtZW50YXRpb24pO1xuXG4vKiogQ29sbGVjdHMgaWRlbnRpZmllcnMgZGVjbGFyZWQgaW5zaWRlIEFzc2VydCBzZWN0aW9ucy4gKi9cbmNvbnN0IGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMgPSBmb3J3YXJkKFxuICBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzSW1wbGVtZW50YXRpb24sXG4pO1xuXG4vKiogRXh0cmFjdHMgYGFjdHVhbGAgYW5kIGBleHBlY3RlZGAgaWRlbnRpZmllcnMgZnJvbSBhc3NlcnRpb24gc3RhdGVtZW50cy4gKi9cbmNvbnN0IGdldEFzc2VydGlvbklkZW50aWZpZXJzID0gZm9yd2FyZChnZXRBc3NlcnRpb25JZGVudGlmaWVyc0ltcGxlbWVudGF0aW9uKTtcblxuLyoqIEZsYXR0ZW5zIHNlY3Rpb24gY29tbWVudHMgaW50byBvbmUgZW50cnkgcGVyIHJlc29sdmVkIHBoYXNlLiAqL1xuY29uc3QgZ2V0RmxhdHRlbmVkU2VjdGlvbnMgPSBmb3J3YXJkKGdldEZsYXR0ZW5lZFNlY3Rpb25zSW1wbGVtZW50YXRpb24pO1xuXG4vKiogUmV0dXJucyB0aGUgaW5kZW50YXRpb24gcHJlZml4IHRoYXQgYXBwZWFycyBiZWZvcmUgYSBnaXZlbiBvZmZzZXQuICovXG5jb25zdCBnZXRJbmRlbnRhdGlvbkF0T2Zmc2V0ID0gZm9yd2FyZChnZXRJbmRlbnRhdGlvbkF0T2Zmc2V0SW1wbGVtZW50YXRpb24pO1xuXG4vKiogUmVzb2x2ZXMgdGhlIHN0YXJ0aW5nIHJhbmdlIGZvciBhIHNwZWNpZmljIHNvdXJjZSBsaW5lLiAqL1xuY29uc3QgZ2V0TGluZVN0YXJ0UmFuZ2UgPSBmb3J3YXJkKGdldExpbmVTdGFydFJhbmdlSW1wbGVtZW50YXRpb24pO1xuXG4vKiogRmlsdGVycyBzZWN0aW9uIGNvbW1lbnRzIGRvd24gdG8gcGhhc2UgYm91bmRhcmllcyB0aGF0IG1hdHRlciBhZnRlciBBcnJhbmdlLiAqL1xuY29uc3QgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzID0gZm9yd2FyZChcbiAgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzSW1wbGVtZW50YXRpb24sXG4pO1xuXG4vKiogUGFyc2VzIEFBQSBwaGFzZXMgZnJvbSBhIHNlY3Rpb24gY29tbWVudCB2YWx1ZS4gKi9cbmNvbnN0IGdldFNlY3Rpb25QaGFzZXMgPSBmb3J3YXJkKGdldFNlY3Rpb25QaGFzZXNJbXBsZW1lbnRhdGlvbik7XG5cbi8qKiBEZXRlY3RzIHdoZXRoZXIgYSBzdGF0ZW1lbnQgY29udGFpbnMgYW55IGFzc2VydGlvbiBjYWxsLiAqL1xuY29uc3QgaGFzQXNzZXJ0aW9uID0gZm9yd2FyZChoYXNBc3NlcnRpb25JbXBsZW1lbnRhdGlvbik7XG5cbi8qKiBEZXRlY3RzIGFzeW5jaHJvbm91cyBiZWhhdmlvciBzdWNoIGFzIGF3YWl0cywgcHJvbWlzZSBjaGFpbnMsIGFuZCBwcm9taXNlcy4gKi9cbmNvbnN0IGhhc0FzeW5jTG9naWMgPSBmb3J3YXJkKGhhc0FzeW5jTG9naWNJbXBsZW1lbnRhdGlvbik7XG5cbi8qKiBEZXRlY3RzIHdoZXRoZXIgYSBzdGF0ZW1lbnQgY29udGFpbnMgYW4gYGF3YWl0YCBleHByZXNzaW9uLiAqL1xuY29uc3QgaGFzQXdhaXQgPSBmb3J3YXJkKGhhc0F3YWl0SW1wbGVtZW50YXRpb24pO1xuXG4vKiogQ2hlY2tzIHdoZXRoZXIgYSBzZWN0aW9uIGNvbW1lbnQgaXMgc2VwYXJhdGVkIGJ5IGEgYmxhbmsgbGluZS4gKi9cbmNvbnN0IGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQgPSBmb3J3YXJkKFxuICBoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50SW1wbGVtZW50YXRpb24sXG4pO1xuXG4vKiogRGV0ZWN0cyBBY3QgZXhwcmVzc2lvbnMgd2hvc2UgcmVzdWx0IHNob3VsZCB1c3VhbGx5IGJlIGNhcHR1cmVkLiAqL1xuY29uc3QgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCA9IGZvcndhcmQoaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdEltcGxlbWVudGF0aW9uKTtcblxuLyoqIERldGVjdHMgbXV0YXRpb24tb3JpZW50ZWQgc3RhdGVtZW50cyBhbmQgYXJyYXkgbXV0YXRvciBjYWxscy4gKi9cbmNvbnN0IGhhc011dGF0aW9uID0gZm9yd2FyZChoYXNNdXRhdGlvbkltcGxlbWVudGF0aW9uKTtcblxuLyoqIERldGVjdHMgc3RhdGVtZW50cyB0aGF0IHJlcHJlc2VudCBtZWFuaW5nZnVsIEFjdCBzdGVwcy4gKi9cbmNvbnN0IGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudCA9IGZvcndhcmQoXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudEltcGxlbWVudGF0aW9uLFxuKTtcblxuLyoqIERldGVjdHMgc3RhdGVtZW50cyB0aGF0IHNob3VsZCBzdGF5IGluIEFycmFuZ2UgYXMgc2V0dXAgaGVscGVycy4gKi9cbmNvbnN0IGlzU2V0dXBMaWtlU3RhdGVtZW50ID0gZm9yd2FyZChpc1NldHVwTGlrZVN0YXRlbWVudEltcGxlbWVudGF0aW9uKTtcblxuLyoqIERldGVjdHMgd2hldGhlciBhIHN0YXRlbWVudCBzaGFwZSBpcyB2YWxpZCBpbnNpZGUgQXNzZXJ0LiAqL1xuY29uc3QgaXNWYWxpZEFzc2VydFN0YXRlbWVudCA9IGZvcndhcmQoaXNWYWxpZEFzc2VydFN0YXRlbWVudEltcGxlbWVudGF0aW9uKTtcblxuLyoqIENoZWNrcyB3aGV0aGVyIGFuIGlkZW50aWZpZXIgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgQUFBIG5hbWluZyBwcmVmaXguICovXG5jb25zdCB1c2VzUHJlZml4ID0gZm9yd2FyZCh1c2VzUHJlZml4SW1wbGVtZW50YXRpb24pO1xuXG5leHBvcnQge1xuICBhYWFQaGFzZU9yZGVyLFxuICBhbmFseXplVGVzdEJsb2NrLFxuICBjb3VudEFjdFN0YXRlbWVudHMsXG4gIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMsXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzLFxuICBnZXRGbGF0dGVuZWRTZWN0aW9ucyxcbiAgZ2V0SW5kZW50YXRpb25BdE9mZnNldCxcbiAgZ2V0TGluZVN0YXJ0UmFuZ2UsXG4gIGdldFBoYXNlQm91bmRhcnlDb21tZW50cyxcbiAgZ2V0U2VjdGlvblBoYXNlcyxcbiAgaGFzQXNzZXJ0aW9uLFxuICBoYXNBc3luY0xvZ2ljLFxuICBoYXNBd2FpdCxcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCxcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCxcbiAgaGFzTXV0YXRpb24sXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudCxcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXG4gIGlzVmFsaWRBc3NlcnRTdGF0ZW1lbnQsXG4gIHVzZXNQcmVmaXgsXG59O1xuIl19
@@ -0,0 +1,106 @@
1
+ import type * as ESTree from "estree";
2
+ import type { LocatedComment, SourceComment } from "./types.js";
3
+ /** Visits an ESTree node graph while ignoring cycles. */
4
+ declare const visitNode: (node: ESTree.Node, callback: (node: ESTree.Node) => boolean | undefined, seenNodes?: WeakSet<object> | undefined) => void;
5
+ /** Array mutator methods that imply observable state changes. */
6
+ declare const arrayMutationMethods: Set<string>;
7
+ /** Names that usually signal Arrange-oriented helper calls. */
8
+ declare const setupLikeNames: RegExp;
9
+ /** Call names that should be treated as utility operations instead of Act steps. */
10
+ declare const utilityMethodNames: Set<string>;
11
+ /** Method names that usually behave like void side-effect helpers. */
12
+ declare const voidLikeMethodNames: Set<string>;
13
+ /**
14
+ * Gets an expression name when it can be resolved statically.
15
+ * @param expression Input expression value.
16
+ * @returns Return value output.
17
+ * @example
18
+ * ```typescript
19
+ * getExpressionName(expression);
20
+ * ```
21
+ */
22
+ declare function getExpressionName(expression: ESTree.Expression | ESTree.PrivateIdentifier | ESTree.Super): string | undefined;
23
+ /**
24
+ * Gets a callee name for a call or construction expression.
25
+ * @param expression Input expression value.
26
+ * @returns Return value output.
27
+ * @example
28
+ * ```typescript
29
+ * getInvokedName(expression);
30
+ * ```
31
+ */
32
+ declare function getInvokedName(expression: ESTree.CallExpression | ESTree.NewExpression): string | undefined;
33
+ /**
34
+ * Checks whether an expression is callable.
35
+ * @param expression Input expression value.
36
+ * @returns Return value output.
37
+ * @example
38
+ * ```typescript
39
+ * isCallableExpression(expression);
40
+ * ```
41
+ */
42
+ declare function isCallableExpression(expression: ESTree.Expression | undefined): expression is ESTree.CallExpression | ESTree.NewExpression;
43
+ /**
44
+ * Checks whether a comment has location metadata.
45
+ * @param comment Input comment value.
46
+ * @returns Return value output.
47
+ * @example
48
+ * ```typescript
49
+ * isLocatedComment(comment);
50
+ * ```
51
+ */
52
+ declare function isLocatedComment(comment: SourceComment): comment is LocatedComment;
53
+ /**
54
+ * Checks whether a range is fully contained within another range.
55
+ * @param range Input range value.
56
+ * @param container Input container value.
57
+ * @returns Return value output.
58
+ * @example
59
+ * ```typescript
60
+ * isRangeWithin(range, container);
61
+ * ```
62
+ */
63
+ declare function isRangeWithin(range: [number, number], container: [number, number]): boolean;
64
+ /**
65
+ * Checks whether a constructor call should be treated as setup.
66
+ * @param expression Input expression value.
67
+ * @param calleeName Input calleeName value.
68
+ * @returns Return value output.
69
+ * @example
70
+ * ```typescript
71
+ * isUtilityConstructor(expression, "Map");
72
+ * ```
73
+ */
74
+ declare function isUtilityConstructor(expression: ESTree.CallExpression | ESTree.NewExpression, calleeName: string): boolean;
75
+ /**
76
+ * Checks whether a callee name looks utility-like.
77
+ * @param calleeName Input calleeName value.
78
+ * @returns Return value output.
79
+ * @example
80
+ * ```typescript
81
+ * isUtilityNamedCall("setupFixture");
82
+ * ```
83
+ */
84
+ declare function isUtilityNamedCall(calleeName: string): boolean;
85
+ /**
86
+ * Checks whether a call uses a utility namespace.
87
+ * @param expression Input expression value.
88
+ * @returns Return value output.
89
+ * @example
90
+ * ```typescript
91
+ * isUtilityNamespaceCall(expression);
92
+ * ```
93
+ */
94
+ declare function isUtilityNamespaceCall(expression: ESTree.CallExpression | ESTree.NewExpression): boolean;
95
+ /**
96
+ * Checks whether a call name is built from void-like verb tokens.
97
+ * @param calleeName Input calleeName value.
98
+ * @returns Return value output.
99
+ * @example
100
+ * ```typescript
101
+ * isVoidLikeMethodName("scheduleAndFlush");
102
+ * ```
103
+ */
104
+ declare function isVoidLikeMethodName(calleeName: string): boolean;
105
+ export { arrayMutationMethods, getExpressionName, getInvokedName, isCallableExpression, isLocatedComment, isRangeWithin, isUtilityConstructor, isUtilityNamedCall, isUtilityNamespaceCall, isVoidLikeMethodName, setupLikeNames, utilityMethodNames, visitNode, voidLikeMethodNames, };
106
+ //# sourceMappingURL=analyzer.super.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.super.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.super.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAqB7D,yDAAyD;AACzD,QAAA,MAAM,SAAS,4HAAmC,CAAC;AAEnD,iEAAiE;AACjE,QAAA,MAAM,oBAAoB,aAUxB,CAAC;AAEH,+DAA+D;AAC/D,QAAA,MAAM,cAAc,QACsE,CAAC;AAE3F,oFAAoF;AACpF,QAAA,MAAM,kBAAkB,aAiBtB,CAAC;AAEH,sEAAsE;AACtE,QAAA,MAAM,mBAAmB,aAcvB,CAAC;AAEH;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CACxB,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,KAAK,GACtE,MAAM,GAAG,SAAS,CAiBpB;AAED;;;;;;;;GAQG;AACH,iBAAS,cAAc,CACrB,UAAU,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,GACvD,MAAM,GAAG,SAAS,CAEpB;AAkBD;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAC3B,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GACxC,UAAU,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAK5D;AAED;;;;;;;;GAQG;AACH,iBAAS,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,IAAI,cAAc,CAI3E;AAED;;;;;;;;;GASG;AACH,iBAAS,aAAa,CACpB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACvB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAET;AAED;;;;;;;;;GASG;AACH,iBAAS,oBAAoB,CAC3B,UAAU,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,EACxD,UAAU,EAAE,MAAM,GACjB,OAAO,CAST;AAED;;;;;;;;GAQG;AACH,iBAAS,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;;;;GAQG;AACH,iBAAS,sBAAsB,CAC7B,UAAU,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,GACvD,OAAO,CAMT;AAED;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,mBAAmB,GACpB,CAAC"}