@codeperfect/eslint-plugin 1.0.0 → 2.0.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 (557) 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 +140 -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 +85 -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 +43 -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 +219 -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 +145 -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} +1 -1
  84. package/dist/domain/custom-rule-documentation.d.ts.map +1 -0
  85. package/dist/domain/custom-rule-documentation.js +35 -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 +168 -0
  105. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
  106. package/dist/domain/docs/no-interface-member-docs/test-helpers.js +157 -0
  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 +34 -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.map +1 -0
  137. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +4 -0
  138. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +1 -0
  139. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +5 -0
  140. package/dist/domain/docs/single-line-jsdoc/rule.js +196 -0
  141. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +4 -0
  142. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +1 -0
  143. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +5 -0
  144. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
  145. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
  146. package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +1 -1
  147. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
  148. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
  149. package/dist/domain/docs/test-helpers.d.ts.map +1 -0
  150. package/dist/domain/docs/test-helpers.js +107 -0
  151. package/dist/domain/index.d.ts +6 -0
  152. package/dist/domain/index.d.ts.map +1 -0
  153. package/dist/domain/index.js +6 -0
  154. package/dist/domain/testing/aaa/analyzer.analysis.d.ts +92 -0
  155. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -0
  156. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +4 -0
  157. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -0
  158. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +4 -0
  159. package/dist/domain/testing/aaa/analyzer.analysis.js +247 -0
  160. package/dist/domain/testing/aaa/analyzer.assertions.d.ts +93 -0
  161. package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -0
  162. package/dist/domain/testing/aaa/analyzer.assertions.js +283 -0
  163. package/dist/domain/testing/aaa/analyzer.classification.d.ts +75 -0
  164. package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -0
  165. package/dist/domain/testing/aaa/analyzer.classification.js +201 -0
  166. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +9 -0
  167. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +1 -0
  168. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +10 -0
  169. package/dist/domain/testing/aaa/analyzer.d.ts +46 -0
  170. package/dist/domain/testing/aaa/analyzer.d.ts.map +1 -0
  171. package/dist/domain/testing/aaa/analyzer.js +59 -0
  172. package/dist/domain/testing/aaa/analyzer.super.d.ts +107 -0
  173. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -0
  174. package/dist/domain/testing/aaa/analyzer.super.js +228 -0
  175. package/dist/{testing → domain/testing}/aaa/index.d.ts +2 -2
  176. package/dist/domain/testing/aaa/index.d.ts.map +1 -0
  177. package/dist/domain/testing/aaa/index.js +2 -0
  178. package/dist/domain/testing/aaa/types.d.ts +58 -0
  179. package/dist/domain/testing/aaa/types.d.ts.map +1 -0
  180. package/dist/domain/testing/aaa/types.js +2 -0
  181. package/dist/domain/testing/assert-actual-expected-names/index.d.ts +2 -0
  182. package/dist/domain/testing/assert-actual-expected-names/index.d.ts.map +1 -0
  183. package/dist/domain/testing/assert-actual-expected-names/index.js +2 -0
  184. package/dist/{testing → domain/testing}/assert-actual-expected-names/rule.d.ts +1 -0
  185. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
  186. package/dist/domain/testing/assert-actual-expected-names/rule.js +113 -0
  187. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
  188. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
  189. package/dist/domain/testing/enforce-aaa-phase-purity/index.js +2 -0
  190. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts +13 -0
  191. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -0
  192. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +134 -0
  193. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +25 -0
  194. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -0
  195. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +138 -0
  196. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +4 -0
  197. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +1 -0
  198. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +4 -0
  199. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +14 -0
  200. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -0
  201. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +180 -0
  202. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +42 -0
  203. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +1 -0
  204. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +188 -0
  205. package/dist/{testing → domain/testing}/enforce-aaa-phase-purity/rule.d.ts +1 -0
  206. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
  207. package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +34 -0
  208. package/dist/domain/testing/enforce-aaa-structure/index.d.ts +2 -0
  209. package/dist/domain/testing/enforce-aaa-structure/index.d.ts.map +1 -0
  210. package/dist/domain/testing/enforce-aaa-structure/index.js +2 -0
  211. package/dist/{testing → domain/testing}/enforce-aaa-structure/rule.d.ts +1 -0
  212. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
  213. package/dist/domain/testing/enforce-aaa-structure/rule.js +85 -0
  214. package/dist/{testing → domain/testing}/index.d.ts +9 -8
  215. package/dist/domain/testing/index.d.ts.map +1 -0
  216. package/dist/domain/testing/index.js +10 -0
  217. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +29 -0
  218. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -0
  219. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +90 -0
  220. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts +31 -0
  221. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -0
  222. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +43 -0
  223. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts +16 -0
  224. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -0
  225. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +205 -0
  226. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +28 -0
  227. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
  228. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +171 -0
  229. package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts +2 -0
  230. package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
  231. package/dist/domain/testing/prefer-vi-mocked-import/index.js +2 -0
  232. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-bindings.d.ts +1 -1
  233. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
  234. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
  235. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-declarations.d.ts +2 -1
  236. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
  237. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +131 -0
  238. package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
  239. package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
  240. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-imports.d.ts +1 -1
  241. package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
  242. package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +156 -0
  243. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-rewrites.d.ts +1 -1
  244. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
  245. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
  246. package/dist/domain/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
  247. package/dist/domain/testing/prefer-vi-mocked-import/match-walk.js +62 -0
  248. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +26 -0
  249. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
  250. package/dist/domain/testing/prefer-vi-mocked-import/match.js +198 -0
  251. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +20 -0
  252. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +1 -0
  253. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +39 -0
  254. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
  255. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +36 -0
  256. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/types.d.ts +1 -1
  257. package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
  258. package/dist/domain/testing/prefer-vi-mocked-import/types.js +2 -0
  259. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +86 -0
  260. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +1 -0
  261. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +150 -0
  262. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +2 -0
  263. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +1 -0
  264. package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +2 -0
  265. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +14 -0
  266. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +1 -0
  267. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +81 -0
  268. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +13 -0
  269. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +1 -0
  270. package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +189 -0
  271. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +25 -0
  272. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +1 -0
  273. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +92 -0
  274. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +32 -0
  275. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +1 -0
  276. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +164 -0
  277. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +5 -0
  278. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +1 -0
  279. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +4 -0
  280. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +1 -0
  281. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +4 -0
  282. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +4 -0
  283. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +1 -0
  284. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +4 -0
  285. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +62 -0
  286. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +4 -0
  287. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +1 -0
  288. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +4 -0
  289. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +24 -0
  290. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +1 -0
  291. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +113 -0
  292. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +36 -0
  293. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +1 -0
  294. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +138 -0
  295. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +203 -0
  296. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +1 -0
  297. package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +2 -0
  298. package/dist/domain/testing/require-aaa-sections/index.d.ts +2 -0
  299. package/dist/domain/testing/require-aaa-sections/index.d.ts.map +1 -0
  300. package/dist/domain/testing/require-aaa-sections/index.js +2 -0
  301. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts +17 -0
  302. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +1 -0
  303. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +150 -0
  304. package/dist/{testing → domain/testing}/require-aaa-sections/rule.d.ts +1 -0
  305. package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +1 -0
  306. package/dist/domain/testing/require-aaa-sections/rule.js +129 -0
  307. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +104 -0
  308. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +1 -0
  309. package/dist/domain/testing/require-aaa-sections/rule.reporting.js +217 -0
  310. package/dist/domain/testing/require-act-result-capture/index.d.ts +2 -0
  311. package/dist/domain/testing/require-act-result-capture/index.d.ts.map +1 -0
  312. package/dist/domain/testing/require-act-result-capture/index.js +2 -0
  313. package/dist/{testing → domain/testing}/require-act-result-capture/rule.d.ts +1 -0
  314. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -0
  315. package/dist/domain/testing/require-act-result-capture/rule.js +106 -0
  316. package/dist/domain/testing/require-test-companion/index.d.ts +3 -0
  317. package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -0
  318. package/dist/domain/testing/require-test-companion/index.js +3 -0
  319. package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-listeners.d.ts +1 -1
  320. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
  321. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +145 -0
  322. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
  323. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +113 -0
  324. package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-test-helpers.d.ts +1 -1
  325. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
  326. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +184 -0
  327. package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-utilities.d.ts +1 -1
  328. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
  329. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +26 -0
  330. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -0
  331. package/dist/domain/testing/require-test-companion/rule.js +57 -0
  332. package/dist/domain/testing/require-test-companion/types.d.ts.map +1 -0
  333. package/dist/domain/testing/require-test-companion/types.js +2 -0
  334. package/dist/domain/testing/single-act-statement/index.d.ts +2 -0
  335. package/dist/domain/testing/single-act-statement/index.d.ts.map +1 -0
  336. package/dist/domain/testing/single-act-statement/index.js +2 -0
  337. package/dist/{testing → domain/testing}/single-act-statement/rule.d.ts +1 -0
  338. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -0
  339. package/dist/domain/testing/single-act-statement/rule.js +34 -0
  340. package/dist/index.d.ts +4 -5
  341. package/dist/index.d.ts.map +1 -1
  342. package/dist/index.js +3 -6
  343. package/dist/{codeperfect-plugin.d.ts → infrastructure/codeperfect-plugin.d.ts} +2 -0
  344. package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -0
  345. package/dist/infrastructure/codeperfect-plugin.js +30 -0
  346. package/dist/infrastructure/index.d.ts +5 -0
  347. package/dist/infrastructure/index.d.ts.map +1 -0
  348. package/dist/infrastructure/index.js +4 -0
  349. package/dist/infrastructure/presets.d.ts +18 -0
  350. package/dist/infrastructure/presets.d.ts.map +1 -0
  351. package/dist/infrastructure/presets.js +81 -0
  352. package/package.json +54 -27
  353. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +0 -1
  354. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +0 -131
  355. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -48
  356. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +0 -1
  357. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +0 -126
  358. package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
  359. package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -90
  360. package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +0 -1
  361. package/dist/architecture/consistent-barrel-files/exports-only-rule.js +0 -218
  362. package/dist/architecture/consistent-barrel-files/index.d.ts +0 -5
  363. package/dist/architecture/consistent-barrel-files/index.d.ts.map +0 -1
  364. package/dist/architecture/consistent-barrel-files/index.js +0 -4
  365. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +0 -1
  366. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +0 -100
  367. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
  368. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -90
  369. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +0 -1
  370. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +0 -154
  371. package/dist/architecture/consistent-barrel-files/rule.d.ts.map +0 -1
  372. package/dist/architecture/consistent-barrel-files/rule.js +0 -58
  373. package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
  374. package/dist/architecture/consistent-barrel-files/test-helpers.js +0 -229
  375. package/dist/architecture/consistent-barrel-files/types.d.ts +0 -25
  376. package/dist/architecture/consistent-barrel-files/types.d.ts.map +0 -1
  377. package/dist/architecture/consistent-barrel-files/types.js +0 -2
  378. package/dist/architecture/index.d.ts.map +0 -1
  379. package/dist/architecture/index.js +0 -2
  380. package/dist/benchmark-rules.d.ts +0 -83
  381. package/dist/benchmark-rules.d.ts.map +0 -1
  382. package/dist/benchmark-rules.js +0 -175
  383. package/dist/codeperfect-plugin.d.ts.map +0 -1
  384. package/dist/codeperfect-plugin.js +0 -29
  385. package/dist/core/index.d.ts.map +0 -1
  386. package/dist/core/index.js +0 -3
  387. package/dist/core/no-multiple-declarators/index.d.ts +0 -2
  388. package/dist/core/no-multiple-declarators/index.d.ts.map +0 -1
  389. package/dist/core/no-multiple-declarators/index.js +0 -2
  390. package/dist/core/no-multiple-declarators/rule.d.ts.map +0 -1
  391. package/dist/core/no-multiple-declarators/rule.js +0 -100
  392. package/dist/core/prefer-interface-types/index.d.ts +0 -2
  393. package/dist/core/prefer-interface-types/index.d.ts.map +0 -1
  394. package/dist/core/prefer-interface-types/index.js +0 -2
  395. package/dist/core/prefer-interface-types/rule.d.ts.map +0 -1
  396. package/dist/core/prefer-interface-types/rule.js +0 -145
  397. package/dist/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
  398. package/dist/core/prefer-interface-types/test-helpers.js +0 -116
  399. package/dist/custom-rule-documentation.d.ts.map +0 -1
  400. package/dist/custom-rule-documentation.js +0 -35
  401. package/dist/custom-rules.d.ts.map +0 -1
  402. package/dist/custom-rules.js +0 -70
  403. package/dist/docs/index.d.ts +0 -4
  404. package/dist/docs/index.d.ts.map +0 -1
  405. package/dist/docs/index.js +0 -4
  406. package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
  407. package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
  408. package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +0 -1
  409. package/dist/docs/no-interface-member-docs/comment-utilities.js +0 -146
  410. package/dist/docs/no-interface-member-docs/index.d.ts +0 -2
  411. package/dist/docs/no-interface-member-docs/index.d.ts.map +0 -1
  412. package/dist/docs/no-interface-member-docs/index.js +0 -2
  413. package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +0 -1
  414. package/dist/docs/no-interface-member-docs/parameter-tags.js +0 -101
  415. package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +0 -1
  416. package/dist/docs/no-interface-member-docs/parameter-utilities.js +0 -125
  417. package/dist/docs/no-interface-member-docs/rule.d.ts.map +0 -1
  418. package/dist/docs/no-interface-member-docs/rule.js +0 -168
  419. package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
  420. package/dist/docs/no-interface-member-docs/test-helpers.js +0 -157
  421. package/dist/docs/no-interface-member-docs/types.d.ts.map +0 -1
  422. package/dist/docs/no-interface-member-docs/types.js +0 -2
  423. package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +0 -1
  424. package/dist/docs/require-example-language/empty-fence-fixes.js +0 -169
  425. package/dist/docs/require-example-language/example-utilities.d.ts.map +0 -1
  426. package/dist/docs/require-example-language/example-utilities.js +0 -76
  427. package/dist/docs/require-example-language/examples.d.ts.map +0 -1
  428. package/dist/docs/require-example-language/examples.js +0 -181
  429. package/dist/docs/require-example-language/fixes.d.ts.map +0 -1
  430. package/dist/docs/require-example-language/fixes.js +0 -182
  431. package/dist/docs/require-example-language/index.d.ts +0 -3
  432. package/dist/docs/require-example-language/index.d.ts.map +0 -1
  433. package/dist/docs/require-example-language/index.js +0 -2
  434. package/dist/docs/require-example-language/reporting.d.ts.map +0 -1
  435. package/dist/docs/require-example-language/reporting.js +0 -145
  436. package/dist/docs/require-example-language/rule.d.ts.map +0 -1
  437. package/dist/docs/require-example-language/rule.js +0 -34
  438. package/dist/docs/require-example-language/types.d.ts.map +0 -1
  439. package/dist/docs/require-example-language/types.js +0 -2
  440. package/dist/docs/single-line-jsdoc/index.d.ts +0 -2
  441. package/dist/docs/single-line-jsdoc/index.d.ts.map +0 -1
  442. package/dist/docs/single-line-jsdoc/index.js +0 -2
  443. package/dist/docs/single-line-jsdoc/rule.d.ts.map +0 -1
  444. package/dist/docs/single-line-jsdoc/rule.js +0 -196
  445. package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +0 -1
  446. package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +0 -95
  447. package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +0 -1
  448. package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +0 -140
  449. package/dist/docs/test-helpers.d.ts.map +0 -1
  450. package/dist/docs/test-helpers.js +0 -107
  451. package/dist/presets.d.ts +0 -10
  452. package/dist/presets.d.ts.map +0 -1
  453. package/dist/presets.js +0 -50
  454. package/dist/rules/index.d.ts +0 -5
  455. package/dist/rules/index.d.ts.map +0 -1
  456. package/dist/rules/index.js +0 -6
  457. package/dist/testing/aaa/analyzer.d.ts +0 -36
  458. package/dist/testing/aaa/analyzer.d.ts.map +0 -1
  459. package/dist/testing/aaa/analyzer.js +0 -490
  460. package/dist/testing/aaa/index.d.ts.map +0 -1
  461. package/dist/testing/aaa/index.js +0 -2
  462. package/dist/testing/aaa/types.d.ts +0 -31
  463. package/dist/testing/aaa/types.d.ts.map +0 -1
  464. package/dist/testing/aaa/types.js +0 -2
  465. package/dist/testing/assert-actual-expected-names/index.d.ts +0 -2
  466. package/dist/testing/assert-actual-expected-names/index.d.ts.map +0 -1
  467. package/dist/testing/assert-actual-expected-names/index.js +0 -2
  468. package/dist/testing/assert-actual-expected-names/rule.d.ts.map +0 -1
  469. package/dist/testing/assert-actual-expected-names/rule.js +0 -54
  470. package/dist/testing/enforce-aaa-phase-purity/index.d.ts +0 -2
  471. package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +0 -1
  472. package/dist/testing/enforce-aaa-phase-purity/index.js +0 -2
  473. package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
  474. package/dist/testing/enforce-aaa-phase-purity/rule.js +0 -110
  475. package/dist/testing/enforce-aaa-structure/index.d.ts +0 -2
  476. package/dist/testing/enforce-aaa-structure/index.d.ts.map +0 -1
  477. package/dist/testing/enforce-aaa-structure/index.js +0 -2
  478. package/dist/testing/enforce-aaa-structure/rule.d.ts.map +0 -1
  479. package/dist/testing/enforce-aaa-structure/rule.js +0 -48
  480. package/dist/testing/index.d.ts.map +0 -1
  481. package/dist/testing/index.js +0 -9
  482. package/dist/testing/prefer-vi-mocked-import/fix.d.ts +0 -16
  483. package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +0 -1
  484. package/dist/testing/prefer-vi-mocked-import/fix.js +0 -224
  485. package/dist/testing/prefer-vi-mocked-import/index.d.ts +0 -2
  486. package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +0 -1
  487. package/dist/testing/prefer-vi-mocked-import/index.js +0 -2
  488. package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +0 -1
  489. package/dist/testing/prefer-vi-mocked-import/match-bindings.js +0 -52
  490. package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +0 -1
  491. package/dist/testing/prefer-vi-mocked-import/match-declarations.js +0 -99
  492. package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +0 -1
  493. package/dist/testing/prefer-vi-mocked-import/match-helpers.js +0 -102
  494. package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +0 -1
  495. package/dist/testing/prefer-vi-mocked-import/match-imports.js +0 -156
  496. package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +0 -1
  497. package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +0 -119
  498. package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +0 -1
  499. package/dist/testing/prefer-vi-mocked-import/match-walk.js +0 -62
  500. package/dist/testing/prefer-vi-mocked-import/match.d.ts +0 -15
  501. package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +0 -1
  502. package/dist/testing/prefer-vi-mocked-import/match.js +0 -193
  503. package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +0 -1
  504. package/dist/testing/prefer-vi-mocked-import/rule.js +0 -32
  505. package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +0 -1
  506. package/dist/testing/prefer-vi-mocked-import/types.js +0 -2
  507. package/dist/testing/require-aaa-sections/index.d.ts +0 -2
  508. package/dist/testing/require-aaa-sections/index.d.ts.map +0 -1
  509. package/dist/testing/require-aaa-sections/index.js +0 -2
  510. package/dist/testing/require-aaa-sections/rule.d.ts.map +0 -1
  511. package/dist/testing/require-aaa-sections/rule.js +0 -111
  512. package/dist/testing/require-act-result-capture/index.d.ts +0 -2
  513. package/dist/testing/require-act-result-capture/index.d.ts.map +0 -1
  514. package/dist/testing/require-act-result-capture/index.js +0 -2
  515. package/dist/testing/require-act-result-capture/rule.d.ts.map +0 -1
  516. package/dist/testing/require-act-result-capture/rule.js +0 -34
  517. package/dist/testing/require-test-companion/index.d.ts +0 -3
  518. package/dist/testing/require-test-companion/index.d.ts.map +0 -1
  519. package/dist/testing/require-test-companion/index.js +0 -3
  520. package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +0 -1
  521. package/dist/testing/require-test-companion/require-test-companion-listeners.js +0 -145
  522. package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +0 -1
  523. package/dist/testing/require-test-companion/require-test-companion-options.js +0 -112
  524. package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
  525. package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +0 -183
  526. package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
  527. package/dist/testing/require-test-companion/require-test-companion-utilities.js +0 -26
  528. package/dist/testing/require-test-companion/rule.d.ts.map +0 -1
  529. package/dist/testing/require-test-companion/rule.js +0 -57
  530. package/dist/testing/require-test-companion/types.d.ts.map +0 -1
  531. package/dist/testing/require-test-companion/types.js +0 -2
  532. package/dist/testing/single-act-statement/index.d.ts +0 -2
  533. package/dist/testing/single-act-statement/index.d.ts.map +0 -1
  534. package/dist/testing/single-act-statement/index.js +0 -2
  535. package/dist/testing/single-act-statement/rule.d.ts.map +0 -1
  536. package/dist/testing/single-act-statement/rule.js +0 -33
  537. /package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule.d.ts +0 -0
  538. /package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +0 -0
  539. /package/dist/{architecture → domain/architecture}/consistent-barrel-files/rule.d.ts +0 -0
  540. /package/dist/{core → domain/core}/prefer-interface-types/rule.d.ts +0 -0
  541. /package/dist/{core → domain/core}/prefer-interface-types/test-helpers.d.ts +0 -0
  542. /package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -0
  543. /package/dist/{docs → domain/docs}/no-interface-member-docs/rule.d.ts +0 -0
  544. /package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.d.ts +0 -0
  545. /package/dist/{docs → domain/docs}/require-example-language/empty-fence-fixes.d.ts +0 -0
  546. /package/dist/{docs → domain/docs}/require-example-language/example-utilities.d.ts +0 -0
  547. /package/dist/{docs → domain/docs}/require-example-language/rule.d.ts +0 -0
  548. /package/dist/{docs → domain/docs}/require-example-language/types.d.ts +0 -0
  549. /package/dist/{docs → domain/docs}/single-line-jsdoc/rule.d.ts +0 -0
  550. /package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-content.d.ts +0 -0
  551. /package/dist/{docs → domain/docs}/test-helpers.d.ts +0 -0
  552. /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-helpers.d.ts +0 -0
  553. /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-walk.d.ts +0 -0
  554. /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/rule.d.ts +0 -0
  555. /package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-options.d.ts +0 -0
  556. /package/dist/{testing → domain/testing}/require-test-companion/rule.d.ts +0 -0
  557. /package/dist/{testing → domain/testing}/require-test-companion/types.d.ts +0 -0
