@codeperfect/eslint-plugin 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/README.md +3 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/application/custom-rules.d.ts +8 -8
  4. package/dist/application/custom-rules.js +14 -14
  5. package/dist/application/index.d.ts +1 -1
  6. package/dist/application/index.d.ts.map +1 -1
  7. package/dist/application/index.js +2 -2
  8. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  9. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +3 -4
  10. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -1
  11. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +5 -3
  12. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -1
  13. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +17 -7
  14. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
  15. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +29 -2
  16. package/dist/domain/architecture/consistent-barrel-files/index.d.ts +2 -0
  17. package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -1
  18. package/dist/domain/architecture/consistent-barrel-files/index.js +3 -1
  19. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts +5 -0
  20. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -0
  21. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +247 -0
  22. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts +5 -0
  23. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -0
  24. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +136 -0
  25. package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
  26. package/dist/domain/architecture/consistent-barrel-files/rule.js +1 -2
  27. package/dist/domain/architecture/index.d.ts +2 -1
  28. package/dist/domain/architecture/index.d.ts.map +1 -1
  29. package/dist/domain/architecture/index.js +3 -2
  30. package/dist/domain/architecture/no-unused-exports/index.d.ts +3 -0
  31. package/dist/domain/architecture/no-unused-exports/index.d.ts.map +1 -0
  32. package/dist/domain/architecture/no-unused-exports/index.js +2 -0
  33. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts +50 -0
  34. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -0
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +141 -0
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +49 -0
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -0
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +612 -0
  39. package/dist/domain/architecture/no-unused-exports/rule.d.ts +5 -0
  40. package/dist/domain/architecture/no-unused-exports/rule.d.ts.map +1 -0
  41. package/dist/domain/architecture/no-unused-exports/rule.js +82 -0
  42. package/dist/domain/architecture/no-unused-exports/types.d.ts +32 -0
  43. package/dist/domain/architecture/no-unused-exports/types.d.ts.map +1 -0
  44. package/dist/domain/architecture/no-unused-exports/types.js +2 -0
  45. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  46. package/dist/domain/core/no-multiple-declarators/rule.js +53 -4
  47. package/dist/domain/core/no-multiple-declarators/types.d.ts +3 -1
  48. package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -1
  49. package/dist/domain/core/no-multiple-declarators/types.js +5 -2
  50. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  51. package/dist/domain/core/prefer-interface-types/rule.js +90 -22
  52. package/dist/domain/custom-rule-documentation.d.ts +1 -14
  53. package/dist/domain/custom-rule-documentation.d.ts.map +1 -1
  54. package/dist/domain/custom-rule-documentation.js +2 -2
  55. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  56. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +11 -2
  57. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
  58. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +1 -1
  59. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  60. package/dist/domain/docs/no-interface-member-docs/rule.js +7 -2
  61. package/dist/domain/docs/require-example-language/examples.d.ts +4 -15
  62. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  63. package/dist/domain/docs/require-example-language/examples.js +119 -26
  64. package/dist/domain/docs/require-example-language/fixes.d.ts +1 -21
  65. package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
  66. package/dist/domain/docs/require-example-language/fixes.js +5 -2
  67. package/dist/domain/docs/require-example-language/reporting.d.ts +2 -38
  68. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
  69. package/dist/domain/docs/require-example-language/reporting.js +2 -2
  70. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  71. package/dist/domain/docs/require-example-language/rule.js +2 -1
  72. package/dist/domain/docs/require-example-language/types.d.ts +1 -1
  73. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  74. package/dist/domain/docs/require-example-language/types.js +1 -1
  75. package/dist/domain/docs/single-line-jsdoc/rule.js +8 -8
  76. package/dist/domain/index.d.ts +2 -3
  77. package/dist/domain/index.d.ts.map +1 -1
  78. package/dist/domain/index.js +3 -4
  79. package/dist/domain/testing/aaa/analyzer.analysis.d.ts +1 -19
  80. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
  81. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +8 -31
  82. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  83. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +18 -22
  84. package/dist/domain/testing/aaa/analyzer.analysis.js +46 -39
  85. package/dist/domain/testing/aaa/analyzer.assertions.d.ts +1 -17
  86. package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -1
  87. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +1 -3
  88. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
  89. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +3 -4
  90. package/dist/domain/testing/aaa/analyzer.assertions.js +5 -33
  91. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +1 -3
  92. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
  93. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +6 -5
  94. package/dist/domain/testing/aaa/analyzer.classification.d.ts +1 -15
  95. package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -1
  96. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +1 -3
  97. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -1
  98. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +5 -6
  99. package/dist/domain/testing/aaa/analyzer.classification.js +5 -31
  100. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +1 -3
  101. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -1
  102. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +3 -5
  103. package/dist/domain/testing/aaa/analyzer.super.d.ts +1 -7
  104. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  105. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +1 -14
  106. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -1
  107. package/dist/domain/testing/aaa/analyzer.super.helpers.js +2 -4
  108. package/dist/domain/testing/aaa/analyzer.super.js +5 -20
  109. package/dist/domain/testing/aaa/index.d.ts +1 -2
  110. package/dist/domain/testing/aaa/index.d.ts.map +1 -1
  111. package/dist/domain/testing/aaa/index.js +2 -2
  112. package/dist/domain/testing/aaa/types.d.ts +1 -1
  113. package/dist/domain/testing/aaa/types.d.ts.map +1 -1
  114. package/dist/domain/testing/aaa/types.js +1 -1
  115. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
  116. package/dist/domain/testing/assert-actual-expected-names/rule.js +28 -3
  117. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -1
  118. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -1
  119. package/dist/domain/testing/enforce-aaa-phase-purity/index.js +3 -2
  120. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +1 -1
  121. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -1
  122. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
  123. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +1 -1
  124. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
  125. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +78 -16
  126. package/dist/domain/testing/{require-aaa-sections → enforce-aaa-structure}/missing-section-fixes.d.ts +1 -1
  127. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -0
  128. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +150 -0
  129. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  130. package/dist/domain/testing/enforce-aaa-structure/rule.js +166 -7
  131. package/dist/domain/testing/index.d.ts +0 -3
  132. package/dist/domain/testing/index.d.ts.map +1 -1
  133. package/dist/domain/testing/index.js +1 -4
  134. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +1 -15
  135. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -1
  136. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +2 -71
  137. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
  138. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +4 -2
  139. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +1 -13
  140. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
  141. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +3 -21
  142. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
  143. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +2 -1
  144. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
  145. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +1 -1
  146. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +6 -6
  147. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +1 -12
  148. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
  149. package/dist/domain/testing/prefer-vi-mocked-import/match.js +149 -15
  150. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  151. package/dist/domain/testing/require-act-result-capture/rule.js +37 -8
  152. package/dist/domain/testing/require-test-companion/index.d.ts +0 -1
  153. package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -1
  154. package/dist/domain/testing/require-test-companion/index.js +1 -2
  155. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts +2 -1
  156. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
  157. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +13 -58
  158. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts +2 -1
  159. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -1
  160. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -5
  161. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  162. package/dist/domain/testing/require-test-companion/rule.js +7 -7
  163. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
  164. package/dist/domain/testing/single-act-statement/rule.js +6 -3
  165. package/dist/index.d.ts +1 -1
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +2 -2
  168. package/dist/infrastructure/codeperfect-plugin.d.ts +6 -6
  169. package/dist/infrastructure/codeperfect-plugin.js +5 -5
  170. package/dist/infrastructure/presets.d.ts.map +1 -1
  171. package/dist/infrastructure/presets.js +23 -7
  172. package/package.json +24 -31
  173. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +0 -41
  174. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
  175. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -87
  176. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +0 -40
  177. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
  178. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -91
  179. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +0 -4
  180. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +0 -1
  181. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +0 -4
  182. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts +0 -141
  183. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
  184. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +0 -20
  185. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +0 -1
  186. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +0 -25
  187. package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +0 -235
  188. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +0 -101
  189. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +0 -1
  190. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +0 -108
  191. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +0 -35
  192. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +0 -1
  193. package/dist/domain/core/no-multiple-declarators/rule.fixes.js +0 -95
  194. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +0 -4
  195. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +0 -1
  196. package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +0 -4
  197. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +0 -4
  198. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +0 -1
  199. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +0 -4
  200. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts +0 -110
  201. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
  202. package/dist/domain/core/prefer-interface-types/test-helpers.js +0 -116
  203. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -89
  204. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
  205. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
  206. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts +0 -103
  207. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
  208. package/dist/domain/docs/no-interface-member-docs/test-helpers.js +0 -157
  209. package/dist/domain/docs/require-example-language/create-fixer.d.ts +0 -5
  210. package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +0 -1
  211. package/dist/domain/docs/require-example-language/create-fixer.js +0 -5
  212. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +0 -4
  213. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +0 -1
  214. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +0 -5
  215. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +0 -4
  216. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +0 -1
  217. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +0 -5
  218. package/dist/domain/docs/test-helpers.d.ts +0 -50
  219. package/dist/domain/docs/test-helpers.d.ts.map +0 -1
  220. package/dist/domain/docs/test-helpers.js +0 -107
  221. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts +0 -4
  222. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts.map +0 -1
  223. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.js +0 -4
  224. package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts +0 -4
  225. package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts.map +0 -1
  226. package/dist/domain/testing/aaa/analyzer.assertions.destructured.js +0 -4
  227. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +0 -9
  228. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +0 -1
  229. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +0 -10
  230. package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts +0 -4
  231. package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts.map +0 -1
  232. package/dist/domain/testing/aaa/analyzer.classification.mutations.js +0 -4
  233. package/dist/domain/testing/aaa/analyzer.d.ts +0 -46
  234. package/dist/domain/testing/aaa/analyzer.d.ts.map +0 -1
  235. package/dist/domain/testing/aaa/analyzer.js +0 -59
  236. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts +0 -4
  237. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts.map +0 -1
  238. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.js +0 -4
  239. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts +0 -4
  240. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts.map +0 -1
  241. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.js +0 -4
  242. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +0 -4
  243. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +0 -1
  244. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +0 -4
  245. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +0 -42
  246. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +0 -1
  247. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +0 -188
  248. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts +0 -5
  249. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
  250. package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +0 -37
  251. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +0 -20
  252. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +0 -1
  253. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +0 -39
  254. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +0 -97
  255. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +0 -1
  256. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +0 -174
  257. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +0 -2
  258. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +0 -1
  259. package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +0 -2
  260. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +0 -14
  261. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +0 -1
  262. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +0 -84
  263. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +0 -13
  264. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +0 -1
  265. package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +0 -195
  266. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +0 -25
  267. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +0 -1
  268. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +0 -96
  269. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +0 -32
  270. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +0 -1
  271. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +0 -164
  272. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +0 -5
  273. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +0 -1
  274. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +0 -4
  275. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +0 -1
  276. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +0 -4
  277. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +0 -4
  278. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +0 -1
  279. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +0 -4
  280. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +0 -88
  281. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +0 -4
  282. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +0 -1
  283. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +0 -4
  284. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +0 -24
  285. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +0 -1
  286. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +0 -113
  287. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +0 -36
  288. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +0 -1
  289. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +0 -138
  290. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +0 -187
  291. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +0 -1
  292. package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +0 -2
  293. package/dist/domain/testing/require-aaa-sections/index.d.ts +0 -2
  294. package/dist/domain/testing/require-aaa-sections/index.d.ts.map +0 -1
  295. package/dist/domain/testing/require-aaa-sections/index.js +0 -2
  296. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +0 -1
  297. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +0 -150
  298. package/dist/domain/testing/require-aaa-sections/rule.d.ts +0 -5
  299. package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +0 -1
  300. package/dist/domain/testing/require-aaa-sections/rule.js +0 -134
  301. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +0 -104
  302. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +0 -1
  303. package/dist/domain/testing/require-aaa-sections/rule.reporting.js +0 -216
  304. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts +0 -51
  305. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
  306. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +0 -184
  307. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts +0 -28
  308. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
  309. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +0 -26