@@ -0,0 +1,113 @@
1
+ import { createRuleDocumentation } from "../../custom-rule-documentation.js";
2
+ import { analyzeTestBlock, getAssertDeclaredIdentifiers, getAssertionIdentifiers, hasAssertion, usesPrefix, } from "../aaa/index.js";
3
+ /**
4
+ * Builds the de-duplication key for a reported assertion identifier.
5
+ * @param prefix Prefix used for the assertion identifier.
6
+ * @param name Identifier name reported by the rule.
7
+ * @returns Stable de-duplication key for the identifier.
8
+ * @example
9
+ * ```typescript
10
+ * const key = getReportedNameKey("actual", "value");
11
+ * ```
12
+ */
13
+ const getReportedNameKey = (prefix, name) => `${prefix}:${name}`;
14
+ /**
15
+ * Reports a missing assertion prefix when the declared identifier is eligible.
16
+ * @param input Composite reporting input for one identifier.
17
+ * @example
18
+ * ```typescript
19
+ * reportAssertionIdentifier({
20
+ * context: {} as Rule.RuleContext,
21
+ * declaredIdentifiers: new Map(),
22
+ * name: "value",
23
+ * prefix: "actual",
24
+ * reportedNames: new Set(),
25
+ * });
26
+ * ```
27
+ */
28
+ const reportAssertionIdentifier = (input) => {
29
+ const { context, declaredIdentifiers, name, prefix, reportedNames } = input;
30
+ const declaredIdentifier = name === void 0 || usesPrefix(name, prefix)
31
+ ? void 0
32
+ : declaredIdentifiers.get(name);
33
+ if (declaredIdentifier === void 0 || name === void 0) {
34
+ return;
35
+ }
36
+ const reportedNameKey = getReportedNameKey(prefix, name);
37
+ if (reportedNames.has(reportedNameKey)) {
38
+ return;
39
+ }
40
+ reportedNames.add(reportedNameKey);
41
+ context.report({
42
+ data: { name, prefix },
43
+ messageId: "missingPrefix",
44
+ node: declaredIdentifier,
45
+ });
46
+ };
47
+ /**
48
+ * Reports missing prefixes for the actual and expected identifiers in one assertion.
49
+ * @param input Composite reporting input for one assertion.
50
+ * @example
51
+ * ```typescript
52
+ * reportAssertionPrefixes({
53
+ * assertionNode: {} as ESTree.Statement,
54
+ * context: {} as Rule.RuleContext,
55
+ * declaredIdentifiers: new Map(),
56
+ * reportedNames: new Set(),
57
+ * });
58
+ * ```
59
+ */
60
+ const reportAssertionPrefixes = (input) => {
61
+ const { assertionNode, context, declaredIdentifiers, reportedNames } = input;
62
+ const { actual, expected } = getAssertionIdentifiers(assertionNode);
63
+ reportAssertionIdentifier({
64
+ context,
65
+ declaredIdentifiers,
66
+ name: actual,
67
+ prefix: "actual",
68
+ reportedNames,
69
+ });
70
+ reportAssertionIdentifier({
71
+ context,
72
+ declaredIdentifiers,
73
+ name: expected,
74
+ prefix: "expected",
75
+ reportedNames,
76
+ });
77
+ };
78
+ /** Enforces actual/expected-style prefixes for assert-phase comparison variables. */
79
+ const assertActualExpectedNamesRule = {
80
+ create(context) {
81
+ return {
82
+ CallExpression(node) {
83
+ const analysis = analyzeTestBlock(context, node);
84
+ if (analysis === void 0) {
85
+ return;
86
+ }
87
+ const declaredIdentifiers = getAssertDeclaredIdentifiers(analysis);
88
+ const reportedNames = new Set();
89
+ for (const statement of analysis.statements) {
90
+ if (statement.phases.includes("Assert") &&
91
+ hasAssertion(statement.node)) {
92
+ reportAssertionPrefixes({
93
+ assertionNode: statement.node,
94
+ context,
95
+ declaredIdentifiers,
96
+ reportedNames,
97
+ });
98
+ }
99
+ }
100
+ },
101
+ };
102
+ },
103
+ meta: {
104
+ docs: createRuleDocumentation("assert-actual-expected-names", "Require Assert-phase comparison variables to use actual*/expected* prefixes."),
105
+ messages: {
106
+ missingPrefix: "Rename '{{name}}' to use the '{{prefix}}' prefix when comparing values inside // Assert.",
107
+ },
108
+ schema: [],
109
+ type: "suggestion",
110
+ },
111
+ };
112
+ export { assertActualExpectedNamesRule };
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9hc3NlcnQtYWN0dWFsLWV4cGVjdGVkLW5hbWVzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUNMLGdCQUFnQixFQUNoQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDWixVQUFVLEdBQ1gsTUFBTSxRQUFRLENBQUM7QUFzQ2hCOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUF1QixFQUFFLElBQVksRUFBVSxFQUFFLENBQzNFLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO0FBRXRCOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLHlCQUF5QixHQUFHLENBQ2hDLEtBQXFDLEVBQy9CLEVBQUU7SUFDUixNQUFNLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTVFLE1BQU0sa0JBQWtCLEdBQ3RCLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUN6QyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxJQUFJLGtCQUFrQixLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JELE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE9BQU87SUFDVCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2IsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtRQUN0QixTQUFTLEVBQUUsZUFBZTtRQUMxQixJQUFJLEVBQUUsa0JBQWtCO0tBQ3pCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFtQyxFQUFRLEVBQUU7SUFDNUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzdFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFcEUseUJBQXlCLENBQUM7UUFDeEIsT0FBTztRQUNQLG1CQUFtQjtRQUNuQixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLGFBQWE7S0FDZCxDQUFDLENBQUM7SUFDSCx5QkFBeUIsQ0FBQztRQUN4QixPQUFPO1FBQ1AsbUJBQW1CO1FBQ25CLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsYUFBYTtLQUNkLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLHFGQUFxRjtBQUNyRixNQUFNLDZCQUE2QixHQUFvQjtJQUNyRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTztZQUNMLGNBQWMsQ0FBQyxJQUFJO2dCQUNqQixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELElBQUksUUFBUSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3hCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLG1CQUFtQixHQUFHLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO2dCQUV4QyxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDNUMsSUFDRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7d0JBQ25DLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQzVCLENBQUM7d0JBQ0QsdUJBQXVCLENBQUM7NEJBQ3RCLGFBQWEsRUFBRSxTQUFTLENBQUMsSUFBSTs0QkFDN0IsT0FBTzs0QkFDUCxtQkFBbUI7NEJBQ25CLGFBQWE7eUJBQ2QsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7U0FDMEIsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLHVCQUF1QixDQUMzQiw4QkFBOEIsRUFDOUIsOEVBQThFLENBQy9FO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsYUFBYSxFQUNYLDBGQUEwRjtTQUM3RjtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFlBQVk7S0FDbkI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XG5cbmltcG9ydCB7IGNyZWF0ZVJ1bGVEb2N1bWVudGF0aW9uIH0gZnJvbSBcIi4uLy4uL2N1c3RvbS1ydWxlLWRvY3VtZW50YXRpb25cIjtcbmltcG9ydCB7XG4gIGFuYWx5emVUZXN0QmxvY2ssXG4gIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMsXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzLFxuICBoYXNBc3NlcnRpb24sXG4gIHVzZXNQcmVmaXgsXG59IGZyb20gXCIuLi9hYWFcIjtcblxuLyoqIFN1cHBvcnRlZCBhc3NlcnRpb24gdmFyaWFibGUgcHJlZml4ZXMgZW5mb3JjZWQgYnkgdGhpcyBydWxlLiAqL1xudHlwZSBBc3NlcnRpb25QcmVmaXggPSBcImFjdHVhbFwiIHwgXCJleHBlY3RlZFwiO1xuXG4vKiogQ29tcG9zaXRlIGlucHV0IGZvciByZXBvcnRpbmcgb25lIG1pc3NpbmcgYXNzZXJ0aW9uIHByZWZpeC4gKi9cbmludGVyZmFjZSBSZXBvcnRBc3NlcnRpb25JZGVudGlmaWVySW5wdXQge1xuICAvKiogQWN0aXZlIEVTTGludCBydWxlIGNvbnRleHQuICovXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQ7XG5cbiAgLyoqIERlY2xhcmVkIGlkZW50aWZpZXJzIGNvbGxlY3RlZCBmcm9tIHRoZSBhc3NlcnQgcGhhc2UuICovXG4gIGRlY2xhcmVkSWRlbnRpZmllcnM6IFJldHVyblR5cGU8dHlwZW9mIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnM+O1xuXG4gIC8qKiBJZGVudGlmaWVyIG5hbWUgZXh0cmFjdGVkIGZyb20gdGhlIGFzc2VydGlvbi4gKi9cbiAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBSZXF1aXJlZCBwcmVmaXggZm9yIHRoZSBpZGVudGlmaWVyLiAqL1xuICBwcmVmaXg6IEFzc2VydGlvblByZWZpeDtcblxuICAvKiogU2V0IG9mIGFscmVhZHkgcmVwb3J0ZWQgaWRlbnRpZmllciBrZXlzLiAqL1xuICByZXBvcnRlZE5hbWVzOiBTZXQ8c3RyaW5nPjtcbn1cblxuLyoqIENvbXBvc2l0ZSBpbnB1dCBmb3IgcmVwb3J0aW5nIG1pc3NpbmcgcHJlZml4ZXMgaW4gb25lIGFzc2VydGlvbi4gKi9cbmludGVyZmFjZSBSZXBvcnRBc3NlcnRpb25QcmVmaXhlc0lucHV0IHtcbiAgLyoqIEFzc2VydGlvbiBub2RlIHdob3NlIGlkZW50aWZpZXJzIHNob3VsZCBiZSBpbnNwZWN0ZWQuICovXG4gIGFzc2VydGlvbk5vZGU6IEVTVHJlZS5TdGF0ZW1lbnQ7XG5cbiAgLyoqIEFjdGl2ZSBFU0xpbnQgcnVsZSBjb250ZXh0LiAqL1xuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0O1xuXG4gIC8qKiBEZWNsYXJlZCBpZGVudGlmaWVycyBjb2xsZWN0ZWQgZnJvbSB0aGUgYXNzZXJ0IHBoYXNlLiAqL1xuICBkZWNsYXJlZElkZW50aWZpZXJzOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzPjtcblxuICAvKiogU2V0IG9mIGFscmVhZHkgcmVwb3J0ZWQgaWRlbnRpZmllciBrZXlzLiAqL1xuICByZXBvcnRlZE5hbWVzOiBTZXQ8c3RyaW5nPjtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGRlLWR1cGxpY2F0aW9uIGtleSBmb3IgYSByZXBvcnRlZCBhc3NlcnRpb24gaWRlbnRpZmllci5cbiAqIEBwYXJhbSBwcmVmaXggUHJlZml4IHVzZWQgZm9yIHRoZSBhc3NlcnRpb24gaWRlbnRpZmllci5cbiAqIEBwYXJhbSBuYW1lIElkZW50aWZpZXIgbmFtZSByZXBvcnRlZCBieSB0aGUgcnVsZS5cbiAqIEByZXR1cm5zIFN0YWJsZSBkZS1kdXBsaWNhdGlvbiBrZXkgZm9yIHRoZSBpZGVudGlmaWVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGtleSA9IGdldFJlcG9ydGVkTmFtZUtleShcImFjdHVhbFwiLCBcInZhbHVlXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFJlcG9ydGVkTmFtZUtleSA9IChwcmVmaXg6IEFzc2VydGlvblByZWZpeCwgbmFtZTogc3RyaW5nKTogc3RyaW5nID0+XG4gIGAke3ByZWZpeH06JHtuYW1lfWA7XG5cbi8qKlxuICogUmVwb3J0cyBhIG1pc3NpbmcgYXNzZXJ0aW9uIHByZWZpeCB3aGVuIHRoZSBkZWNsYXJlZCBpZGVudGlmaWVyIGlzIGVsaWdpYmxlLlxuICogQHBhcmFtIGlucHV0IENvbXBvc2l0ZSByZXBvcnRpbmcgaW5wdXQgZm9yIG9uZSBpZGVudGlmaWVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydEFzc2VydGlvbklkZW50aWZpZXIoe1xuICogICBjb250ZXh0OiB7fSBhcyBSdWxlLlJ1bGVDb250ZXh0LFxuICogICBkZWNsYXJlZElkZW50aWZpZXJzOiBuZXcgTWFwKCksXG4gKiAgIG5hbWU6IFwidmFsdWVcIixcbiAqICAgcHJlZml4OiBcImFjdHVhbFwiLFxuICogICByZXBvcnRlZE5hbWVzOiBuZXcgU2V0KCksXG4gKiB9KTtcbiAqIGBgYFxuICovXG5jb25zdCByZXBvcnRBc3NlcnRpb25JZGVudGlmaWVyID0gKFxuICBpbnB1dDogUmVwb3J0QXNzZXJ0aW9uSWRlbnRpZmllcklucHV0LFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHsgY29udGV4dCwgZGVjbGFyZWRJZGVudGlmaWVycywgbmFtZSwgcHJlZml4LCByZXBvcnRlZE5hbWVzIH0gPSBpbnB1dDtcblxuICBjb25zdCBkZWNsYXJlZElkZW50aWZpZXIgPVxuICAgIG5hbWUgPT09IHZvaWQgMCB8fCB1c2VzUHJlZml4KG5hbWUsIHByZWZpeClcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IGRlY2xhcmVkSWRlbnRpZmllcnMuZ2V0KG5hbWUpO1xuICBpZiAoZGVjbGFyZWRJZGVudGlmaWVyID09PSB2b2lkIDAgfHwgbmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVwb3J0ZWROYW1lS2V5ID0gZ2V0UmVwb3J0ZWROYW1lS2V5KHByZWZpeCwgbmFtZSk7XG4gIGlmIChyZXBvcnRlZE5hbWVzLmhhcyhyZXBvcnRlZE5hbWVLZXkpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVwb3J0ZWROYW1lcy5hZGQocmVwb3J0ZWROYW1lS2V5KTtcbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIGRhdGE6IHsgbmFtZSwgcHJlZml4IH0sXG4gICAgbWVzc2FnZUlkOiBcIm1pc3NpbmdQcmVmaXhcIixcbiAgICBub2RlOiBkZWNsYXJlZElkZW50aWZpZXIsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXBvcnRzIG1pc3NpbmcgcHJlZml4ZXMgZm9yIHRoZSBhY3R1YWwgYW5kIGV4cGVjdGVkIGlkZW50aWZpZXJzIGluIG9uZSBhc3NlcnRpb24uXG4gKiBAcGFyYW0gaW5wdXQgQ29tcG9zaXRlIHJlcG9ydGluZyBpbnB1dCBmb3Igb25lIGFzc2VydGlvbi5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRBc3NlcnRpb25QcmVmaXhlcyh7XG4gKiAgIGFzc2VydGlvbk5vZGU6IHt9IGFzIEVTVHJlZS5TdGF0ZW1lbnQsXG4gKiAgIGNvbnRleHQ6IHt9IGFzIFJ1bGUuUnVsZUNvbnRleHQsXG4gKiAgIGRlY2xhcmVkSWRlbnRpZmllcnM6IG5ldyBNYXAoKSxcbiAqICAgcmVwb3J0ZWROYW1lczogbmV3IFNldCgpLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0QXNzZXJ0aW9uUHJlZml4ZXMgPSAoaW5wdXQ6IFJlcG9ydEFzc2VydGlvblByZWZpeGVzSW5wdXQpOiB2b2lkID0+IHtcbiAgY29uc3QgeyBhc3NlcnRpb25Ob2RlLCBjb250ZXh0LCBkZWNsYXJlZElkZW50aWZpZXJzLCByZXBvcnRlZE5hbWVzIH0gPSBpbnB1dDtcbiAgY29uc3QgeyBhY3R1YWwsIGV4cGVjdGVkIH0gPSBnZXRBc3NlcnRpb25JZGVudGlmaWVycyhhc3NlcnRpb25Ob2RlKTtcblxuICByZXBvcnRBc3NlcnRpb25JZGVudGlmaWVyKHtcbiAgICBjb250ZXh0LFxuICAgIGRlY2xhcmVkSWRlbnRpZmllcnMsXG4gICAgbmFtZTogYWN0dWFsLFxuICAgIHByZWZpeDogXCJhY3R1YWxcIixcbiAgICByZXBvcnRlZE5hbWVzLFxuICB9KTtcbiAgcmVwb3J0QXNzZXJ0aW9uSWRlbnRpZmllcih7XG4gICAgY29udGV4dCxcbiAgICBkZWNsYXJlZElkZW50aWZpZXJzLFxuICAgIG5hbWU6IGV4cGVjdGVkLFxuICAgIHByZWZpeDogXCJleHBlY3RlZFwiLFxuICAgIHJlcG9ydGVkTmFtZXMsXG4gIH0pO1xufTtcblxuLyoqIEVuZm9yY2VzIGFjdHVhbC9leHBlY3RlZC1zdHlsZSBwcmVmaXhlcyBmb3IgYXNzZXJ0LXBoYXNlIGNvbXBhcmlzb24gdmFyaWFibGVzLiAqL1xuY29uc3QgYXNzZXJ0QWN0dWFsRXhwZWN0ZWROYW1lc1J1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIENhbGxFeHByZXNzaW9uKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYW5hbHlzaXMgPSBhbmFseXplVGVzdEJsb2NrKGNvbnRleHQsIG5vZGUpO1xuICAgICAgICBpZiAoYW5hbHlzaXMgPT09IHZvaWQgMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY2xhcmVkSWRlbnRpZmllcnMgPSBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzKGFuYWx5c2lzKTtcbiAgICAgICAgY29uc3QgcmVwb3J0ZWROYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGFuYWx5c2lzLnN0YXRlbWVudHMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBzdGF0ZW1lbnQucGhhc2VzLmluY2x1ZGVzKFwiQXNzZXJ0XCIpICYmXG4gICAgICAgICAgICBoYXNBc3NlcnRpb24oc3RhdGVtZW50Lm5vZGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXBvcnRBc3NlcnRpb25QcmVmaXhlcyh7XG4gICAgICAgICAgICAgIGFzc2VydGlvbk5vZGU6IHN0YXRlbWVudC5ub2RlLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBkZWNsYXJlZElkZW50aWZpZXJzLFxuICAgICAgICAgICAgICByZXBvcnRlZE5hbWVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIFJ1bGUuUnVsZUxpc3RlbmVyO1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczogY3JlYXRlUnVsZURvY3VtZW50YXRpb24oXG4gICAgICBcImFzc2VydC1hY3R1YWwtZXhwZWN0ZWQtbmFtZXNcIixcbiAgICAgIFwiUmVxdWlyZSBBc3NlcnQtcGhhc2UgY29tcGFyaXNvbiB2YXJpYWJsZXMgdG8gdXNlIGFjdHVhbCovZXhwZWN0ZWQqIHByZWZpeGVzLlwiLFxuICAgICksXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIG1pc3NpbmdQcmVmaXg6XG4gICAgICAgIFwiUmVuYW1lICd7e25hbWV9fScgdG8gdXNlIHRoZSAne3twcmVmaXh9fScgcHJlZml4IHdoZW4gY29tcGFyaW5nIHZhbHVlcyBpbnNpZGUgLy8gQXNzZXJ0LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IGFzc2VydEFjdHVhbEV4cGVjdGVkTmFtZXNSdWxlIH07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { enforceAaaPhasePurityRule } from "./rule.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/enforce-aaa-phase-purity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { enforceAaaPhasePurityRule } from "./rule.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvZW5mb3JjZS1hYWEtcGhhc2UtcHVyaXR5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGVuZm9yY2VBYWFQaGFzZVB1cml0eVJ1bGUgfSBmcm9tIFwiLi9ydWxlXCI7XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import type * as ESTree from "estree";
2
+ /**
3
+ * Collects all identifier names declared by a destructuring or identifier pattern.
4
+ * @param pattern Pattern node to inspect.
5
+ * @param identifiers Identifier set updated in place.
6
+ * @example
7
+ * ```typescript
8
+ * collectPatternIdentifiers({ name: "value", type: "Identifier" }, new Set<string>());
9
+ * ```
10
+ */
11
+ declare function collectPatternIdentifiers(pattern: ESTree.Pattern, identifiers: Set<string>): void;
12
+ export { collectPatternIdentifiers };
13
+ //# sourceMappingURL=pattern-identifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-identifiers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AA2FtC;;;;;;;;GAQG;AACH,iBAAS,yBAAyB,CAChC,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,IAAI,CAEN;AA4ED,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Collects identifiers from an array pattern.
3
+ * @param pattern Array pattern to inspect.
4
+ * @param identifiers Identifier set updated in place.
5
+ * @example
6
+ * ```typescript
7
+ * collectArrayPatternIdentifiers({ elements: [], type: "ArrayPattern" }, new Set<string>());
8
+ * ```
9
+ */
10
+ function collectArrayPatternIdentifiers(pattern, identifiers) {
11
+ const elements = pattern.elements;
12
+ for (const element of elements) {
13
+ if (element !== null && element !== void 0) {
14
+ collectPatternIdentifiers(element, identifiers);
15
+ }
16
+ }
17
+ }
18
+ /**
19
+ * Collects identifiers from an assignment pattern.
20
+ * @param pattern Assignment pattern to inspect.
21
+ * @param identifiers Identifier set updated in place.
22
+ * @example
23
+ * ```typescript
24
+ * collectAssignmentPatternIdentifiers({ left: { name: "value", type: "Identifier" }, right: { name: "fallback", type: "Identifier" }, type: "AssignmentPattern" } as ESTree.AssignmentPattern, new Set<string>());
25
+ * ```
26
+ */
27
+ function collectAssignmentPatternIdentifiers(pattern, identifiers) {
28
+ collectPatternIdentifiers(pattern.left, identifiers);
29
+ }
30
+ /**
31
+ * Collects identifiers from a plain identifier pattern.
32
+ * @param pattern Identifier pattern to inspect.
33
+ * @param identifiers Identifier set updated in place.
34
+ * @example
35
+ * ```typescript
36
+ * collectIdentifierPatternIdentifiers({ name: "value", type: "Identifier" }, new Set<string>());
37
+ * ```
38
+ */
39
+ function collectIdentifierPatternIdentifiers(pattern, identifiers) {
40
+ identifiers.add(pattern.name);
41
+ }
42
+ /**
43
+ * Collects identifiers from an object pattern.
44
+ * @param pattern Object pattern to inspect.
45
+ * @param identifiers Identifier set updated in place.
46
+ * @example
47
+ * ```typescript
48
+ * collectObjectPatternIdentifiers({ properties: [], type: "ObjectPattern" }, new Set<string>());
49
+ * ```
50
+ */
51
+ function collectObjectPatternIdentifiers(pattern, identifiers) {
52
+ for (const property of pattern.properties) {
53
+ if (property.type === "Property") {
54
+ collectPatternIdentifiers(property.value, identifiers);
55
+ }
56
+ else {
57
+ collectPatternIdentifiers(property.argument, identifiers);
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * Collects all identifier names declared by a destructuring or identifier pattern.
63
+ * @param pattern Pattern node to inspect.
64
+ * @param identifiers Identifier set updated in place.
65
+ * @example
66
+ * ```typescript
67
+ * collectPatternIdentifiers({ name: "value", type: "Identifier" }, new Set<string>());
68
+ * ```
69
+ */
70
+ function collectPatternIdentifiers(pattern, identifiers) {
71
+ getPatternIdentifierCollector(pattern)(pattern, identifiers);
72
+ }
73
+ /**
74
+ * Collects identifiers from a rest element pattern.
75
+ * @param pattern Rest element to inspect.
76
+ * @param identifiers Identifier set updated in place.
77
+ * @example
78
+ * ```typescript
79
+ * collectRestPatternIdentifiers({ argument: { name: "value", type: "Identifier" }, type: "RestElement" }, new Set<string>());
80
+ * ```
81
+ */
82
+ function collectRestPatternIdentifiers(pattern, identifiers) {
83
+ collectPatternIdentifiers(pattern.argument, identifiers);
84
+ }
85
+ /**
86
+ * Ignores pattern kinds that do not declare identifiers.
87
+ * @param pattern Pattern to ignore.
88
+ * @param identifiers Identifier set left unchanged.
89
+ * @example
90
+ * ```typescript
91
+ * collectUnsupportedPatternIdentifiers({ object: { name: "value", type: "Identifier" }, property: { name: "member", type: "Identifier" }, computed: false, optional: false, type: "MemberExpression" }, new Set<string>());
92
+ * ```
93
+ */
94
+ function collectUnsupportedPatternIdentifiers(pattern, identifiers) {
95
+ void pattern;
96
+ void identifiers;
97
+ }
98
+ /**
99
+ * Gets the identifier collector for one supported pattern kind.
100
+ * @param pattern Pattern whose collector is needed.
101
+ * @returns Collector for the pattern, when one exists.
102
+ * @example
103
+ * ```typescript
104
+ * const collector = getPatternIdentifierCollector({ name: "value", type: "Identifier" });
105
+ * void collector;
106
+ * ```
107
+ */
108
+ function getPatternIdentifierCollector(pattern) {
109
+ switch (pattern.type) {
110
+ case "ArrayPattern": {
111
+ return collectArrayPatternIdentifiers;
112
+ }
113
+ case "AssignmentPattern": {
114
+ return collectAssignmentPatternIdentifiers;
115
+ }
116
+ case "Identifier": {
117
+ return collectIdentifierPatternIdentifiers;
118
+ }
119
+ case "MemberExpression": {
120
+ return collectUnsupportedPatternIdentifiers;
121
+ }
122
+ case "ObjectPattern": {
123
+ return collectObjectPatternIdentifiers;
124
+ }
125
+ case "RestElement": {
126
+ return collectRestPatternIdentifiers;
127
+ }
128
+ default: {
129
+ return collectUnsupportedPatternIdentifiers;
130
+ }
131
+ }
132
+ }
133
+ export { collectPatternIdentifiers };
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi1pZGVudGlmaWVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9lbmZvcmNlLWFhYS1waGFzZS1wdXJpdHkvcGF0dGVybi1pZGVudGlmaWVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQTs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsOEJBQThCLENBQ3JDLE9BQXVCLEVBQ3ZCLFdBQXdCO0lBRXhCLE1BQU0sUUFBUSxHQUFJLE9BQStCLENBQUMsUUFJL0MsQ0FBQztJQUVKLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsbUNBQW1DLENBQzFDLE9BQXVCLEVBQ3ZCLFdBQXdCO0lBRXhCLHlCQUF5QixDQUN0QixPQUFvQyxDQUFDLElBQUksRUFDMUMsV0FBVyxDQUNaLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLG1DQUFtQyxDQUMxQyxPQUF1QixFQUN2QixXQUF3QjtJQUV4QixXQUFXLENBQUMsR0FBRyxDQUFFLE9BQTZCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUywrQkFBK0IsQ0FDdEMsT0FBdUIsRUFDdkIsV0FBd0I7SUFFeEIsS0FBSyxNQUFNLFFBQVEsSUFBSyxPQUFnQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BFLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNqQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELENBQUM7YUFBTSxDQUFDO1lBQ04seUJBQXlCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMseUJBQXlCLENBQ2hDLE9BQXVCLEVBQ3ZCLFdBQXdCO0lBRXhCLDZCQUE2QixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDZCQUE2QixDQUNwQyxPQUF1QixFQUN2QixXQUF3QjtJQUV4Qix5QkFBeUIsQ0FDdEIsT0FBOEIsQ0FBQyxRQUFRLEVBQ3hDLFdBQVcsQ0FDWixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxvQ0FBb0MsQ0FDM0MsT0FBdUIsRUFDdkIsV0FBd0I7SUFFeEIsS0FBSyxPQUFPLENBQUM7SUFDYixLQUFLLFdBQVcsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyw2QkFBNkIsQ0FDcEMsT0FBdUI7SUFFdkIsUUFBUSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLE9BQU8sOEJBQThCLENBQUM7UUFDeEMsQ0FBQztRQUNELEtBQUssbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sbUNBQW1DLENBQUM7UUFDN0MsQ0FBQztRQUNELEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNsQixPQUFPLG1DQUFtQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUN4QixPQUFPLG9DQUFvQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxLQUFLLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDckIsT0FBTywrQkFBK0IsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ25CLE9BQU8sNkJBQTZCLENBQUM7UUFDdkMsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDUixPQUFPLG9DQUFvQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xyXG5cclxuLyoqIEZ1bmN0aW9uIHNpZ25hdHVyZSBmb3IgcGF0dGVybiBpZGVudGlmaWVyIGNvbGxlY3RvcnMuICovXHJcbnR5cGUgUGF0dGVybklkZW50aWZpZXJDb2xsZWN0b3IgPSAoXHJcbiAgcGF0dGVybjogRVNUcmVlLlBhdHRlcm4sXHJcbiAgaWRlbnRpZmllcnM6IFNldDxzdHJpbmc+LFxyXG4pID0+IHZvaWQ7XHJcblxyXG4vKipcclxuICogQ29sbGVjdHMgaWRlbnRpZmllcnMgZnJvbSBhbiBhcnJheSBwYXR0ZXJuLlxyXG4gKiBAcGFyYW0gcGF0dGVybiBBcnJheSBwYXR0ZXJuIHRvIGluc3BlY3QuXHJcbiAqIEBwYXJhbSBpZGVudGlmaWVycyBJZGVudGlmaWVyIHNldCB1cGRhdGVkIGluIHBsYWNlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbGxlY3RBcnJheVBhdHRlcm5JZGVudGlmaWVycyh7IGVsZW1lbnRzOiBbXSwgdHlwZTogXCJBcnJheVBhdHRlcm5cIiB9LCBuZXcgU2V0PHN0cmluZz4oKSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY29sbGVjdEFycmF5UGF0dGVybklkZW50aWZpZXJzKFxyXG4gIHBhdHRlcm46IEVTVHJlZS5QYXR0ZXJuLFxyXG4gIGlkZW50aWZpZXJzOiBTZXQ8c3RyaW5nPixcclxuKTogdm9pZCB7XHJcbiAgY29uc3QgZWxlbWVudHMgPSAocGF0dGVybiBhcyBFU1RyZWUuQXJyYXlQYXR0ZXJuKS5lbGVtZW50cyBhcyAoXHJcbiAgICB8IEVTVHJlZS5QYXR0ZXJuXHJcbiAgICB8IG51bGxcclxuICAgIHwgdW5kZWZpbmVkXHJcbiAgKVtdO1xyXG5cclxuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcclxuICAgIGlmIChlbGVtZW50ICE9PSBudWxsICYmIGVsZW1lbnQgIT09IHZvaWQgMCkge1xyXG4gICAgICBjb2xsZWN0UGF0dGVybklkZW50aWZpZXJzKGVsZW1lbnQsIGlkZW50aWZpZXJzKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0cyBpZGVudGlmaWVycyBmcm9tIGFuIGFzc2lnbm1lbnQgcGF0dGVybi5cclxuICogQHBhcmFtIHBhdHRlcm4gQXNzaWdubWVudCBwYXR0ZXJuIHRvIGluc3BlY3QuXHJcbiAqIEBwYXJhbSBpZGVudGlmaWVycyBJZGVudGlmaWVyIHNldCB1cGRhdGVkIGluIHBsYWNlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbGxlY3RBc3NpZ25tZW50UGF0dGVybklkZW50aWZpZXJzKHsgbGVmdDogeyBuYW1lOiBcInZhbHVlXCIsIHR5cGU6IFwiSWRlbnRpZmllclwiIH0sIHJpZ2h0OiB7IG5hbWU6IFwiZmFsbGJhY2tcIiwgdHlwZTogXCJJZGVudGlmaWVyXCIgfSwgdHlwZTogXCJBc3NpZ25tZW50UGF0dGVyblwiIH0gYXMgRVNUcmVlLkFzc2lnbm1lbnRQYXR0ZXJuLCBuZXcgU2V0PHN0cmluZz4oKSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY29sbGVjdEFzc2lnbm1lbnRQYXR0ZXJuSWRlbnRpZmllcnMoXHJcbiAgcGF0dGVybjogRVNUcmVlLlBhdHRlcm4sXHJcbiAgaWRlbnRpZmllcnM6IFNldDxzdHJpbmc+LFxyXG4pOiB2b2lkIHtcclxuICBjb2xsZWN0UGF0dGVybklkZW50aWZpZXJzKFxyXG4gICAgKHBhdHRlcm4gYXMgRVNUcmVlLkFzc2lnbm1lbnRQYXR0ZXJuKS5sZWZ0LFxyXG4gICAgaWRlbnRpZmllcnMsXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3RzIGlkZW50aWZpZXJzIGZyb20gYSBwbGFpbiBpZGVudGlmaWVyIHBhdHRlcm4uXHJcbiAqIEBwYXJhbSBwYXR0ZXJuIElkZW50aWZpZXIgcGF0dGVybiB0byBpbnNwZWN0LlxyXG4gKiBAcGFyYW0gaWRlbnRpZmllcnMgSWRlbnRpZmllciBzZXQgdXBkYXRlZCBpbiBwbGFjZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb2xsZWN0SWRlbnRpZmllclBhdHRlcm5JZGVudGlmaWVycyh7IG5hbWU6IFwidmFsdWVcIiwgdHlwZTogXCJJZGVudGlmaWVyXCIgfSwgbmV3IFNldDxzdHJpbmc+KCkpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNvbGxlY3RJZGVudGlmaWVyUGF0dGVybklkZW50aWZpZXJzKFxyXG4gIHBhdHRlcm46IEVTVHJlZS5QYXR0ZXJuLFxyXG4gIGlkZW50aWZpZXJzOiBTZXQ8c3RyaW5nPixcclxuKTogdm9pZCB7XHJcbiAgaWRlbnRpZmllcnMuYWRkKChwYXR0ZXJuIGFzIEVTVHJlZS5JZGVudGlmaWVyKS5uYW1lKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3RzIGlkZW50aWZpZXJzIGZyb20gYW4gb2JqZWN0IHBhdHRlcm4uXHJcbiAqIEBwYXJhbSBwYXR0ZXJuIE9iamVjdCBwYXR0ZXJuIHRvIGluc3BlY3QuXHJcbiAqIEBwYXJhbSBpZGVudGlmaWVycyBJZGVudGlmaWVyIHNldCB1cGRhdGVkIGluIHBsYWNlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbGxlY3RPYmplY3RQYXR0ZXJuSWRlbnRpZmllcnMoeyBwcm9wZXJ0aWVzOiBbXSwgdHlwZTogXCJPYmplY3RQYXR0ZXJuXCIgfSwgbmV3IFNldDxzdHJpbmc+KCkpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNvbGxlY3RPYmplY3RQYXR0ZXJuSWRlbnRpZmllcnMoXHJcbiAgcGF0dGVybjogRVNUcmVlLlBhdHRlcm4sXHJcbiAgaWRlbnRpZmllcnM6IFNldDxzdHJpbmc+LFxyXG4pOiB2b2lkIHtcclxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIChwYXR0ZXJuIGFzIEVTVHJlZS5PYmplY3RQYXR0ZXJuKS5wcm9wZXJ0aWVzKSB7XHJcbiAgICBpZiAocHJvcGVydHkudHlwZSA9PT0gXCJQcm9wZXJ0eVwiKSB7XHJcbiAgICAgIGNvbGxlY3RQYXR0ZXJuSWRlbnRpZmllcnMocHJvcGVydHkudmFsdWUsIGlkZW50aWZpZXJzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbGxlY3RQYXR0ZXJuSWRlbnRpZmllcnMocHJvcGVydHkuYXJndW1lbnQsIGlkZW50aWZpZXJzKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0cyBhbGwgaWRlbnRpZmllciBuYW1lcyBkZWNsYXJlZCBieSBhIGRlc3RydWN0dXJpbmcgb3IgaWRlbnRpZmllciBwYXR0ZXJuLlxyXG4gKiBAcGFyYW0gcGF0dGVybiBQYXR0ZXJuIG5vZGUgdG8gaW5zcGVjdC5cclxuICogQHBhcmFtIGlkZW50aWZpZXJzIElkZW50aWZpZXIgc2V0IHVwZGF0ZWQgaW4gcGxhY2UuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29sbGVjdFBhdHRlcm5JZGVudGlmaWVycyh7IG5hbWU6IFwidmFsdWVcIiwgdHlwZTogXCJJZGVudGlmaWVyXCIgfSwgbmV3IFNldDxzdHJpbmc+KCkpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNvbGxlY3RQYXR0ZXJuSWRlbnRpZmllcnMoXHJcbiAgcGF0dGVybjogRVNUcmVlLlBhdHRlcm4sXHJcbiAgaWRlbnRpZmllcnM6IFNldDxzdHJpbmc+LFxyXG4pOiB2b2lkIHtcclxuICBnZXRQYXR0ZXJuSWRlbnRpZmllckNvbGxlY3RvcihwYXR0ZXJuKShwYXR0ZXJuLCBpZGVudGlmaWVycyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0cyBpZGVudGlmaWVycyBmcm9tIGEgcmVzdCBlbGVtZW50IHBhdHRlcm4uXHJcbiAqIEBwYXJhbSBwYXR0ZXJuIFJlc3QgZWxlbWVudCB0byBpbnNwZWN0LlxyXG4gKiBAcGFyYW0gaWRlbnRpZmllcnMgSWRlbnRpZmllciBzZXQgdXBkYXRlZCBpbiBwbGFjZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb2xsZWN0UmVzdFBhdHRlcm5JZGVudGlmaWVycyh7IGFyZ3VtZW50OiB7IG5hbWU6IFwidmFsdWVcIiwgdHlwZTogXCJJZGVudGlmaWVyXCIgfSwgdHlwZTogXCJSZXN0RWxlbWVudFwiIH0sIG5ldyBTZXQ8c3RyaW5nPigpKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0UmVzdFBhdHRlcm5JZGVudGlmaWVycyhcclxuICBwYXR0ZXJuOiBFU1RyZWUuUGF0dGVybixcclxuICBpZGVudGlmaWVyczogU2V0PHN0cmluZz4sXHJcbik6IHZvaWQge1xyXG4gIGNvbGxlY3RQYXR0ZXJuSWRlbnRpZmllcnMoXHJcbiAgICAocGF0dGVybiBhcyBFU1RyZWUuUmVzdEVsZW1lbnQpLmFyZ3VtZW50LFxyXG4gICAgaWRlbnRpZmllcnMsXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIElnbm9yZXMgcGF0dGVybiBraW5kcyB0aGF0IGRvIG5vdCBkZWNsYXJlIGlkZW50aWZpZXJzLlxyXG4gKiBAcGFyYW0gcGF0dGVybiBQYXR0ZXJuIHRvIGlnbm9yZS5cclxuICogQHBhcmFtIGlkZW50aWZpZXJzIElkZW50aWZpZXIgc2V0IGxlZnQgdW5jaGFuZ2VkLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbGxlY3RVbnN1cHBvcnRlZFBhdHRlcm5JZGVudGlmaWVycyh7IG9iamVjdDogeyBuYW1lOiBcInZhbHVlXCIsIHR5cGU6IFwiSWRlbnRpZmllclwiIH0sIHByb3BlcnR5OiB7IG5hbWU6IFwibWVtYmVyXCIsIHR5cGU6IFwiSWRlbnRpZmllclwiIH0sIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCB0eXBlOiBcIk1lbWJlckV4cHJlc3Npb25cIiB9LCBuZXcgU2V0PHN0cmluZz4oKSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY29sbGVjdFVuc3VwcG9ydGVkUGF0dGVybklkZW50aWZpZXJzKFxyXG4gIHBhdHRlcm46IEVTVHJlZS5QYXR0ZXJuLFxyXG4gIGlkZW50aWZpZXJzOiBTZXQ8c3RyaW5nPixcclxuKTogdm9pZCB7XHJcbiAgdm9pZCBwYXR0ZXJuO1xyXG4gIHZvaWQgaWRlbnRpZmllcnM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIHRoZSBpZGVudGlmaWVyIGNvbGxlY3RvciBmb3Igb25lIHN1cHBvcnRlZCBwYXR0ZXJuIGtpbmQuXHJcbiAqIEBwYXJhbSBwYXR0ZXJuIFBhdHRlcm4gd2hvc2UgY29sbGVjdG9yIGlzIG5lZWRlZC5cclxuICogQHJldHVybnMgQ29sbGVjdG9yIGZvciB0aGUgcGF0dGVybiwgd2hlbiBvbmUgZXhpc3RzLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGNvbGxlY3RvciA9IGdldFBhdHRlcm5JZGVudGlmaWVyQ29sbGVjdG9yKHsgbmFtZTogXCJ2YWx1ZVwiLCB0eXBlOiBcIklkZW50aWZpZXJcIiB9KTtcclxuICogdm9pZCBjb2xsZWN0b3I7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UGF0dGVybklkZW50aWZpZXJDb2xsZWN0b3IoXHJcbiAgcGF0dGVybjogRVNUcmVlLlBhdHRlcm4sXHJcbik6IFBhdHRlcm5JZGVudGlmaWVyQ29sbGVjdG9yIHtcclxuICBzd2l0Y2ggKHBhdHRlcm4udHlwZSkge1xyXG4gICAgY2FzZSBcIkFycmF5UGF0dGVyblwiOiB7XHJcbiAgICAgIHJldHVybiBjb2xsZWN0QXJyYXlQYXR0ZXJuSWRlbnRpZmllcnM7XHJcbiAgICB9XHJcbiAgICBjYXNlIFwiQXNzaWdubWVudFBhdHRlcm5cIjoge1xyXG4gICAgICByZXR1cm4gY29sbGVjdEFzc2lnbm1lbnRQYXR0ZXJuSWRlbnRpZmllcnM7XHJcbiAgICB9XHJcbiAgICBjYXNlIFwiSWRlbnRpZmllclwiOiB7XHJcbiAgICAgIHJldHVybiBjb2xsZWN0SWRlbnRpZmllclBhdHRlcm5JZGVudGlmaWVycztcclxuICAgIH1cclxuICAgIGNhc2UgXCJNZW1iZXJFeHByZXNzaW9uXCI6IHtcclxuICAgICAgcmV0dXJuIGNvbGxlY3RVbnN1cHBvcnRlZFBhdHRlcm5JZGVudGlmaWVycztcclxuICAgIH1cclxuICAgIGNhc2UgXCJPYmplY3RQYXR0ZXJuXCI6IHtcclxuICAgICAgcmV0dXJuIGNvbGxlY3RPYmplY3RQYXR0ZXJuSWRlbnRpZmllcnM7XHJcbiAgICB9XHJcbiAgICBjYXNlIFwiUmVzdEVsZW1lbnRcIjoge1xyXG4gICAgICByZXR1cm4gY29sbGVjdFJlc3RQYXR0ZXJuSWRlbnRpZmllcnM7XHJcbiAgICB9XHJcbiAgICBkZWZhdWx0OiB7XHJcbiAgICAgIHJldHVybiBjb2xsZWN0VW5zdXBwb3J0ZWRQYXR0ZXJuSWRlbnRpZmllcnM7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgeyBjb2xsZWN0UGF0dGVybklkZW50aWZpZXJzIH07XHJcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import type * as ESTree from "estree";
2
+ import type { TestBlockAnalysis } from "../aaa/index.js";
3
+ /**
4
+ * Collects all identifiers referenced from the Assert phase.
5
+ * @param analysis Parsed test-block analysis.
6
+ * @returns Referenced identifier names from Assert statements.
7
+ * @example
8
+ * ```typescript
9
+ * getAssertReferencedIdentifiers({ statements: [] } as never);
10
+ * ```
11
+ */
12
+ declare function getAssertReferencedIdentifiers(analysis: TestBlockAnalysis): Set<string>;
13
+ /**
14
+ * Checks whether an Act-phase declaration is later referenced from Assert.
15
+ * @param assertReferencedIdentifiers Referenced identifiers collected from Assert.
16
+ * @param statement Statement to inspect.
17
+ * @returns True when one declared identifier is asserted later.
18
+ * @example
19
+ * ```typescript
20
+ * isActResultAsserted(new Set<string>(), { type: "ExpressionStatement" } as never);
21
+ * ```
22
+ */
23
+ declare function isActResultAsserted(assertReferencedIdentifiers: Set<string>, statement: ESTree.Statement): boolean;
24
+ export { getAssertReferencedIdentifiers, isActResultAsserted };
25
+ //# sourceMappingURL=phase-purity-identifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-purity-identifiers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAsHhD;;;;;;;;GAQG;AACH,iBAAS,8BAA8B,CACrC,QAAQ,EAAE,iBAAiB,GAC1B,GAAG,CAAC,MAAM,CAAC,CAQb;AAED;;;;;;;;;GASG;AACH,iBAAS,mBAAmB,CAC1B,2BAA2B,EAAE,GAAG,CAAC,MAAM,CAAC,EACxC,SAAS,EAAE,MAAM,CAAC,SAAS,GAC1B,OAAO,CAQT;AAoBD,OAAO,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,138 @@
1
+ import { collectPatternIdentifiers } from "./pattern-identifiers.js";
2
+ /**
3
+ * Collects referenced identifiers from one Assert-phase statement.
4
+ * @param statement Statement to inspect.
5
+ * @param identifiers Identifier set updated in place.
6
+ * @example
7
+ * ```typescript
8
+ * collectAssertStatementIdentifiers({ type: "ExpressionStatement" } as never, new Set<string>());
9
+ * ```
10
+ */
11
+ function collectAssertStatementIdentifiers(statement, identifiers) {
12
+ if (!statement.phases.includes("Assert")) {
13
+ return;
14
+ }
15
+ if (statement.node.type !== "VariableDeclaration") {
16
+ collectReferencedIdentifiers(statement.node, identifiers);
17
+ return;
18
+ }
19
+ for (const declaration of statement.node.declarations) {
20
+ if (declaration.init !== null && declaration.init !== void 0) {
21
+ collectReferencedIdentifiers(declaration.init, identifiers);
22
+ }
23
+ }
24
+ }
25
+ /**
26
+ * Collects referenced identifier names from an ESTree node.
27
+ * @param node Node to inspect.
28
+ * @param identifiers Identifier set updated in place.
29
+ * @example
30
+ * ```typescript
31
+ * collectReferencedIdentifiers({ name: "value", type: "Identifier" }, new Set<string>());
32
+ * ```
33
+ */
34
+ function collectReferencedIdentifiers(node, identifiers) {
35
+ if (node.type === "Identifier") {
36
+ identifiers.add(node.name);
37
+ return;
38
+ }
39
+ for (const [key, value] of Object.entries(node)) {
40
+ collectReferencedValue(key, value, identifiers);
41
+ }
42
+ }
43
+ /**
44
+ * Collects referenced identifiers from one object entry on an ESTree node.
45
+ * @param key Entry key being inspected.
46
+ * @param value Entry value being inspected.
47
+ * @param identifiers Identifier set updated in place.
48
+ * @example
49
+ * ```typescript
50
+ * collectReferencedValue("type", "Identifier", new Set<string>());
51
+ * ```
52
+ */
53
+ function collectReferencedValue(key, value, identifiers) {
54
+ if (key === "parent") {
55
+ return;
56
+ }
57
+ if (Array.isArray(value)) {
58
+ for (const item of value) {
59
+ if (isNode(item)) {
60
+ collectReferencedIdentifiers(item, identifiers);
61
+ }
62
+ }
63
+ return;
64
+ }
65
+ if (isNode(value)) {
66
+ collectReferencedIdentifiers(value, identifiers);
67
+ }
68
+ }
69
+ /**
70
+ * Gets identifiers declared by an Act-phase variable declaration.
71
+ * @param statement Statement to inspect.
72
+ * @returns Declared identifier names.
73
+ * @example
74
+ * ```typescript
75
+ * getActDeclaredIdentifiers({ declarations: [], kind: "const", type: "VariableDeclaration" } as never);
76
+ * ```
77
+ */
78
+ function getActDeclaredIdentifiers(statement) {
79
+ const identifiers = new Set();
80
+ if (statement.type !== "VariableDeclaration") {
81
+ return identifiers;
82
+ }
83
+ for (const declaration of statement.declarations) {
84
+ collectPatternIdentifiers(declaration.id, identifiers);
85
+ }
86
+ return identifiers;
87
+ }
88
+ /**
89
+ * Collects all identifiers referenced from the Assert phase.
90
+ * @param analysis Parsed test-block analysis.
91
+ * @returns Referenced identifier names from Assert statements.
92
+ * @example
93
+ * ```typescript
94
+ * getAssertReferencedIdentifiers({ statements: [] } as never);
95
+ * ```
96
+ */
97
+ function getAssertReferencedIdentifiers(analysis) {
98
+ const identifiers = new Set();
99
+ for (const statement of analysis.statements) {
100
+ collectAssertStatementIdentifiers(statement, identifiers);
101
+ }
102
+ return identifiers;
103
+ }
104
+ /**
105
+ * Checks whether an Act-phase declaration is later referenced from Assert.
106
+ * @param assertReferencedIdentifiers Referenced identifiers collected from Assert.
107
+ * @param statement Statement to inspect.
108
+ * @returns True when one declared identifier is asserted later.
109
+ * @example
110
+ * ```typescript
111
+ * isActResultAsserted(new Set<string>(), { type: "ExpressionStatement" } as never);
112
+ * ```
113
+ */
114
+ function isActResultAsserted(assertReferencedIdentifiers, statement) {
115
+ for (const identifier of getActDeclaredIdentifiers(statement)) {
116
+ if (assertReferencedIdentifiers.has(identifier)) {
117
+ return true;
118
+ }
119
+ }
120
+ return false;
121
+ }
122
+ /**
123
+ * Checks whether an unknown value is an ESTree node.
124
+ * @param value Unknown value to inspect.
125
+ * @returns True when the value has the shape of an ESTree node.
126
+ * @example
127
+ * ```typescript
128
+ * isNode({ type: "Identifier" });
129
+ * ```
130
+ */
131
+ function isNode(value) {
132
+ return (typeof value === "object" &&
133
+ value !== null &&
134
+ "type" in value &&
135
+ typeof value.type === "string");
136
+ }
137
+ export { getAssertReferencedIdentifiers, isActResultAsserted };
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2UtcHVyaXR5LWlkZW50aWZpZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2VuZm9yY2UtYWFhLXBoYXNlLXB1cml0eS9waGFzZS1wdXJpdHktaWRlbnRpZmllcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRbEU7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGlDQUFpQyxDQUN4QyxTQUFrRCxFQUNsRCxXQUF3QjtJQUV4QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPO0lBQ1QsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztRQUNsRCw0QkFBNEIsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFELE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxNQUFNLFdBQVcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdELDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDRCQUE0QixDQUNuQyxJQUFpQixFQUNqQixXQUF3QjtJQUV4QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDL0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsT0FBTztJQUNULENBQUM7SUFFRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2hELHNCQUFzQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLHNCQUFzQixDQUM3QixHQUFXLEVBQ1gsS0FBYyxFQUNkLFdBQXdCO0lBRXhCLElBQUksR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3JCLE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNqQiw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPO0lBQ1QsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEIsNEJBQTRCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHlCQUF5QixDQUFDLFNBQTJCO0lBQzVELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFdEMsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLHFCQUFxQixFQUFFLENBQUM7UUFDN0MsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELEtBQUssTUFBTSxXQUFXLElBQUksU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2pELHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsOEJBQThCLENBQ3JDLFFBQTJCO0lBRTNCLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFdEMsS0FBSyxNQUFNLFNBQVMsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDNUMsaUNBQWlDLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FDMUIsMkJBQXdDLEVBQ3hDLFNBQTJCO0lBRTNCLEtBQUssTUFBTSxVQUFVLElBQUkseUJBQXlCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2hELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsTUFBTSxDQUFDLEtBQWM7SUFDNUIsT0FBTyxDQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsS0FBSyxLQUFLLElBQUk7UUFDZCxNQUFNLElBQUksS0FBSztRQUNmLE9BQVEsS0FBdUIsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUNsRCxDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxtQkFBbUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBUZXN0QmxvY2tBbmFseXNpcyB9IGZyb20gXCIuLi9hYWFcIjtcclxuXHJcbmltcG9ydCB7IGNvbGxlY3RQYXR0ZXJuSWRlbnRpZmllcnMgfSBmcm9tIFwiLi9wYXR0ZXJuLWlkZW50aWZpZXJzXCI7XHJcblxyXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXHJcbmludGVyZmFjZSBOb2RlQ2FuZGlkYXRlIHtcclxuICAvKiogT3B0aW9uYWwgRVNUcmVlIG5vZGUgdHlwZSBtYXJrZXIuICovXHJcbiAgdHlwZT86IHVua25vd247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0cyByZWZlcmVuY2VkIGlkZW50aWZpZXJzIGZyb20gb25lIEFzc2VydC1waGFzZSBzdGF0ZW1lbnQuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgU3RhdGVtZW50IHRvIGluc3BlY3QuXHJcbiAqIEBwYXJhbSBpZGVudGlmaWVycyBJZGVudGlmaWVyIHNldCB1cGRhdGVkIGluIHBsYWNlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbGxlY3RBc3NlcnRTdGF0ZW1lbnRJZGVudGlmaWVycyh7IHR5cGU6IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiIH0gYXMgbmV2ZXIsIG5ldyBTZXQ8c3RyaW5nPigpKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0QXNzZXJ0U3RhdGVtZW50SWRlbnRpZmllcnMoXHJcbiAgc3RhdGVtZW50OiBUZXN0QmxvY2tBbmFseXNpc1tcInN0YXRlbWVudHNcIl1bbnVtYmVyXSxcclxuICBpZGVudGlmaWVyczogU2V0PHN0cmluZz4sXHJcbik6IHZvaWQge1xyXG4gIGlmICghc3RhdGVtZW50LnBoYXNlcy5pbmNsdWRlcyhcIkFzc2VydFwiKSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKHN0YXRlbWVudC5ub2RlLnR5cGUgIT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XHJcbiAgICBjb2xsZWN0UmVmZXJlbmNlZElkZW50aWZpZXJzKHN0YXRlbWVudC5ub2RlLCBpZGVudGlmaWVycyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBmb3IgKGNvbnN0IGRlY2xhcmF0aW9uIG9mIHN0YXRlbWVudC5ub2RlLmRlY2xhcmF0aW9ucykge1xyXG4gICAgaWYgKGRlY2xhcmF0aW9uLmluaXQgIT09IG51bGwgJiYgZGVjbGFyYXRpb24uaW5pdCAhPT0gdm9pZCAwKSB7XHJcbiAgICAgIGNvbGxlY3RSZWZlcmVuY2VkSWRlbnRpZmllcnMoZGVjbGFyYXRpb24uaW5pdCwgaWRlbnRpZmllcnMpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3RzIHJlZmVyZW5jZWQgaWRlbnRpZmllciBuYW1lcyBmcm9tIGFuIEVTVHJlZSBub2RlLlxyXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGluc3BlY3QuXHJcbiAqIEBwYXJhbSBpZGVudGlmaWVycyBJZGVudGlmaWVyIHNldCB1cGRhdGVkIGluIHBsYWNlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbGxlY3RSZWZlcmVuY2VkSWRlbnRpZmllcnMoeyBuYW1lOiBcInZhbHVlXCIsIHR5cGU6IFwiSWRlbnRpZmllclwiIH0sIG5ldyBTZXQ8c3RyaW5nPigpKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0UmVmZXJlbmNlZElkZW50aWZpZXJzKFxyXG4gIG5vZGU6IEVTVHJlZS5Ob2RlLFxyXG4gIGlkZW50aWZpZXJzOiBTZXQ8c3RyaW5nPixcclxuKTogdm9pZCB7XHJcbiAgaWYgKG5vZGUudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIpIHtcclxuICAgIGlkZW50aWZpZXJzLmFkZChub2RlLm5hbWUpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobm9kZSkpIHtcclxuICAgIGNvbGxlY3RSZWZlcmVuY2VkVmFsdWUoa2V5LCB2YWx1ZSwgaWRlbnRpZmllcnMpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3RzIHJlZmVyZW5jZWQgaWRlbnRpZmllcnMgZnJvbSBvbmUgb2JqZWN0IGVudHJ5IG9uIGFuIEVTVHJlZSBub2RlLlxyXG4gKiBAcGFyYW0ga2V5IEVudHJ5IGtleSBiZWluZyBpbnNwZWN0ZWQuXHJcbiAqIEBwYXJhbSB2YWx1ZSBFbnRyeSB2YWx1ZSBiZWluZyBpbnNwZWN0ZWQuXHJcbiAqIEBwYXJhbSBpZGVudGlmaWVycyBJZGVudGlmaWVyIHNldCB1cGRhdGVkIGluIHBsYWNlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbGxlY3RSZWZlcmVuY2VkVmFsdWUoXCJ0eXBlXCIsIFwiSWRlbnRpZmllclwiLCBuZXcgU2V0PHN0cmluZz4oKSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY29sbGVjdFJlZmVyZW5jZWRWYWx1ZShcclxuICBrZXk6IHN0cmluZyxcclxuICB2YWx1ZTogdW5rbm93bixcclxuICBpZGVudGlmaWVyczogU2V0PHN0cmluZz4sXHJcbik6IHZvaWQge1xyXG4gIGlmIChrZXkgPT09IFwicGFyZW50XCIpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XHJcbiAgICAgIGlmIChpc05vZGUoaXRlbSkpIHtcclxuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZElkZW50aWZpZXJzKGl0ZW0sIGlkZW50aWZpZXJzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcclxuICAgIGNvbGxlY3RSZWZlcmVuY2VkSWRlbnRpZmllcnModmFsdWUsIGlkZW50aWZpZXJzKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIGlkZW50aWZpZXJzIGRlY2xhcmVkIGJ5IGFuIEFjdC1waGFzZSB2YXJpYWJsZSBkZWNsYXJhdGlvbi5cclxuICogQHBhcmFtIHN0YXRlbWVudCBTdGF0ZW1lbnQgdG8gaW5zcGVjdC5cclxuICogQHJldHVybnMgRGVjbGFyZWQgaWRlbnRpZmllciBuYW1lcy5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBnZXRBY3REZWNsYXJlZElkZW50aWZpZXJzKHsgZGVjbGFyYXRpb25zOiBbXSwga2luZDogXCJjb25zdFwiLCB0eXBlOiBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIiB9IGFzIG5ldmVyKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRBY3REZWNsYXJlZElkZW50aWZpZXJzKHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCk6IFNldDxzdHJpbmc+IHtcclxuICBjb25zdCBpZGVudGlmaWVycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxuICBpZiAoc3RhdGVtZW50LnR5cGUgIT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XHJcbiAgICByZXR1cm4gaWRlbnRpZmllcnM7XHJcbiAgfVxyXG5cclxuICBmb3IgKGNvbnN0IGRlY2xhcmF0aW9uIG9mIHN0YXRlbWVudC5kZWNsYXJhdGlvbnMpIHtcclxuICAgIGNvbGxlY3RQYXR0ZXJuSWRlbnRpZmllcnMoZGVjbGFyYXRpb24uaWQsIGlkZW50aWZpZXJzKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBpZGVudGlmaWVycztcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3RzIGFsbCBpZGVudGlmaWVycyByZWZlcmVuY2VkIGZyb20gdGhlIEFzc2VydCBwaGFzZS5cclxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxyXG4gKiBAcmV0dXJucyBSZWZlcmVuY2VkIGlkZW50aWZpZXIgbmFtZXMgZnJvbSBBc3NlcnQgc3RhdGVtZW50cy5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBnZXRBc3NlcnRSZWZlcmVuY2VkSWRlbnRpZmllcnMoeyBzdGF0ZW1lbnRzOiBbXSB9IGFzIG5ldmVyKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRBc3NlcnRSZWZlcmVuY2VkSWRlbnRpZmllcnMoXHJcbiAgYW5hbHlzaXM6IFRlc3RCbG9ja0FuYWx5c2lzLFxyXG4pOiBTZXQ8c3RyaW5nPiB7XHJcbiAgY29uc3QgaWRlbnRpZmllcnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2YgYW5hbHlzaXMuc3RhdGVtZW50cykge1xyXG4gICAgY29sbGVjdEFzc2VydFN0YXRlbWVudElkZW50aWZpZXJzKHN0YXRlbWVudCwgaWRlbnRpZmllcnMpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYW4gQWN0LXBoYXNlIGRlY2xhcmF0aW9uIGlzIGxhdGVyIHJlZmVyZW5jZWQgZnJvbSBBc3NlcnQuXHJcbiAqIEBwYXJhbSBhc3NlcnRSZWZlcmVuY2VkSWRlbnRpZmllcnMgUmVmZXJlbmNlZCBpZGVudGlmaWVycyBjb2xsZWN0ZWQgZnJvbSBBc3NlcnQuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgU3RhdGVtZW50IHRvIGluc3BlY3QuXHJcbiAqIEByZXR1cm5zIFRydWUgd2hlbiBvbmUgZGVjbGFyZWQgaWRlbnRpZmllciBpcyBhc3NlcnRlZCBsYXRlci5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc0FjdFJlc3VsdEFzc2VydGVkKG5ldyBTZXQ8c3RyaW5nPigpLCB7IHR5cGU6IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiIH0gYXMgbmV2ZXIpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzQWN0UmVzdWx0QXNzZXJ0ZWQoXHJcbiAgYXNzZXJ0UmVmZXJlbmNlZElkZW50aWZpZXJzOiBTZXQ8c3RyaW5nPixcclxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQsXHJcbik6IGJvb2xlYW4ge1xyXG4gIGZvciAoY29uc3QgaWRlbnRpZmllciBvZiBnZXRBY3REZWNsYXJlZElkZW50aWZpZXJzKHN0YXRlbWVudCkpIHtcclxuICAgIGlmIChhc3NlcnRSZWZlcmVuY2VkSWRlbnRpZmllcnMuaGFzKGlkZW50aWZpZXIpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYW4gdW5rbm93biB2YWx1ZSBpcyBhbiBFU1RyZWUgbm9kZS5cclxuICogQHBhcmFtIHZhbHVlIFVua25vd24gdmFsdWUgdG8gaW5zcGVjdC5cclxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSB2YWx1ZSBoYXMgdGhlIHNoYXBlIG9mIGFuIEVTVHJlZSBub2RlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzTm9kZSh7IHR5cGU6IFwiSWRlbnRpZmllclwiIH0pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEVTVHJlZS5Ob2RlIHtcclxuICByZXR1cm4gKFxyXG4gICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXHJcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgXCJ0eXBlXCIgaW4gdmFsdWUgJiZcclxuICAgIHR5cGVvZiAodmFsdWUgYXMgTm9kZUNhbmRpZGF0ZSkudHlwZSA9PT0gXCJzdHJpbmdcIlxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCB7IGdldEFzc2VydFJlZmVyZW5jZWRJZGVudGlmaWVycywgaXNBY3RSZXN1bHRBc3NlcnRlZCB9O1xyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ /** Companion marker for the phase-purity reporting behavior tests. */
2
+ declare const phasePurityReportingBehaviorCompanion = true;
3
+ export { phasePurityReportingBehaviorCompanion };
4
+ //# sourceMappingURL=phase-purity-reporting.behavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-purity-reporting.behavior.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,QAAA,MAAM,qCAAqC,OAAO,CAAC;AAEnD,OAAO,EAAE,qCAAqC,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Companion marker for the phase-purity reporting behavior tests. */
2
+ const phasePurityReportingBehaviorCompanion = true;
3
+ export { phasePurityReportingBehaviorCompanion };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2UtcHVyaXR5LXJlcG9ydGluZy5iZWhhdmlvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9lbmZvcmNlLWFhYS1waGFzZS1wdXJpdHkvcGhhc2UtcHVyaXR5LXJlcG9ydGluZy5iZWhhdmlvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzRUFBc0U7QUFDdEUsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLENBQUM7QUFFbkQsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQ29tcGFuaW9uIG1hcmtlciBmb3IgdGhlIHBoYXNlLXB1cml0eSByZXBvcnRpbmcgYmVoYXZpb3IgdGVzdHMuICovXHJcbmNvbnN0IHBoYXNlUHVyaXR5UmVwb3J0aW5nQmVoYXZpb3JDb21wYW5pb24gPSB0cnVlO1xyXG5cclxuZXhwb3J0IHsgcGhhc2VQdXJpdHlSZXBvcnRpbmdCZWhhdmlvckNvbXBhbmlvbiB9O1xyXG4iXX0=
@@ -0,0 +1,14 @@
1
+ import type { Rule } from "eslint";
2
+ import type { TestBlockAnalysis } from "../aaa/index.js";
3
+ /**
4
+ * Reports all enforce-aaa-phase-purity violations for one test block.
5
+ * @param context ESLint rule context.
6
+ * @param analysis Parsed test-block analysis.
7
+ * @example
8
+ * ```typescript
9
+ * reportPhasePurityViolations({ report() {} } as never, { sectionComments: [], statements: [] } as never);
10
+ * ```
11
+ */
12
+ declare function reportPhasePurityViolations(context: Rule.RuleContext, analysis: TestBlockAnalysis): void;
13
+ export { reportPhasePurityViolations };
14
+ //# sourceMappingURL=phase-purity-reporting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-purity-reporting.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAqNhD;;;;;;;;GAQG;AACH,iBAAS,2BAA2B,CAClC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,QAAQ,EAAE,iBAAiB,GAC1B,IAAI,CAyBN;AAgCD,OAAO,EAAE,2BAA2B,EAAE,CAAC"}