@@ -1,188 +0,0 @@
1
- import { Linter } from "eslint";
2
- import { parser } from "typescript-eslint";
3
- import { vi } from "vitest";
4
- import { enforceAaaPhasePurityRule } from "./rule.js";
5
- /**
6
- * Creates the mocked AAA module used by the rule test helper.
7
- * @param mockedAnalysis Mocked analysis returned by the helper.
8
- * @returns Partial AAA module used for Vitest mocking.
9
- * @example
10
- * ```typescript
11
- * const module = createMockedAaaModule(createMockedAnalysis({ sectionComments: [], statements: [] }));
12
- * void module;
13
- * ```
14
- */
15
- function createMockedAaaModule(mockedAnalysis) {
16
- return {
17
- analyzeTestBlock: () => mockedAnalysis,
18
- hasAssertion: () => false,
19
- hasAsyncLogic: () => false,
20
- hasAwait: () => false,
21
- hasCapturableActResult: () => false,
22
- hasMutation: () => false,
23
- isMeaningfulActStatement: () => false,
24
- isSetupLikeStatement: () => false,
25
- isValidAssertStatement: () => false,
26
- };
27
- }
28
- /**
29
- * Creates a full analysis object from the minimal fields used in tests.
30
- * @param analysis Minimal analysis input used by tests.
31
- * @returns Complete analysis object consumed by the rule.
32
- * @example
33
- * ```typescript
34
- * const result = createMockedAnalysis({ sectionComments: [], statements: [] });
35
- * void result;
36
- * ```
37
- */
38
- function createMockedAnalysis(analysis) {
39
- return {
40
- body: createMockedBody(),
41
- bodyLineCount: 0,
42
- callExpression: createMockedCallExpression(),
43
- newline: "\n",
44
- sectionComments: analysis.sectionComments.map((sectionComment) => ({
45
- comment: {
46
- loc: {
47
- end: { column: 0, line: 1 },
48
- start: { column: 0, line: 1 },
49
- },
50
- range: [0, 0],
51
- type: "Line",
52
- value: ` ${sectionComment.phases.join(" / ")}`,
53
- },
54
- phases: sectionComment.phases,
55
- })),
56
- sourceText: "",
57
- statements: analysis.statements.map((statement) => ({
58
- node: statement.node,
59
- phase: statement.phases.at(-1),
60
- phases: statement.phases,
61
- })),
62
- };
63
- }
64
- /**
65
- * Creates a minimal located block statement for mocked AAA analysis.
66
- * @returns Minimal located block statement.
67
- * @example
68
- * ```typescript
69
- * const body = createMockedBody();
70
- * ```
71
- */
72
- function createMockedBody() {
73
- return {
74
- body: [],
75
- loc: {
76
- end: { column: 0, line: 1 },
77
- start: { column: 0, line: 1 },
78
- },
79
- range: [0, 0],
80
- type: "BlockStatement",
81
- };
82
- }
83
- /**
84
- * Creates a minimal located call expression for mocked AAA analysis.
85
- * @returns Minimal located call expression.
86
- * @example
87
- * ```typescript
88
- * const callExpression = createMockedCallExpression();
89
- * ```
90
- */
91
- function createMockedCallExpression() {
92
- return {
93
- arguments: [],
94
- callee: { name: "it", type: "Identifier" },
95
- loc: {
96
- end: { column: 0, line: 1 },
97
- start: { column: 0, line: 1 },
98
- },
99
- optional: false,
100
- range: [0, 0],
101
- type: "CallExpression",
102
- };
103
- }
104
- /**
105
- * Creates the mocked rule listener used by the helper.
106
- * @param analysis Mocked analysis returned from `analyzeTestBlock`.
107
- * @param report Report spy passed into the mocked rule context.
108
- * @returns Call-expression listener produced by the mocked rule.
109
- * @example
110
- * ```typescript
111
- * const listener = await loadMockedListener({ sectionComments: [], statements: [] }, vi.fn());
112
- * void listener;
113
- * ```
114
- */
115
- async function loadMockedListener(analysis, report) {
116
- vi.resetModules();
117
- vi.doMock("../aaa", () => createMockedAaaModule(createMockedAnalysis(analysis)));
118
- const ruleModule = await import("./rule.js");
119
- return ruleModule.enforceAaaPhasePurityRule.create({ report })
120
- .CallExpression;
121
- }
122
- /**
123
- * Resets the mocked AAA module state between test runs.
124
- * @example
125
- * ```typescript
126
- * resetMockedAaaModule();
127
- * ```
128
- */
129
- function resetMockedAaaModule() {
130
- vi.doUnmock("../aaa");
131
- vi.resetModules();
132
- }
133
- /**
134
- * Runs the rule against one source snippet.
135
- * @param code Source code passed to the linter.
136
- * @returns Lint messages produced by the rule.
137
- * @example
138
- * ```typescript
139
- * const messages = runRule('it("works", () => {});');
140
- * void messages;
141
- * ```
142
- */
143
- function runRule(code) {
144
- const linter = new Linter({ configType: "flat" });
145
- return linter.verify(code, [
146
- {
147
- files: ["**/*.ts"],
148
- languageOptions: {
149
- ecmaVersion: 2022,
150
- parser,
151
- sourceType: "module",
152
- },
153
- plugins: {
154
- codeperfect: {
155
- rules: {
156
- "enforce-aaa-phase-purity": enforceAaaPhasePurityRule,
157
- },
158
- },
159
- },
160
- rules: {
161
- "codeperfect/enforce-aaa-phase-purity": "error",
162
- },
163
- },
164
- ], "example.spec.ts");
165
- }
166
- /**
167
- * Runs the rule with a mocked AAA analysis result.
168
- * @param analysis Mocked analysis returned from `analyzeTestBlock`.
169
- * @returns Captured report calls issued by the rule.
170
- * @example
171
- * ```typescript
172
- * const calls = await runRuleWithMockedAnalysis({ sectionComments: [], statements: [] });
173
- * void calls;
174
- * ```
175
- */
176
- async function runRuleWithMockedAnalysis(analysis) {
177
- const report = vi.fn();
178
- const listener = await loadMockedListener(analysis, report);
179
- try {
180
- listener?.({ type: "CallExpression" });
181
- return report.mock.calls;
182
- }
183
- finally {
184
- resetMockedAaaModule();
185
- }
186
- }
187
- export { runRule, runRuleWithMockedAnalysis };
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS10ZXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvZW5mb3JjZS1hYWEtcGhhc2UtcHVyaXR5L3J1bGUtdGVzdC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLNUIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBeUJuRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLHFCQUFxQixDQUM1QixjQUFpQztJQUVqQyxPQUFPO1FBQ0wsZ0JBQWdCLEVBQUUsR0FBc0IsRUFBRSxDQUFDLGNBQWM7UUFDekQsWUFBWSxFQUFFLEdBQVksRUFBRSxDQUFDLEtBQUs7UUFDbEMsYUFBYSxFQUFFLEdBQVksRUFBRSxDQUFDLEtBQUs7UUFDbkMsUUFBUSxFQUFFLEdBQVksRUFBRSxDQUFDLEtBQUs7UUFDOUIsc0JBQXNCLEVBQUUsR0FBWSxFQUFFLENBQUMsS0FBSztRQUM1QyxXQUFXLEVBQUUsR0FBWSxFQUFFLENBQUMsS0FBSztRQUNqQyx3QkFBd0IsRUFBRSxHQUFZLEVBQUUsQ0FBQyxLQUFLO1FBQzlDLG9CQUFvQixFQUFFLEdBQVksRUFBRSxDQUFDLEtBQUs7UUFDMUMsc0JBQXNCLEVBQUUsR0FBWSxFQUFFLENBQUMsS0FBSztLQUM3QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsb0JBQW9CLENBQzNCLFFBQTZCO0lBRTdCLE9BQU87UUFDTCxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7UUFDeEIsYUFBYSxFQUFFLENBQUM7UUFDaEIsY0FBYyxFQUFFLDBCQUEwQixFQUFFO1FBQzVDLE9BQU8s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RDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLE9BQU8sQ0FBQyxJQUFZO0lBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFbEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixJQUFJLEVBQ0o7UUFDRTtZQUNFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNsQixlQUFlLEVBQUU7Z0JBQ2YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE1BQU07Z0JBQ04sVUFBVSxFQUFFLFFBQVE7YUFDckI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsV0FBVyxFQUFFO29CQUNYLEtBQUssRUFBRTt3QkFDTCwwQkFBMEIsRUFBRSx5QkFBeUI7cUJBQ3REO2lCQUNGO2FBQ0Y7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsc0NBQXNDLEVBQUUsT0FBTzthQUNoRDtTQUNGO0tBQ0YsRUFDRCxpQkFBaUIsQ0FDbEIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxLQUFLLFVBQVUseUJBQXlCLENBQ3RDLFFBQTZCO0lBRTdCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN2QixNQUFNLFFBQVEsR0FBRyxNQUFNLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU1RCxJQUFJLENBQUM7UUFDSCxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBMkIsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFvQixDQUFDO0lBQzFDLENBQUM7WUFBUyxDQUFDO1FBQ1Qsb0JBQW9CLEVBQUUsQ0FBQztJQUN6QixDQUFDO0FBQ0gsQ0FBQztBQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcclxuXHJcbmltcG9ydCB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcclxuaW1wb3J0IHsgcGFyc2VyIH0gZnJvbSBcInR5cGVzY3JpcHQtZXNsaW50XCI7XHJcbmltcG9ydCB7IHZpIH0gZnJvbSBcInZpdGVzdFwiO1xyXG5cclxuaW1wb3J0IHR5cGUgKiBhcyBBYWFNb2R1bGUgZnJvbSBcIi4uL2FhYVwiO1xyXG5pbXBvcnQgdHlwZSB7IFRlc3RCbG9ja0FuYWx5c2lzIH0gZnJvbSBcIi4uL2FhYVwiO1xyXG5cclxuaW1wb3J0IHsgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcclxuXHJcbi8qKiBNaW5pbWFsIGFuYWx5c2lzIGlucHV0IGFjY2VwdGVkIGJ5IHRoZSBtb2NrZWQgQUFBIGhlbHBlci4gKi9cclxuaW50ZXJmYWNlIE1vY2tlZEFuYWx5c2lzSW5wdXQge1xyXG4gIC8qKiBTZWN0aW9uIGNvbW1lbnRzIHJlbGV2YW50IHRvIHRoZSBydWxlIHVuZGVyIHRlc3QuICovXHJcbiAgc2VjdGlvbkNvbW1lbnRzOiB7XHJcbiAgICAvKiogUGhhc2UgbmFtZXMgZGVjbGFyZWQgYnkgdGhlIHN5bnRoZXRpYyBjb21tZW50LiAqL1xyXG4gICAgcGhhc2VzOiBUZXN0QmxvY2tBbmFseXNpc1tcInNlY3Rpb25Db21tZW50c1wiXVtudW1iZXJdW1wicGhhc2VzXCJdO1xyXG4gIH1bXTtcclxuICAvKiogU3RhdGVtZW50IG1ldGFkYXRhIHJlbGV2YW50IHRvIHRoZSBydWxlIHVuZGVyIHRlc3QuICovXHJcbiAgc3RhdGVtZW50czoge1xyXG4gICAgLyoqIFN5bnRoZXRpYyBzdGF0ZW1lbnQgbm9kZSBwcm92aWRlZCB0byB0aGUgcnVsZS4gKi9cclxuICAgIG5vZGU6IEVTVHJlZS5TdGF0ZW1lbnQ7XHJcblxyXG4gICAgLyoqIEFjdGl2ZSBwaGFzZXMgYXNzaWduZWQgdG8gdGhlIHN0YXRlbWVudC4gKi9cclxuICAgIHBoYXNlczogVGVzdEJsb2NrQW5hbHlzaXNbXCJzdGF0ZW1lbnRzXCJdW251bWJlcl1bXCJwaGFzZXNcIl07XHJcbiAgfVtdO1xyXG59XHJcblxyXG4vKiogTW9kdWxlIHNoYXBlIHJldHVybmVkIHdoZW4gdGhlIHJ1bGUgaXMgbG9hZGVkIGFmdGVyIG1vY2tpbmcgdGhlIEFBQSBoZWxwZXJzLiAqL1xyXG5pbnRlcmZhY2UgTW9ja2VkUnVsZU1vZHVsZSB7XHJcbiAgLyoqIFJ1bGUgaW1wbGVtZW50YXRpb24gdW5kZXIgdGVzdC4gKi9cclxuICBlbmZvcmNlQWFhUGhhc2VQdXJpdHlSdWxlOiB0eXBlb2YgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIG1vY2tlZCBBQUEgbW9kdWxlIHVzZWQgYnkgdGhlIHJ1bGUgdGVzdCBoZWxwZXIuXHJcbiAqIEBwYXJhbSBtb2NrZWRBbmFseXNpcyBNb2NrZWQgYW5hbHlzaXMgcmV0dXJuZWQgYnkgdGhlIGhlbHBlci5cclxuICogQHJldHVybnMgUGFydGlhbCBBQUEgbW9kdWxlIHVzZWQgZm9yIFZpdGVzdCBtb2NraW5nLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1vZHVsZSA9IGNyZWF0ZU1vY2tlZEFhYU1vZHVsZShjcmVhdGVNb2NrZWRBbmFseXNpcyh7IHNlY3Rpb25Db21tZW50czogW10sIHN0YXRlbWVudHM6IFtdIH0pKTtcclxuICogdm9pZCBtb2R1bGU7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlTW9ja2VkQWFhTW9kdWxlKFxyXG4gIG1vY2tlZEFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcclxuKTogUGFydGlhbDx0eXBlb2YgQWFhTW9kdWxlPiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGFuYWx5emVUZXN0QmxvY2s6ICgpOiBUZXN0QmxvY2tBbmFseXNpcyA9PiBtb2NrZWRBbmFseXNpcyxcclxuICAgIGhhc0Fzc2VydGlvbjogKCk6IGJvb2xlYW4gPT4gZmFsc2UsXHJcbiAgICBoYXNBc3luY0xvZ2ljOiAoKTogYm9vbGVhbiA9PiBmYWxzZSxcclxuICAgIGhhc0F3YWl0OiAoKTogYm9vbGVhbiA9PiBmYWxzZSxcclxuICAgIGhhc0NhcHR1cmFibGVBY3RSZXN1bHQ6ICgpOiBib29sZWFuID0+IGZhbHNlLFxyXG4gICAgaGFzTXV0YXRpb246ICgpOiBib29sZWFuID0+IGZhbHNlLFxyXG4gICAgaXNNZWFuaW5nZnVsQWN0U3RhdGVtZW50OiAoKTogYm9vbGVhbiA9PiBmYWxzZSxcclxuICAgIGlzU2V0dXBMaWtlU3RhdGVtZW50OiAoKTogYm9vbGVhbiA9PiBmYWxzZSxcclxuICAgIGlzVmFsaWRBc3NlcnRTdGF0ZW1lbnQ6ICgpOiBib29sZWFuID0+IGZhbHNlLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgZnVsbCBhbmFseXNpcyBvYmplY3QgZnJvbSB0aGUgbWluaW1hbCBmaWVsZHMgdXNlZCBpbiB0ZXN0cy5cclxuICogQHBhcmFtIGFuYWx5c2lzIE1pbmltYWwgYW5hbHlzaXMgaW5wdXQgdXNlZCBieSB0ZXN0cy5cclxuICogQHJldHVybnMgQ29tcGxldGUgYW5hbHlzaXMgb2JqZWN0IGNvbnN1bWVkIGJ5IHRoZSBydWxlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlc3VsdCA9IGNyZWF0ZU1vY2tlZEFuYWx5c2lzKHsgc2VjdGlvbkNvbW1lbnRzOiBbXSwgc3RhdGVtZW50czogW10gfSk7XHJcbiAqIHZvaWQgcmVzdWx0O1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZU1vY2tlZEFuYWx5c2lzKFxyXG4gIGFuYWx5c2lzOiBNb2NrZWRBbmFseXNpc0lucHV0LFxyXG4pOiBUZXN0QmxvY2tBbmFseXNpcyB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGJvZHk6IGNyZWF0ZU1vY2tlZEJvZHkoKSxcclxuICAgIGJvZHlMaW5lQ291bnQ6IDAsXHJcbiAgICBjYWxsRXhwcmVzc2lvbjogY3JlYXRlTW9ja2VkQ2FsbEV4cHJlc3Npb24oKSxcclxuICAgIG5ld2xpbmU6IFwiXFxuXCIsXHJcbiAgICBzZWN0aW9uQ29tbWVudHM6IGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5tYXAoKHNlY3Rpb25Db21tZW50KSA9PiAoe1xyXG4gICAgICBjb21tZW50OiB7XHJcbiAgICAgICAgbG9jOiB7XHJcbiAgICAgICAgICBlbmQ6IHsgY29sdW1uOiAwLCBsaW5lOiAxIH0sXHJcbiAgICAgICAgICBzdGFydDogeyBjb2x1bW46IDAsIGxpbmU6IDEgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJhbmdlOiBbMCwgMF0sXHJcbiAgICAgICAgdHlwZTogXCJMaW5lXCIsXHJcbiAgICAgICAgdmFsdWU6IGAgJHtzZWN0aW9uQ29tbWVudC5waGFzZXMuam9pbihcIiAvIFwiKX1gLFxyXG4gICAgICB9LFxyXG4gICAgICBwaGFzZXM6IHNlY3Rpb25Db21tZW50LnBoYXNlcyxcclxuICAgIH0pKSxcclxuICAgIHNvdXJjZVRleHQ6IFwiXCIsXHJcbiAgICBzdGF0ZW1lbnRzOiBhbmFseXNpcy5zdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiAoe1xyXG4gICAgICBub2RlOiBzdGF0ZW1lbnQubm9kZSBhcyBUZXN0QmxvY2tBbmFseXNpc1tcInN0YXRlbWVudHNcIl1bbnVtYmVyXVtcIm5vZGVcIl0sXHJcbiAgICAgIHBoYXNlOiBzdGF0ZW1lbnQucGhhc2VzLmF0KC0xKSxcclxuICAgICAgcGhhc2VzOiBzdGF0ZW1lbnQucGhhc2VzLFxyXG4gICAgfSkpLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgbWluaW1hbCBsb2NhdGVkIGJsb2NrIHN0YXRlbWVudCBmb3IgbW9ja2VkIEFBQSBhbmFseXNpcy5cclxuICogQHJldHVybnMgTWluaW1hbCBsb2NhdGVkIGJsb2NrIHN0YXRlbWVudC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBib2R5ID0gY3JlYXRlTW9ja2VkQm9keSgpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZU1vY2tlZEJvZHkoKTogVGVzdEJsb2NrQW5hbHlzaXNbXCJib2R5XCJdIHtcclxuICByZXR1cm4ge1xyXG4gICAgYm9keTogW10sXHJcbiAgICBsb2M6IHtcclxuICAgICAgZW5kOiB7IGNvbHVtbjogMCwgbGluZTogMSB9LFxyXG4gICAgICBzdGFydDogeyBjb2x1bW46IDAsIGxpbmU6IDEgfSxcclxuICAgIH0sXHJcbiAgICByYW5nZTogWzAsIDBdLFxyXG4gICAgdHlwZTogXCJCbG9ja1N0YXRlbWVudFwiLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgbWluaW1hbCBsb2NhdGVkIGNhbGwgZXhwcmVzc2lvbiBmb3IgbW9ja2VkIEFBQSBhbmFseXNpcy5cclxuICogQHJldHVybnMgTWluaW1hbCBsb2NhdGVkIGNhbGwgZXhwcmVzc2lvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBjYWxsRXhwcmVzc2lvbiA9IGNyZWF0ZU1vY2tlZENhbGxFeHByZXNzaW9uKCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlTW9ja2VkQ2FsbEV4cHJlc3Npb24oKTogVGVzdEJsb2NrQW5hbHlzaXNbXCJjYWxsRXhwcmVzc2lvblwiXSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGFyZ3VtZW50czogW10sXHJcbiAgICBjYWxsZWU6IHsgbmFtZTogXCJpdFwiLCB0eXBlOiBcIklkZW50aWZpZXJcIiB9IGFzIEVTVHJlZS5JZGVudGlmaWVyLFxyXG4gICAgbG9jOiB7XHJcbiAgICAgIGVuZDogeyBjb2x1bW46IDAsIGxpbmU6IDEgfSxcclxuICAgICAgc3RhcnQ6IHsgY29sdW1uOiAwLCBsaW5lOiAxIH0sXHJcbiAgICB9LFxyXG4gICAgb3B0aW9uYWw6IGZhbHNlLFxyXG4gICAgcmFuZ2U6IFswLCAwXSxcclxuICAgIHR5cGU6IFwiQ2FsbEV4cHJlc3Npb25cIixcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyB0aGUgbW9ja2VkIHJ1bGUgbGlzdGVuZXIgdXNlZCBieSB0aGUgaGVscGVyLlxyXG4gKiBAcGFyYW0gYW5hbHlzaXMgTW9ja2VkIGFuYWx5c2lzIHJldHVybmVkIGZyb20gYGFuYWx5emVUZXN0QmxvY2tgLlxyXG4gKiBAcGFyYW0gcmVwb3J0IFJlcG9ydCBzcHkgcGFzc2VkIGludG8gdGhlIG1vY2tlZCBydWxlIGNvbnRleHQuXHJcbiAqIEByZXR1cm5zIENhbGwtZXhwcmVzc2lvbiBsaXN0ZW5lciBwcm9kdWNlZCBieSB0aGUgbW9ja2VkIHJ1bGUuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBsb2FkTW9ja2VkTGlzdGVuZXIoeyBzZWN0aW9uQ29tbWVudHM6IFtdLCBzdGF0ZW1lbnRzOiBbXSB9LCB2aS5mbigpKTtcclxuICogdm9pZCBsaXN0ZW5lcjtcclxuICogYGBgXHJcbiAqL1xyXG5hc3luYyBmdW5jdGlvbiBsb2FkTW9ja2VkTGlzdGVuZXIoXHJcbiAgYW5hbHlzaXM6IE1vY2tlZEFuYWx5c2lzSW5wdXQsXHJcbiAgcmVwb3J0OiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj4sXHJcbik6IFByb21pc2U8KChub2RlOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24pID0+IHZvaWQpIHwgdW5kZWZpbmVkPiB7XHJcbiAgdmkucmVzZXRNb2R1bGVzKCk7XHJcbiAgdmkuZG9Nb2NrKFwiLi4vYWFhXCIsICgpID0+XHJcbiAgICBjcmVhdGVNb2NrZWRBYWFNb2R1bGUoY3JlYXRlTW9ja2VkQW5hbHlzaXMoYW5hbHlzaXMpKSxcclxuICApO1xyXG5cclxuICBjb25zdCBydWxlTW9kdWxlOiBNb2NrZWRSdWxlTW9kdWxlID0gYXdhaXQgaW1wb3J0KFwiLi9ydWxlXCIpO1xyXG5cclxuICByZXR1cm4gcnVsZU1vZHVsZS5lbmZvcmNlQWFhUGhhc2VQdXJpdHlSdWxlLmNyZWF0ZSh7IHJlcG9ydCB9IGFzIG5ldmVyKVxyXG4gICAgLkNhbGxFeHByZXNzaW9uIGFzICgobm9kZTogRVNUcmVlLkNhbGxFeHByZXNzaW9uKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlc2V0cyB0aGUgbW9ja2VkIEFBQSBtb2R1bGUgc3RhdGUgYmV0d2VlbiB0ZXN0IHJ1bnMuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogcmVzZXRNb2NrZWRBYWFNb2R1bGUoKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiByZXNldE1vY2tlZEFhYU1vZHVsZSgpOiB2b2lkIHtcclxuICB2aS5kb1VubW9jayhcIi4uL2FhYVwiKTtcclxuICB2aS5yZXNldE1vZHVsZXMoKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJ1bnMgdGhlIHJ1bGUgYWdhaW5zdCBvbmUgc291cmNlIHNuaXBwZXQuXHJcbiAqIEBwYXJhbSBjb2RlIFNvdXJjZSBjb2RlIHBhc3NlZCB0byB0aGUgbGludGVyLlxyXG4gKiBAcmV0dXJucyBMaW50IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IHRoZSBydWxlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1lc3NhZ2VzID0gcnVuUnVsZSgnaXQoXCJ3b3Jrc1wiLCAoKSA9PiB7fSk7Jyk7XHJcbiAqIHZvaWQgbWVzc2FnZXM7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gcnVuUnVsZShjb2RlOiBzdHJpbmcpOiBMaW50ZXIuTGludE1lc3NhZ2VbXSB7XHJcbiAgY29uc3QgbGludGVyID0gbmV3IExpbnRlcih7IGNvbmZpZ1R5cGU6IFwiZmxhdFwiIH0pO1xyXG5cclxuICByZXR1cm4gbGludGVyLnZlcmlmeShcclxuICAgIGNvZGUsXHJcbiAgICBbXHJcbiAgICAgIHtcclxuICAgICAgICBmaWxlczogW1wiKiovKi50c1wiXSxcclxuICAgICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcclxuICAgICAgICAgIGVjbWFWZXJzaW9uOiAyMDIyLFxyXG4gICAgICAgICAgcGFyc2VyLFxyXG4gICAgICAgICAgc291cmNlVHlwZTogXCJtb2R1bGVcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBsdWdpbnM6IHtcclxuICAgICAgICAgIGNvZGVwZXJmZWN0OiB7XHJcbiAgICAgICAgICAgIHJ1bGVzOiB7XHJcbiAgICAgICAgICAgICAgXCJlbmZvcmNlLWFhYS1waGFzZS1wdXJpdHlcIjogZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBydWxlczoge1xyXG4gICAgICAgICAgXCJjb2RlcGVyZmVjdC9lbmZvcmNlLWFhYS1waGFzZS1wdXJpdHlcIjogXCJlcnJvclwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgXCJleGFtcGxlLnNwZWMudHNcIixcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogUnVucyB0aGUgcnVsZSB3aXRoIGEgbW9ja2VkIEFBQSBhbmFseXNpcyByZXN1bHQuXHJcbiAqIEBwYXJhbSBhbmFseXNpcyBNb2NrZWQgYW5hbHlzaXMgcmV0dXJuZWQgZnJvbSBgYW5hbHl6ZVRlc3RCbG9ja2AuXHJcbiAqIEByZXR1cm5zIENhcHR1cmVkIHJlcG9ydCBjYWxscyBpc3N1ZWQgYnkgdGhlIHJ1bGUuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY2FsbHMgPSBhd2FpdCBydW5SdWxlV2l0aE1vY2tlZEFuYWx5c2lzKHsgc2VjdGlvbkNvbW1lbnRzOiBbXSwgc3RhdGVtZW50czogW10gfSk7XHJcbiAqIHZvaWQgY2FsbHM7XHJcbiAqIGBgYFxyXG4gKi9cclxuYXN5bmMgZnVuY3Rpb24gcnVuUnVsZVdpdGhNb2NrZWRBbmFseXNpcyhcclxuICBhbmFseXNpczogTW9ja2VkQW5hbHlzaXNJbnB1dCxcclxuKTogUHJvbWlzZTx1bmtub3duW11bXT4ge1xyXG4gIGNvbnN0IHJlcG9ydCA9IHZpLmZuKCk7XHJcbiAgY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBsb2FkTW9ja2VkTGlzdGVuZXIoYW5hbHlzaXMsIHJlcG9ydCk7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBsaXN0ZW5lcj8uKHsgdHlwZTogXCJDYWxsRXhwcmVzc2lvblwiIH0gYXMgRVNUcmVlLkNhbGxFeHByZXNzaW9uKTtcclxuICAgIHJldHVybiByZXBvcnQubW9jay5jYWxscyBhcyB1bmtub3duW11bXTtcclxuICB9IGZpbmFsbHkge1xyXG4gICAgcmVzZXRNb2NrZWRBYWFNb2R1bGUoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IHJ1blJ1bGUsIHJ1blJ1bGVXaXRoTW9ja2VkQW5hbHlzaXMgfTtcclxuIl19
@@ -1,5 +0,0 @@
1
- import type { Rule } from "eslint";
2
- /** Enforces pure Arrange, Act, and Assert behavior inside AAA-marked tests. */
3
- declare const enforceAaaPhasePurityRule: Rule.RuleModule;
4
- export { enforceAaaPhasePurityRule };
5
- //# sourceMappingURL=rule.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/enforce-aaa-phase-purity/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAKnC,+EAA+E;AAC/E,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAsCrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -1,37 +0,0 @@
1
- import { analyzeTestBlock } from "../aaa/index.js";
2
- import { reportPhasePurityViolations } from "./phase-purity-reporting.js";
3
- /** Enforces pure Arrange, Act, and Assert behavior inside AAA-marked tests. */
4
- const enforceAaaPhasePurityRule = {
5
- create(context) {
6
- return {
7
- CallExpression(node) {
8
- const analysis = analyzeTestBlock(context, node);
9
- if (analysis === void 0) {
10
- return;
11
- }
12
- reportPhasePurityViolations(context, analysis);
13
- },
14
- };
15
- },
16
- meta: {
17
- docs: {
18
- description: "Keep setup, action, and assertions inside their intended AAA phases.",
19
- recommended: false,
20
- url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/enforce-aaa-phase-purity.md",
21
- },
22
- messages: {
23
- actionInArrange: "Keep the function under test out of Arrange; reserve Arrange for setup only.",
24
- assertionOutsideAssert: "Move assertions into the // Assert section so test logic does not leak earlier.",
25
- asyncInArrange: "Do not trigger async behavior in Arrange.",
26
- awaitOutsideAct: "Use await only inside the // Act section.",
27
- missingMeaningfulAct: "The // Act section must contain a meaningful SUT interaction, not only utility or setup calls.",
28
- mutationAfterAct: "Do not mutate test data after the // Act section has run.",
29
- nonAssertionInAssert: "Keep the // Assert section focused on assertions and assertion-local values.",
30
- setupAfterAct: "Do not continue arranging test data after the // Act section has started.",
31
- },
32
- schema: [],
33
- type: "problem",
34
- },
35
- };
36
- export { enforceAaaPhasePurityRule };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9lbmZvcmNlLWFhYS1waGFzZS1wdXJpdHkvcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsK0VBQStFO0FBQy9FLE1BQU0seUJBQXlCLEdBQW9CO0lBQ2pELE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPO1lBQ0wsY0FBYyxDQUFDLElBQUk7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsT0FBTztnQkFDVCxDQUFDO2dCQUNELDJCQUEyQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRCxDQUFDO1NBQzBCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxzRUFBc0U7WUFDeEUsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLDJGQUEyRjtTQUNqRztRQUNELFFBQVEsRUFBRTtZQUNSLGVBQWUsRUFDYiw4RUFBOEU7WUFDaEYsc0JBQXNCLEVBQ3BCLGlGQUFpRjtZQUNuRixjQUFjLEVBQUUsMkNBQTJDO1lBQzNELGVBQWUsRUFBRSwyQ0FBMkM7WUFDNUQsb0JBQW9CLEVBQ2xCLGdHQUFnRztZQUNsRyxnQkFBZ0IsRUFDZCwyREFBMkQ7WUFDN0Qsb0JBQW9CLEVBQ2xCLDhFQUE4RTtZQUNoRixhQUFhLEVBQ1gsMkVBQTJFO1NBQzlFO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgYW5hbHl6ZVRlc3RCbG9jayB9IGZyb20gXCIuLi9hYWFcIjtcbmltcG9ydCB7IHJlcG9ydFBoYXNlUHVyaXR5VmlvbGF0aW9ucyB9IGZyb20gXCIuL3BoYXNlLXB1cml0eS1yZXBvcnRpbmdcIjtcblxuLyoqIEVuZm9yY2VzIHB1cmUgQXJyYW5nZSwgQWN0LCBhbmQgQXNzZXJ0IGJlaGF2aW9yIGluc2lkZSBBQUEtbWFya2VkIHRlc3RzLiAqL1xuY29uc3QgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5emVUZXN0QmxvY2soY29udGV4dCwgbm9kZSk7XG4gICAgICAgIGlmIChhbmFseXNpcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlcG9ydFBoYXNlUHVyaXR5VmlvbGF0aW9ucyhjb250ZXh0LCBhbmFseXNpcyk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIFJ1bGUuUnVsZUxpc3RlbmVyO1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiS2VlcCBzZXR1cCwgYWN0aW9uLCBhbmQgYXNzZXJ0aW9ucyBpbnNpZGUgdGhlaXIgaW50ZW5kZWQgQUFBIHBoYXNlcy5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL2VuZm9yY2UtYWFhLXBoYXNlLXB1cml0eS5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIGFjdGlvbkluQXJyYW5nZTpcbiAgICAgICAgXCJLZWVwIHRoZSBmdW5jdGlvbiB1bmRlciB0ZXN0IG91dCBvZiBBcnJhbmdlOyByZXNlcnZlIEFycmFuZ2UgZm9yIHNldHVwIG9ubHkuXCIsXG4gICAgICBhc3NlcnRpb25PdXRzaWRlQXNzZXJ0OlxuICAgICAgICBcIk1vdmUgYXNzZXJ0aW9ucyBpbnRvIHRoZSAvLyBBc3NlcnQgc2VjdGlvbiBzbyB0ZXN0IGxvZ2ljIGRvZXMgbm90IGxlYWsgZWFybGllci5cIixcbiAgICAgIGFzeW5jSW5BcnJhbmdlOiBcIkRvIG5vdCB0cmlnZ2VyIGFzeW5jIGJlaGF2aW9yIGluIEFycmFuZ2UuXCIsXG4gICAgICBhd2FpdE91dHNpZGVBY3Q6IFwiVXNlIGF3YWl0IG9ubHkgaW5zaWRlIHRoZSAvLyBBY3Qgc2VjdGlvbi5cIixcbiAgICAgIG1pc3NpbmdNZWFuaW5nZnVsQWN0OlxuICAgICAgICBcIlRoZSAvLyBBY3Qgc2VjdGlvbiBtdXN0IGNvbnRhaW4gYSBtZWFuaW5nZnVsIFNVVCBpbnRlcmFjdGlvbiwgbm90IG9ubHkgdXRpbGl0eSBvciBzZXR1cCBjYWxscy5cIixcbiAgICAgIG11dGF0aW9uQWZ0ZXJBY3Q6XG4gICAgICAgIFwiRG8gbm90IG11dGF0ZSB0ZXN0IGRhdGEgYWZ0ZXIgdGhlIC8vIEFjdCBzZWN0aW9uIGhhcyBydW4uXCIsXG4gICAgICBub25Bc3NlcnRpb25JbkFzc2VydDpcbiAgICAgICAgXCJLZWVwIHRoZSAvLyBBc3NlcnQgc2VjdGlvbiBmb2N1c2VkIG9uIGFzc2VydGlvbnMgYW5kIGFzc2VydGlvbi1sb2NhbCB2YWx1ZXMuXCIsXG4gICAgICBzZXR1cEFmdGVyQWN0OlxuICAgICAgICBcIkRvIG5vdCBjb250aW51ZSBhcnJhbmdpbmcgdGVzdCBkYXRhIGFmdGVyIHRoZSAvLyBBY3Qgc2VjdGlvbiBoYXMgc3RhcnRlZC5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBlbmZvcmNlQWFhUGhhc2VQdXJpdHlSdWxlIH07XG4iXX0=
@@ -1,20 +0,0 @@
1
- import { Linter } from "eslint";
2
- /** Type definition for rule data. */
3
- interface FixRunResult {
4
- /** Lint messages produced during the run. */
5
- messages: Linter.LintMessage[];
6
- /** Output code after fixes. */
7
- output: string;
8
- }
9
- /**
10
- * Runs the prefer-vi-mocked-import rule with autofix enabled.
11
- * @param code Input code.
12
- * @returns Fixed output and messages.
13
- * @example
14
- * ```typescript
15
- * const result = runFix("const value = 1;\n");
16
- * ```
17
- */
18
- declare const runFix: (code: string) => FixRunResult;
19
- export { runFix };
20
- //# sourceMappingURL=rule-test-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rule-test-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/rule-test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,qCAAqC;AACrC,UAAU,YAAY;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAE/B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,QAAA,MAAM,MAAM,GAAI,MAAM,MAAM,KAAG,YA8B9B,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -1,39 +0,0 @@
1
- import { Linter } from "eslint";
2
- import { parser } from "typescript-eslint";
3
- import { preferViMockedImportRule } from "./rule.js";
4
- /**
5
- * Runs the prefer-vi-mocked-import rule with autofix enabled.
6
- * @param code Input code.
7
- * @returns Fixed output and messages.
8
- * @example
9
- * ```typescript
10
- * const result = runFix("const value = 1;\n");
11
- * ```
12
- */
13
- const runFix = (code) => {
14
- const linter = new Linter({ configType: "flat" });
15
- const result = linter.verifyAndFix(code, [
16
- {
17
- files: ["**/*.ts"],
18
- languageOptions: {
19
- ecmaVersion: 2022,
20
- parser,
21
- parserOptions: { range: true },
22
- sourceType: "module",
23
- },
24
- plugins: {
25
- codeperfect: {
26
- rules: {
27
- "prefer-vi-mocked-import": preferViMockedImportRule,
28
- },
29
- },
30
- },
31
- rules: {
32
- "codeperfect/prefer-vi-mocked-import": "error",
33
- },
34
- },
35
- ], { filename: "example.spec.ts" });
36
- return { messages: result.messages, output: result.output };
37
- };
38
- export { runFix };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS10ZXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvcnVsZS10ZXN0LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBV2xEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQWdCLEVBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVsRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUNoQyxJQUFJLEVBQ0o7UUFDRTtZQUNFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNsQixlQUFlLEVBQUU7Z0JBQ2YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE1BQU07Z0JBQ04sYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDOUIsVUFBVSxFQUFFLFFBQVE7YUFDckI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsV0FBVyxFQUFFO29CQUNYLEtBQUssRUFBRTt3QkFDTCx5QkFBeUIsRUFBRSx3QkFBd0I7cUJBQ3BEO2lCQUNGO2FBQ0Y7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wscUNBQXFDLEVBQUUsT0FBTzthQUMvQztTQUNGO0tBQ0YsRUFDRCxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUNoQyxDQUFDO0lBRUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xyXG5pbXBvcnQgeyBwYXJzZXIgfSBmcm9tIFwidHlwZXNjcmlwdC1lc2xpbnRcIjtcclxuXHJcbmltcG9ydCB7IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcclxuXHJcbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cclxuaW50ZXJmYWNlIEZpeFJ1blJlc3VsdCB7XHJcbiAgLyoqIExpbnQgbWVzc2FnZXMgcHJvZHVjZWQgZHVyaW5nIHRoZSBydW4uICovXHJcbiAgbWVzc2FnZXM6IExpbnRlci5MaW50TWVzc2FnZVtdO1xyXG5cclxuICAvKiogT3V0cHV0IGNvZGUgYWZ0ZXIgZml4ZXMuICovXHJcbiAgb3V0cHV0OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSdW5zIHRoZSBwcmVmZXItdmktbW9ja2VkLWltcG9ydCBydWxlIHdpdGggYXV0b2ZpeCBlbmFibGVkLlxyXG4gKiBAcGFyYW0gY29kZSBJbnB1dCBjb2RlLlxyXG4gKiBAcmV0dXJucyBGaXhlZCBvdXRwdXQgYW5kIG1lc3NhZ2VzLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlc3VsdCA9IHJ1bkZpeChcImNvbnN0IHZhbHVlID0gMTtcXG5cIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgcnVuRml4ID0gKGNvZGU6IHN0cmluZyk6IEZpeFJ1blJlc3VsdCA9PiB7XHJcbiAgY29uc3QgbGludGVyID0gbmV3IExpbnRlcih7IGNvbmZpZ1R5cGU6IFwiZmxhdFwiIH0pO1xyXG5cclxuICBjb25zdCByZXN1bHQgPSBsaW50ZXIudmVyaWZ5QW5kRml4KFxyXG4gICAgY29kZSxcclxuICAgIFtcclxuICAgICAge1xyXG4gICAgICAgIGZpbGVzOiBbXCIqKi8qLnRzXCJdLFxyXG4gICAgICAgIGxhbmd1YWdlT3B0aW9uczoge1xyXG4gICAgICAgICAgZWNtYVZlcnNpb246IDIwMjIsXHJcbiAgICAgICAgICBwYXJzZXIsXHJcbiAgICAgICAgICBwYXJzZXJPcHRpb25zOiB7IHJhbmdlOiB0cnVlIH0sXHJcbiAgICAgICAgICBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgICAgY29kZXBlcmZlY3Q6IHtcclxuICAgICAgICAgICAgcnVsZXM6IHtcclxuICAgICAgICAgICAgICBcInByZWZlci12aS1tb2NrZWQtaW1wb3J0XCI6IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBydWxlczoge1xyXG4gICAgICAgICAgXCJjb2RlcGVyZmVjdC9wcmVmZXItdmktbW9ja2VkLWltcG9ydFwiOiBcImVycm9yXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB7IGZpbGVuYW1lOiBcImV4YW1wbGUuc3BlYy50c1wiIH0sXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHsgbWVzc2FnZXM6IHJlc3VsdC5tZXNzYWdlcywgb3V0cHV0OiByZXN1bHQub3V0cHV0IH07XHJcbn07XHJcblxyXG5leHBvcnQgeyBydW5GaXggfTtcclxuIl19
@@ -1,97 +0,0 @@
1
- import { TSESTree } from "@typescript-eslint/utils";
2
- import type { ShorthandContext, SupportedProperty } from "./types.js";
3
- /**
4
- * Checks whether a property can remain in shorthand form after replacement.
5
- * @param context Property shorthand decision context.
6
- * @returns True when shorthand syntax remains valid.
7
- * @example
8
- * ```typescript
9
- * const keepShorthand = canUseShorthand(context);
10
- * ```
11
- */
12
- declare function canUseShorthand(context: ShorthandContext): boolean;
13
- /**
14
- * Resolves the expression returned by the mock factory.
15
- * @param factoryArgument Mock factory function expression.
16
- * @returns Returned expression when one is present.
17
- * @example
18
- * ```typescript
19
- * const returnExpression = getFactoryReturnExpression(factoryArgument);
20
- * ```
21
- */
22
- declare function getFactoryReturnExpression(factoryArgument: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression): TSESTree.Expression | undefined;
23
- /**
24
- * Extracts the module specifier from a mock call argument.
25
- * @param moduleArgument Import expression or string literal argument.
26
- * @returns Static module specifier when it can be determined.
27
- * @example
28
- * ```typescript
29
- * const moduleSpecifier = getModuleSpecifier(moduleArgument);
30
- * ```
31
- */
32
- declare function getModuleSpecifier(moduleArgument: TSESTree.Expression): string | undefined;
33
- /**
34
- * Converts an object property key node into a stable string name.
35
- * @param propertyKey Property key node from the object literal.
36
- * @returns Property name when the key is statically known.
37
- * @example
38
- * ```typescript
39
- * const propertyName = getPropertyName(property.key);
40
- * ```
41
- */
42
- declare function getPropertyName(propertyKey: TSESTree.PropertyName): string | undefined;
43
- /**
44
- * Checks whether an expression's cast chain contains an escape-hatch cast through unknown or any.
45
- * @param expression Expression to inspect.
46
- * @returns True when at least one cast in the chain uses unknown or any as the type annotation.
47
- * @example
48
- * ```typescript
49
- * const isEscapeHatch = hasEscapeHatchCast(expression);
50
- * ```
51
- */
52
- declare function hasEscapeHatchCast(expression: TSESTree.Expression): boolean;
53
- /**
54
- * Narrows object literal elements to the subset the fixer can rewrite safely.
55
- * @param property Object literal element to inspect.
56
- * @returns True when the property is supported by the fixer.
57
- * @example
58
- * ```typescript
59
- * const supported = isSupportedProperty(property);
60
- * ```
61
- */
62
- declare function isSupportedProperty(property: TSESTree.ObjectLiteralElement): property is SupportedProperty;
63
- /**
64
- * Detects `vi.mock(...)` and `vi.doMock(...)` calls.
65
- * @param node Call expression being inspected.
66
- * @returns True when the call targets a Vitest mock factory.
67
- * @example
68
- * ```typescript
69
- * const isMockCall = isVitestMockCall(callExpression);
70
- * ```
71
- */
72
- declare function isVitestMockCall(node: TSESTree.CallExpression): boolean;
73
- /**
74
- * Determines whether the fixed object literal must be parenthesized.
75
- * @param factoryArgument Mock factory function expression.
76
- * @param returnExpression Expression returned by the factory.
77
- * @param objectExpression Object literal being rewritten.
78
- * @returns True when parentheses are required around the object literal.
79
- * @example
80
- * ```typescript
81
- * const wrapObject = shouldWrapImplicitObject(factoryArgument, returnExpression, objectExpression);
82
- * ```
83
- */
84
- declare function shouldWrapImplicitObject(factoryArgument: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression, returnExpression: TSESTree.Expression, objectExpression: TSESTree.ObjectExpression): boolean;
85
- /**
86
- * Checks whether an expression's cast chain contains an escape-hatch cast through unknown or any.
87
- * Removes surrounding cast wrappers from an expression.
88
- * @param expression Expression to unwrap.
89
- * @returns The innermost non-cast expression.
90
- * @example
91
- * ```typescript
92
- * const baseExpression = unwrapExpression(expression);
93
- * ```
94
- */
95
- declare function unwrapExpression(expression: TSESTree.Expression): TSESTree.Expression;
96
- export { canUseShorthand, getFactoryReturnExpression, getModuleSpecifier, getPropertyName, hasEscapeHatchCast, isSupportedProperty, isVitestMockCall, shouldWrapImplicitObject, unwrapExpression, };
97
- //# sourceMappingURL=ast-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ast-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/ast-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnE;;;;;;;;GAQG;AACH,iBAAS,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAU3D;AAED;;;;;;;;GAQG;AACH,iBAAS,0BAA0B,CACjC,eAAe,EACX,QAAQ,CAAC,uBAAuB,GAChC,QAAQ,CAAC,kBAAkB,GAC9B,QAAQ,CAAC,UAAU,GAAG,SAAS,CAYjC;AAED;;;;;;;;GAQG;AACH,iBAAS,kBAAkB,CACzB,cAAc,EAAE,QAAQ,CAAC,UAAU,GAClC,MAAM,GAAG,SAAS,CAkBpB;AAED;;;;;;;;GAQG;AACH,iBAAS,eAAe,CACtB,WAAW,EAAE,QAAQ,CAAC,YAAY,GACjC,MAAM,GAAG,SAAS,CAapB;AAED;;;;;;;;GAQG;AACH,iBAAS,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,OAAO,CAoBpE;AAED;;;;;;;;GAQG;AACH,iBAAS,mBAAmB,CAC1B,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,GACtC,QAAQ,IAAI,iBAAiB,CAQ/B;AAED;;;;;;;;GAQG;AACH,iBAAS,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,GAAG,OAAO,CAahE;AAED;;;;;;;;;;GAUG;AACH,iBAAS,wBAAwB,CAC/B,eAAe,EACX,QAAQ,CAAC,uBAAuB,GAChC,QAAQ,CAAC,kBAAkB,EAC/B,gBAAgB,EAAE,QAAQ,CAAC,UAAU,EACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,GAC1C,OAAO,CAMT;AAED;;;;;;;;;GASG;AACH,iBAAS,gBAAgB,CACvB,UAAU,EAAE,QAAQ,CAAC,UAAU,GAC9B,QAAQ,CAAC,UAAU,CAYrB;AAED,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GACjB,CAAC"}
@@ -1,174 +0,0 @@
1
- import { TSESTree } from "@typescript-eslint/utils";
2
- /**
3
- * Checks whether a property can remain in shorthand form after replacement.
4
- * @param context Property shorthand decision context.
5
- * @returns True when shorthand syntax remains valid.
6
- * @example
7
- * ```typescript
8
- * const keepShorthand = canUseShorthand(context);
9
- * ```
10
- */
11
- function canUseShorthand(context) {
12
- const { baseValue, keyName, needsCast, property } = context;
13
- return (!needsCast &&
14
- baseValue.type === TSESTree.AST_NODE_TYPES.Identifier &&
15
- property.key.type === TSESTree.AST_NODE_TYPES.Identifier &&
16
- property.key.name === keyName &&
17
- baseValue.name === keyName);
18
- }
19
- /**
20
- * Resolves the expression returned by the mock factory.
21
- * @param factoryArgument Mock factory function expression.
22
- * @returns Returned expression when one is present.
23
- * @example
24
- * ```typescript
25
- * const returnExpression = getFactoryReturnExpression(factoryArgument);
26
- * ```
27
- */
28
- function getFactoryReturnExpression(factoryArgument) {
29
- if (factoryArgument.body.type !== TSESTree.AST_NODE_TYPES.BlockStatement) {
30
- return factoryArgument.body;
31
- }
32
- const returnStatement = factoryArgument.body.body.find((statement) => statement.type === TSESTree.AST_NODE_TYPES.ReturnStatement &&
33
- statement.argument !== null);
34
- return returnStatement?.argument ?? void 0;
35
- }
36
- /**
37
- * Extracts the module specifier from a mock call argument.
38
- * @param moduleArgument Import expression or string literal argument.
39
- * @returns Static module specifier when it can be determined.
40
- * @example
41
- * ```typescript
42
- * const moduleSpecifier = getModuleSpecifier(moduleArgument);
43
- * ```
44
- */
45
- function getModuleSpecifier(moduleArgument) {
46
- if (moduleArgument.type === TSESTree.AST_NODE_TYPES.ImportExpression) {
47
- const { source } = moduleArgument;
48
- if (source.type === TSESTree.AST_NODE_TYPES.Literal &&
49
- typeof source.value === "string") {
50
- return source.value;
51
- }
52
- return void 0;
53
- }
54
- return moduleArgument.type === TSESTree.AST_NODE_TYPES.Literal &&
55
- typeof moduleArgument.value === "string"
56
- ? moduleArgument.value
57
- : void 0;
58
- }
59
- /**
60
- * Converts an object property key node into a stable string name.
61
- * @param propertyKey Property key node from the object literal.
62
- * @returns Property name when the key is statically known.
63
- * @example
64
- * ```typescript
65
- * const propertyName = getPropertyName(property.key);
66
- * ```
67
- */
68
- function getPropertyName(propertyKey) {
69
- if (propertyKey.type === TSESTree.AST_NODE_TYPES.Identifier) {
70
- return propertyKey.name;
71
- }
72
- if (propertyKey.type === TSESTree.AST_NODE_TYPES.Literal) {
73
- return typeof propertyKey.value === "string" ||
74
- typeof propertyKey.value === "number"
75
- ? String(propertyKey.value)
76
- : void 0;
77
- }
78
- return void 0;
79
- }
80
- /**
81
- * Checks whether an expression's cast chain contains an escape-hatch cast through unknown or any.
82
- * @param expression Expression to inspect.
83
- * @returns True when at least one cast in the chain uses unknown or any as the type annotation.
84
- * @example
85
- * ```typescript
86
- * const isEscapeHatch = hasEscapeHatchCast(expression);
87
- * ```
88
- */
89
- function hasEscapeHatchCast(expression) {
90
- let current = expression;
91
- while (current.type === TSESTree.AST_NODE_TYPES.TSAsExpression ||
92
- current.type === TSESTree.AST_NODE_TYPES.TSTypeAssertion ||
93
- current.type === TSESTree.AST_NODE_TYPES.TSSatisfiesExpression) {
94
- if (current.typeAnnotation.type ===
95
- TSESTree.AST_NODE_TYPES.TSUnknownKeyword ||
96
- current.typeAnnotation.type === TSESTree.AST_NODE_TYPES.TSAnyKeyword) {
97
- return true;
98
- }
99
- current = current.expression;
100
- }
101
- return false;
102
- }
103
- /**
104
- * Narrows object literal elements to the subset the fixer can rewrite safely.
105
- * @param property Object literal element to inspect.
106
- * @returns True when the property is supported by the fixer.
107
- * @example
108
- * ```typescript
109
- * const supported = isSupportedProperty(property);
110
- * ```
111
- */
112
- function isSupportedProperty(property) {
113
- return (property.type === TSESTree.AST_NODE_TYPES.Property &&
114
- !property.computed &&
115
- property.kind === "init" &&
116
- !property.method &&
117
- property.value.type !== TSESTree.AST_NODE_TYPES.AssignmentPattern);
118
- }
119
- /**
120
- * Detects `vi.mock(...)` and `vi.doMock(...)` calls.
121
- * @param node Call expression being inspected.
122
- * @returns True when the call targets a Vitest mock factory.
123
- * @example
124
- * ```typescript
125
- * const isMockCall = isVitestMockCall(callExpression);
126
- * ```
127
- */
128
- function isVitestMockCall(node) {
129
- if (node.callee.type !== TSESTree.AST_NODE_TYPES.MemberExpression) {
130
- return false;
131
- }
132
- const { object, property } = node.callee;
133
- return (object.type === TSESTree.AST_NODE_TYPES.Identifier &&
134
- object.name === "vi" &&
135
- property.type === TSESTree.AST_NODE_TYPES.Identifier &&
136
- (property.name === "mock" || property.name === "doMock"));
137
- }
138
- /**
139
- * Determines whether the fixed object literal must be parenthesized.
140
- * @param factoryArgument Mock factory function expression.
141
- * @param returnExpression Expression returned by the factory.
142
- * @param objectExpression Object literal being rewritten.
143
- * @returns True when parentheses are required around the object literal.
144
- * @example
145
- * ```typescript
146
- * const wrapObject = shouldWrapImplicitObject(factoryArgument, returnExpression, objectExpression);
147
- * ```
148
- */
149
- function shouldWrapImplicitObject(factoryArgument, returnExpression, objectExpression) {
150
- return (factoryArgument.body.type !== TSESTree.AST_NODE_TYPES.BlockStatement &&
151
- (returnExpression.range[0] !== objectExpression.range[0] ||
152
- returnExpression.range[1] !== objectExpression.range[1]));
153
- }
154
- /**
155
- * Checks whether an expression's cast chain contains an escape-hatch cast through unknown or any.
156
- * Removes surrounding cast wrappers from an expression.
157
- * @param expression Expression to unwrap.
158
- * @returns The innermost non-cast expression.
159
- * @example
160
- * ```typescript
161
- * const baseExpression = unwrapExpression(expression);
162
- * ```
163
- */
164
- function unwrapExpression(expression) {
165
- let currentExpression = expression;
166
- while (currentExpression.type === TSESTree.AST_NODE_TYPES.TSAsExpression ||
167
- currentExpression.type === TSESTree.AST_NODE_TYPES.TSSatisfiesExpression ||
168
- currentExpression.type === TSESTree.AST_NODE_TYPES.TSTypeAssertion) {
169
- currentExpression = currentExpression.expression;
170
- }
171
- return currentExpression;
172
- }
173
- export { canUseShorthand, getFactoryReturnExpression, getModuleSpecifier, getPropertyName, hasEscapeHatchCast, isSupportedProperty, isVitestMockCall, shouldWrapImplicitObject, unwrapExpression, };
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9hc3QtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxPQUF5QjtJQUNoRCxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTVELE9BQU8sQ0FDTCxDQUFDLFNBQVM7UUFDVixTQUFTLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVTtRQUNyRCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVU7UUFDeEQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTztRQUM3QixTQUFTLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FDM0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsMEJBQTBCLENBQ2pDLGVBRStCO0lBRS9CLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6RSxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDcEQsQ0FBQyxTQUFTLEVBQXlDLEVBQUUsQ0FDbkQsU0FBUyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLGVBQWU7UUFDMUQsU0FBUyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQzlCLENBQUM7SUFFRixP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O1FBQ3hFLGlCQUFpQixDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFDbEUsQ0FBQztRQUNELGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTyxpQkFBaUIsQ0FBQztBQUMzQixDQUFDO0FBRUQsT0FBTyxFQUNMLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEdBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUU0VTVHJlZSB9IGZyb20gXCJAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHNcIjtcclxuXHJcbmltcG9ydCB0eXBlIHsgU2hvcnRoYW5kQ29udGV4dCwgU3VwcG9ydGVkUHJvcGVydHkgfSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGEgcHJvcGVydHkgY2FuIHJlbWFpbiBpbiBzaG9ydGhhbmQgZm9ybSBhZnRlciByZXBsYWNlbWVudC5cclxuICogQHBhcmFtIGNvbnRleHQgUHJvcGVydHkgc2hvcnRoYW5kIGRlY2lzaW9uIGNvbnRleHQuXHJcbiAqIEByZXR1cm5zIFRydWUgd2hlbiBzaG9ydGhhbmQgc3ludGF4IHJlbWFpbnMgdmFsaWQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3Qga2VlcFNob3J0aGFuZCA9IGNhblVzZVNob3J0aGFuZChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjYW5Vc2VTaG9ydGhhbmQoY29udGV4dDogU2hvcnRoYW5kQ29udGV4dCk6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHsgYmFzZVZhbHVlLCBrZXlOYW1lLCBuZWVkc0Nhc3QsIHByb3BlcnR5IH0gPSBjb250ZXh0O1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgIW5lZWRzQ2FzdCAmJlxyXG4gICAgYmFzZVZhbHVlLnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIgJiZcclxuICAgIHByb3BlcnR5LmtleS50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5JZGVudGlmaWVyICYmXHJcbiAgICBwcm9wZXJ0eS5rZXkubmFtZSA9PT0ga2V5TmFtZSAmJlxyXG4gICAgYmFzZVZhbHVlLm5hbWUgPT09IGtleU5hbWVcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogUmVzb2x2ZXMgdGhlIGV4cHJlc3Npb24gcmV0dXJuZWQgYnkgdGhlIG1vY2sgZmFjdG9yeS5cclxuICogQHBhcmFtIGZhY3RvcnlBcmd1bWVudCBNb2NrIGZhY3RvcnkgZnVuY3Rpb24gZXhwcmVzc2lvbi5cclxuICogQHJldHVybnMgUmV0dXJuZWQgZXhwcmVzc2lvbiB3aGVuIG9uZSBpcyBwcmVzZW50LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJldHVybkV4cHJlc3Npb24gPSBnZXRGYWN0b3J5UmV0dXJuRXhwcmVzc2lvbihmYWN0b3J5QXJndW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldEZhY3RvcnlSZXR1cm5FeHByZXNzaW9uKFxyXG4gIGZhY3RvcnlBcmd1bWVudDpcclxuICAgIHwgVFNFU1RyZWUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cclxuICAgIHwgVFNFU1RyZWUuRnVuY3Rpb25FeHByZXNzaW9uLFxyXG4pOiBUU0VTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcclxuICBpZiAoZmFjdG9yeUFyZ3VtZW50LmJvZHkudHlwZSAhPT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuQmxvY2tTdGF0ZW1lbnQpIHtcclxuICAgIHJldHVybiBmYWN0b3J5QXJndW1lbnQuYm9keTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHJldHVyblN0YXRlbWVudCA9IGZhY3RvcnlBcmd1bWVudC5ib2R5LmJvZHkuZmluZChcclxuICAgIChzdGF0ZW1lbnQpOiBzdGF0ZW1lbnQgaXMgVFNFU1RyZWUuUmV0dXJuU3RhdGVtZW50ID0+XHJcbiAgICAgIHN0YXRlbWVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5SZXR1cm5TdGF0ZW1lbnQgJiZcclxuICAgICAgc3RhdGVtZW50LmFyZ3VtZW50ICE9PSBudWxsLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiByZXR1cm5TdGF0ZW1lbnQ/LmFyZ3VtZW50ID8/IHZvaWQgMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEV4dHJhY3RzIHRoZSBtb2R1bGUgc3BlY2lmaWVyIGZyb20gYSBtb2NrIGNhbGwgYXJndW1lbnQuXHJcbiAqIEBwYXJhbSBtb2R1bGVBcmd1bWVudCBJbXBvcnQgZXhwcmVzc2lvbiBvciBzdHJpbmcgbGl0ZXJhbCBhcmd1bWVudC5cclxuICogQHJldHVybnMgU3RhdGljIG1vZHVsZSBzcGVjaWZpZXIgd2hlbiBpdCBjYW4gYmUgZGV0ZXJtaW5lZC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBnZXRNb2R1bGVTcGVjaWZpZXIobW9kdWxlQXJndW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldE1vZHVsZVNwZWNpZmllcihcclxuICBtb2R1bGVBcmd1bWVudDogVFNFU1RyZWUuRXhwcmVzc2lvbixcclxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICBpZiAobW9kdWxlQXJndW1lbnQudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuSW1wb3J0RXhwcmVzc2lvbikge1xyXG4gICAgY29uc3QgeyBzb3VyY2UgfSA9IG1vZHVsZUFyZ3VtZW50O1xyXG5cclxuICAgIGlmIChcclxuICAgICAgc291cmNlLnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLkxpdGVyYWwgJiZcclxuICAgICAgdHlwZW9mIHNvdXJjZS52YWx1ZSA9PT0gXCJzdHJpbmdcIlxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBzb3VyY2UudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIHJldHVybiBtb2R1bGVBcmd1bWVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5MaXRlcmFsICYmXHJcbiAgICB0eXBlb2YgbW9kdWxlQXJndW1lbnQudmFsdWUgPT09IFwic3RyaW5nXCJcclxuICAgID8gbW9kdWxlQXJndW1lbnQudmFsdWVcclxuICAgIDogdm9pZCAwO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydHMgYW4gb2JqZWN0IHByb3BlcnR5IGtleSBub2RlIGludG8gYSBzdGFibGUgc3RyaW5nIG5hbWUuXHJcbiAqIEBwYXJhbSBwcm9wZXJ0eUtleSBQcm9wZXJ0eSBrZXkgbm9kZSBmcm9tIHRoZSBvYmplY3QgbGl0ZXJhbC5cclxuICogQHJldHVybnMgUHJvcGVydHkgbmFtZSB3aGVuIHRoZSBrZXkgaXMgc3RhdGljYWxseSBrbm93bi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBwcm9wZXJ0eU5hbWUgPSBnZXRQcm9wZXJ0eU5hbWUocHJvcGVydHkua2V5KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWUoXHJcbiAgcHJvcGVydHlLZXk6IFRTRVNUcmVlLlByb3BlcnR5TmFtZSxcclxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICBpZiAocHJvcGVydHlLZXkudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcikge1xyXG4gICAgcmV0dXJuIHByb3BlcnR5S2V5Lm5hbWU7XHJcbiAgfVxyXG5cclxuICBpZiAocHJvcGVydHlLZXkudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuTGl0ZXJhbCkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiBwcm9wZXJ0eUtleS52YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fFxyXG4gICAgICB0eXBlb2YgcHJvcGVydHlLZXkudmFsdWUgPT09IFwibnVtYmVyXCJcclxuICAgICAgPyBTdHJpbmcocHJvcGVydHlLZXkudmFsdWUpXHJcbiAgICAgIDogdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHZvaWQgMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGV4cHJlc3Npb24ncyBjYXN0IGNoYWluIGNvbnRhaW5zIGFuIGVzY2FwZS1oYXRjaCBjYXN0IHRocm91Z2ggdW5rbm93biBvciBhbnkuXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIEV4cHJlc3Npb24gdG8gaW5zcGVjdC5cclxuICogQHJldHVybnMgVHJ1ZSB3aGVuIGF0IGxlYXN0IG9uZSBjYXN0IGluIHRoZSBjaGFpbiB1c2VzIHVua25vd24gb3IgYW55IGFzIHRoZSB0eXBlIGFubm90YXRpb24uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgaXNFc2NhcGVIYXRjaCA9IGhhc0VzY2FwZUhhdGNoQ2FzdChleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBoYXNFc2NhcGVIYXRjaENhc3QoZXhwcmVzc2lvbjogVFNFU1RyZWUuRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xyXG4gIGxldCBjdXJyZW50OiBUU0VTVHJlZS5FeHByZXNzaW9uID0gZXhwcmVzc2lvbjtcclxuXHJcbiAgd2hpbGUgKFxyXG4gICAgY3VycmVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU0FzRXhwcmVzc2lvbiB8fFxyXG4gICAgY3VycmVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU1R5cGVBc3NlcnRpb24gfHxcclxuICAgIGN1cnJlbnQudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuVFNTYXRpc2ZpZXNFeHByZXNzaW9uXHJcbiAgKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGN1cnJlbnQudHlwZUFubm90YXRpb24udHlwZSA9PT1cclxuICAgICAgICBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU1Vua25vd25LZXl3b3JkIHx8XHJcbiAgICAgIGN1cnJlbnQudHlwZUFubm90YXRpb24udHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuVFNBbnlLZXl3b3JkXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY3VycmVudCA9IGN1cnJlbnQuZXhwcmVzc2lvbjtcclxuICB9XHJcblxyXG4gIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE5hcnJvd3Mgb2JqZWN0IGxpdGVyYWwgZWxlbWVudHMgdG8gdGhlIHN1YnNldCB0aGUgZml4ZXIgY2FuIHJld3JpdGUgc2FmZWx5LlxyXG4gKiBAcGFyYW0gcHJvcGVydHkgT2JqZWN0IGxpdGVyYWwgZWxlbWVudCB0byBpbnNwZWN0LlxyXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHByb3BlcnR5IGlzIHN1cHBvcnRlZCBieSB0aGUgZml4ZXIuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3Qgc3VwcG9ydGVkID0gaXNTdXBwb3J0ZWRQcm9wZXJ0eShwcm9wZXJ0eSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNTdXBwb3J0ZWRQcm9wZXJ0eShcclxuICBwcm9wZXJ0eTogVFNFU1RyZWUuT2JqZWN0TGl0ZXJhbEVsZW1lbnQsXHJcbik6IHByb3BlcnR5IGlzIFN1cHBvcnRlZFByb3BlcnR5IHtcclxuICByZXR1cm4gKFxyXG4gICAgcHJvcGVydHkudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuUHJvcGVydHkgJiZcclxuICAgICFwcm9wZXJ0eS5jb21wdXRlZCAmJlxyXG4gICAgcHJvcGVydHkua2luZCA9PT0gXCJpbml0XCIgJiZcclxuICAgICFwcm9wZXJ0eS5tZXRob2QgJiZcclxuICAgIHByb3BlcnR5LnZhbHVlLnR5cGUgIT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLkFzc2lnbm1lbnRQYXR0ZXJuXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVjdHMgYHZpLm1vY2soLi4uKWAgYW5kIGB2aS5kb01vY2soLi4uKWAgY2FsbHMuXHJcbiAqIEBwYXJhbSBub2RlIENhbGwgZXhwcmVzc2lvbiBiZWluZyBpbnNwZWN0ZWQuXHJcbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgY2FsbCB0YXJnZXRzIGEgVml0ZXN0IG1vY2sgZmFjdG9yeS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBpc01vY2tDYWxsID0gaXNWaXRlc3RNb2NrQ2FsbChjYWxsRXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNWaXRlc3RNb2NrQ2FsbChub2RlOiBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xyXG4gIGlmIChub2RlLmNhbGxlZS50eXBlICE9PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5NZW1iZXJFeHByZXNzaW9uKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb25zdCB7IG9iamVjdCwgcHJvcGVydHkgfSA9IG5vZGUuY2FsbGVlO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgb2JqZWN0LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIgJiZcclxuICAgIG9iamVjdC5uYW1lID09PSBcInZpXCIgJiZcclxuICAgIHByb3BlcnR5LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIgJiZcclxuICAgIChwcm9wZXJ0eS5uYW1lID09PSBcIm1vY2tcIiB8fCBwcm9wZXJ0eS5uYW1lID09PSBcImRvTW9ja1wiKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZpeGVkIG9iamVjdCBsaXRlcmFsIG11c3QgYmUgcGFyZW50aGVzaXplZC5cclxuICogQHBhcmFtIGZhY3RvcnlBcmd1bWVudCBNb2NrIGZhY3RvcnkgZnVuY3Rpb24gZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIHJldHVybkV4cHJlc3Npb24gRXhwcmVzc2lvbiByZXR1cm5lZCBieSB0aGUgZmFjdG9yeS5cclxuICogQHBhcmFtIG9iamVjdEV4cHJlc3Npb24gT2JqZWN0IGxpdGVyYWwgYmVpbmcgcmV3cml0dGVuLlxyXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gcGFyZW50aGVzZXMgYXJlIHJlcXVpcmVkIGFyb3VuZCB0aGUgb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3Qgd3JhcE9iamVjdCA9IHNob3VsZFdyYXBJbXBsaWNpdE9iamVjdChmYWN0b3J5QXJndW1lbnQsIHJldHVybkV4cHJlc3Npb24sIG9iamVjdEV4cHJlc3Npb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIHNob3VsZFdyYXBJbXBsaWNpdE9iamVjdChcclxuICBmYWN0b3J5QXJndW1lbnQ6XHJcbiAgICB8IFRTRVNUcmVlLkFycm93RnVuY3Rpb25FeHByZXNzaW9uXHJcbiAgICB8IFRTRVNUcmVlLkZ1bmN0aW9uRXhwcmVzc2lvbixcclxuICByZXR1cm5FeHByZXNzaW9uOiBUU0VTVHJlZS5FeHByZXNzaW9uLFxyXG4gIG9iamVjdEV4cHJlc3Npb246IFRTRVNUcmVlLk9iamVjdEV4cHJlc3Npb24sXHJcbik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAoXHJcbiAgICBmYWN0b3J5QXJndW1lbnQuYm9keS50eXBlICE9PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5CbG9ja1N0YXRlbWVudCAmJlxyXG4gICAgKHJldHVybkV4cHJlc3Npb24ucmFuZ2VbMF0gIT09IG9iamVjdEV4cHJlc3Npb24ucmFuZ2VbMF0gfHxcclxuICAgICAgcmV0dXJuRXhwcmVzc2lvbi5yYW5nZVsxXSAhPT0gb2JqZWN0RXhwcmVzc2lvbi5yYW5nZVsxXSlcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYW4gZXhwcmVzc2lvbidzIGNhc3QgY2hhaW4gY29udGFpbnMgYW4gZXNjYXBlLWhhdGNoIGNhc3QgdGhyb3VnaCB1bmtub3duIG9yIGFueS5cclxuICogUmVtb3ZlcyBzdXJyb3VuZGluZyBjYXN0IHdyYXBwZXJzIGZyb20gYW4gZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gRXhwcmVzc2lvbiB0byB1bndyYXAuXHJcbiAqIEByZXR1cm5zIFRoZSBpbm5lcm1vc3Qgbm9uLWNhc3QgZXhwcmVzc2lvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBiYXNlRXhwcmVzc2lvbiA9IHVud3JhcEV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gdW53cmFwRXhwcmVzc2lvbihcclxuICBleHByZXNzaW9uOiBUU0VTVHJlZS5FeHByZXNzaW9uLFxyXG4pOiBUU0VTVHJlZS5FeHByZXNzaW9uIHtcclxuICBsZXQgY3VycmVudEV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xyXG5cclxuICB3aGlsZSAoXHJcbiAgICBjdXJyZW50RXhwcmVzc2lvbi50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU0FzRXhwcmVzc2lvbiB8fFxyXG4gICAgY3VycmVudEV4cHJlc3Npb24udHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuVFNTYXRpc2ZpZXNFeHByZXNzaW9uIHx8XHJcbiAgICBjdXJyZW50RXhwcmVzc2lvbi50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU1R5cGVBc3NlcnRpb25cclxuICApIHtcclxuICAgIGN1cnJlbnRFeHByZXNzaW9uID0gY3VycmVudEV4cHJlc3Npb24uZXhwcmVzc2lvbjtcclxuICB9XHJcblxyXG4gIHJldHVybiBjdXJyZW50RXhwcmVzc2lvbjtcclxufVxyXG5cclxuZXhwb3J0IHtcclxuICBjYW5Vc2VTaG9ydGhhbmQsXHJcbiAgZ2V0RmFjdG9yeVJldHVybkV4cHJlc3Npb24sXHJcbiAgZ2V0TW9kdWxlU3BlY2lmaWVyLFxyXG4gIGdldFByb3BlcnR5TmFtZSxcclxuICBoYXNFc2NhcGVIYXRjaENhc3QsXHJcbiAgaXNTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICBpc1ZpdGVzdE1vY2tDYWxsLFxyXG4gIHNob3VsZFdyYXBJbXBsaWNpdE9iamVjdCxcclxuICB1bndyYXBFeHByZXNzaW9uLFxyXG59O1xyXG4iXX0=
@@ -1,2 +0,0 @@
1
- export { preferVitestIncrementalCastsRule } from "./rule.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,QAAQ,CAAC"}