@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 @@
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"}
@@ -0,0 +1,2 @@
1
+ export { preferVitestIncrementalCastsRule } from "./rule.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwcmVmZXJWaXRlc3RJbmNyZW1lbnRhbENhc3RzUnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { TSESTree } from "@typescript-eslint/utils";
2
+ import type { FactoryMatchInput } from "./types.js";
3
+ /**
4
+ * Extracts the mock-factory inputs needed for a rewrite attempt.
5
+ * @param callExpression Call expression to inspect.
6
+ * @returns Normalized factory input when the call is supported.
7
+ * @example
8
+ * ```typescript
9
+ * const factoryInput = getFactoryMatchInput(callExpression);
10
+ * ```
11
+ */
12
+ declare function getFactoryMatchInput(callExpression: TSESTree.CallExpression): FactoryMatchInput | undefined;
13
+ export { getFactoryMatchInput };
14
+ //# sourceMappingURL=match-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match-input.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/match-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAEV,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAyCjB;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAC3B,cAAc,EAAE,QAAQ,CAAC,cAAc,GACtC,iBAAiB,GAAG,SAAS,CAU/B;AA+CD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { TSESTree } from "@typescript-eslint/utils";
2
+ import { getFactoryReturnExpression, getModuleSpecifier, isVitestMockCall, unwrapExpression, } from "./ast-helpers.js";
3
+ /**
4
+ * Builds normalized match input from a supported factory call.
5
+ * @param mockArguments Supported mock-call arguments.
6
+ * @returns Normalized factory input when the returned value is an object literal.
7
+ * @example
8
+ * ```typescript
9
+ * const factoryInput = buildFactoryMatchInput(mockArguments);
10
+ * ```
11
+ */
12
+ function buildFactoryMatchInput(mockArguments) {
13
+ const { factoryArgument, moduleArgument } = mockArguments;
14
+ const moduleSpecifier = getModuleSpecifier(moduleArgument);
15
+ const returnExpression = getFactoryReturnExpression(factoryArgument);
16
+ if (moduleSpecifier === void 0 || returnExpression === void 0) {
17
+ return void 0;
18
+ }
19
+ const objectExpression = unwrapExpression(returnExpression);
20
+ return objectExpression.type === TSESTree.AST_NODE_TYPES.ObjectExpression
21
+ ? {
22
+ factoryArgument,
23
+ moduleSpecifier,
24
+ objectExpression,
25
+ returnExpression,
26
+ }
27
+ : void 0;
28
+ }
29
+ /**
30
+ * Extracts the mock-factory inputs needed for a rewrite attempt.
31
+ * @param callExpression Call expression to inspect.
32
+ * @returns Normalized factory input when the call is supported.
33
+ * @example
34
+ * ```typescript
35
+ * const factoryInput = getFactoryMatchInput(callExpression);
36
+ * ```
37
+ */
38
+ function getFactoryMatchInput(callExpression) {
39
+ if (!isVitestMockCall(callExpression)) {
40
+ return void 0;
41
+ }
42
+ const mockArguments = getMockFactoryArguments(callExpression.arguments);
43
+ return mockArguments === void 0
44
+ ? void 0
45
+ : buildFactoryMatchInput(mockArguments);
46
+ }
47
+ /**
48
+ * Extracts valid mock-factory arguments from a call expression.
49
+ * @param argumentsList Arguments supplied to the mock call.
50
+ * @returns Normalized arguments when the call shape is supported.
51
+ * @example
52
+ * ```typescript
53
+ * const mockArguments = getMockFactoryArguments(callExpression.arguments);
54
+ * ```
55
+ */
56
+ function getMockFactoryArguments(argumentsList) {
57
+ const [moduleArgument, factoryArgument] = argumentsList;
58
+ if (moduleArgument === void 0 ||
59
+ factoryArgument === void 0 ||
60
+ moduleArgument.type === TSESTree.AST_NODE_TYPES.SpreadElement ||
61
+ factoryArgument.type === TSESTree.AST_NODE_TYPES.SpreadElement ||
62
+ !isFactoryFunctionExpression(factoryArgument)) {
63
+ return void 0;
64
+ }
65
+ return { factoryArgument, moduleArgument };
66
+ }
67
+ /**
68
+ * Determines whether an expression is a supported mock factory function.
69
+ * @param expression Expression to inspect.
70
+ * @returns True when the expression is a function compatible with the fixer.
71
+ * @example
72
+ * ```typescript
73
+ * const supported = isFactoryFunctionExpression(expression);
74
+ * ```
75
+ */
76
+ function isFactoryFunctionExpression(expression) {
77
+ return (expression.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression ||
78
+ expression.type === TSESTree.AST_NODE_TYPES.FunctionExpression);
79
+ }
80
+ export { getFactoryMatchInput };
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9tYXRjaC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRcEQsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2Qjs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsc0JBQXNCLENBQzdCLGFBQW1DO0lBRW5DLE1BQU0sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEdBQUcsYUFBYSxDQUFDO0lBQzFELE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzNELE1BQU0sZ0JBQWdCLEdBQUcsMEJBQTBCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFckUsSUFBSSxlQUFlLEtBQUssS0FBSyxDQUFDLElBQUksZ0JBQWdCLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFNUQsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0I7UUFDdkUsQ0FBQyxDQUFDO1lBQ0UsZUFBZTtZQUNmLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1NBQ2pCO1FBQ0gsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsY0FBdUM7SUFFdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsdUJBQXVCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXhFLE9BQU8sYUFBYSxLQUFLLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsdUJBQXVCLENBQzlCLGFBQXlEO0lBRXpELE1BQU0sQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDLEdBQUcsYUFBYSxDQUFDO0lBRXhELElBQ0UsY0FBYyxLQUFLLEtBQUssQ0FBQztRQUN6QixlQUFlLEtBQUssS0FBSyxDQUFDO1FBQzFCLGNBQWMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhO1FBQzdELGVBQWUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhO1FBQzlELENBQUMsMkJBQTJCLENBQUMsZUFBZSxDQUFDLEVBQzdDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBQzdDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsMkJBQTJCLENBQ2xDLFVBQStCO0lBRS9CLE9BQU8sQ0FDTCxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsdUJBQXVCO1FBQ25FLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FDL0QsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRTRVNUcmVlIH0gZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC91dGlsc1wiO1xyXG5cclxuaW1wb3J0IHR5cGUge1xyXG4gIEZhY3RvcnlGdW5jdGlvbkV4cHJlc3Npb24sXHJcbiAgRmFjdG9yeU1hdGNoSW5wdXQsXHJcbiAgTW9ja0ZhY3RvcnlBcmd1bWVudHMsXHJcbn0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgZ2V0RmFjdG9yeVJldHVybkV4cHJlc3Npb24sXHJcbiAgZ2V0TW9kdWxlU3BlY2lmaWVyLFxyXG4gIGlzVml0ZXN0TW9ja0NhbGwsXHJcbiAgdW53cmFwRXhwcmVzc2lvbixcclxufSBmcm9tIFwiLi9hc3QtaGVscGVyc1wiO1xyXG5cclxuLyoqXHJcbiAqIEJ1aWxkcyBub3JtYWxpemVkIG1hdGNoIGlucHV0IGZyb20gYSBzdXBwb3J0ZWQgZmFjdG9yeSBjYWxsLlxyXG4gKiBAcGFyYW0gbW9ja0FyZ3VtZW50cyBTdXBwb3J0ZWQgbW9jay1jYWxsIGFyZ3VtZW50cy5cclxuICogQHJldHVybnMgTm9ybWFsaXplZCBmYWN0b3J5IGlucHV0IHdoZW4gdGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIG9iamVjdCBsaXRlcmFsLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGZhY3RvcnlJbnB1dCA9IGJ1aWxkRmFjdG9yeU1hdGNoSW5wdXQobW9ja0FyZ3VtZW50cyk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYnVpbGRGYWN0b3J5TWF0Y2hJbnB1dChcclxuICBtb2NrQXJndW1lbnRzOiBNb2NrRmFjdG9yeUFyZ3VtZW50cyxcclxuKTogRmFjdG9yeU1hdGNoSW5wdXQgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHsgZmFjdG9yeUFyZ3VtZW50LCBtb2R1bGVBcmd1bWVudCB9ID0gbW9ja0FyZ3VtZW50cztcclxuICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBnZXRNb2R1bGVTcGVjaWZpZXIobW9kdWxlQXJndW1lbnQpO1xyXG4gIGNvbnN0IHJldHVybkV4cHJlc3Npb24gPSBnZXRGYWN0b3J5UmV0dXJuRXhwcmVzc2lvbihmYWN0b3J5QXJndW1lbnQpO1xyXG5cclxuICBpZiAobW9kdWxlU3BlY2lmaWVyID09PSB2b2lkIDAgfHwgcmV0dXJuRXhwcmVzc2lvbiA9PT0gdm9pZCAwKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgb2JqZWN0RXhwcmVzc2lvbiA9IHVud3JhcEV4cHJlc3Npb24ocmV0dXJuRXhwcmVzc2lvbik7XHJcblxyXG4gIHJldHVybiBvYmplY3RFeHByZXNzaW9uLnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLk9iamVjdEV4cHJlc3Npb25cclxuICAgID8ge1xyXG4gICAgICAgIGZhY3RvcnlBcmd1bWVudCxcclxuICAgICAgICBtb2R1bGVTcGVjaWZpZXIsXHJcbiAgICAgICAgb2JqZWN0RXhwcmVzc2lvbixcclxuICAgICAgICByZXR1cm5FeHByZXNzaW9uLFxyXG4gICAgICB9XHJcbiAgICA6IHZvaWQgMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEV4dHJhY3RzIHRoZSBtb2NrLWZhY3RvcnkgaW5wdXRzIG5lZWRlZCBmb3IgYSByZXdyaXRlIGF0dGVtcHQuXHJcbiAqIEBwYXJhbSBjYWxsRXhwcmVzc2lvbiBDYWxsIGV4cHJlc3Npb24gdG8gaW5zcGVjdC5cclxuICogQHJldHVybnMgTm9ybWFsaXplZCBmYWN0b3J5IGlucHV0IHdoZW4gdGhlIGNhbGwgaXMgc3VwcG9ydGVkLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGZhY3RvcnlJbnB1dCA9IGdldEZhY3RvcnlNYXRjaElucHV0KGNhbGxFeHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRGYWN0b3J5TWF0Y2hJbnB1dChcclxuICBjYWxsRXhwcmVzc2lvbjogVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb24sXHJcbik6IEZhY3RvcnlNYXRjaElucHV0IHwgdW5kZWZpbmVkIHtcclxuICBpZiAoIWlzVml0ZXN0TW9ja0NhbGwoY2FsbEV4cHJlc3Npb24pKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgbW9ja0FyZ3VtZW50cyA9IGdldE1vY2tGYWN0b3J5QXJndW1lbnRzKGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cyk7XHJcblxyXG4gIHJldHVybiBtb2NrQXJndW1lbnRzID09PSB2b2lkIDBcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IGJ1aWxkRmFjdG9yeU1hdGNoSW5wdXQobW9ja0FyZ3VtZW50cyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFeHRyYWN0cyB2YWxpZCBtb2NrLWZhY3RvcnkgYXJndW1lbnRzIGZyb20gYSBjYWxsIGV4cHJlc3Npb24uXHJcbiAqIEBwYXJhbSBhcmd1bWVudHNMaXN0IEFyZ3VtZW50cyBzdXBwbGllZCB0byB0aGUgbW9jayBjYWxsLlxyXG4gKiBAcmV0dXJucyBOb3JtYWxpemVkIGFyZ3VtZW50cyB3aGVuIHRoZSBjYWxsIHNoYXBlIGlzIHN1cHBvcnRlZC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtb2NrQXJndW1lbnRzID0gZ2V0TW9ja0ZhY3RvcnlBcmd1bWVudHMoY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRNb2NrRmFjdG9yeUFyZ3VtZW50cyhcclxuICBhcmd1bWVudHNMaXN0OiByZWFkb25seSBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbkFyZ3VtZW50W10sXHJcbik6IE1vY2tGYWN0b3J5QXJndW1lbnRzIHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCBbbW9kdWxlQXJndW1lbnQsIGZhY3RvcnlBcmd1bWVudF0gPSBhcmd1bWVudHNMaXN0O1xyXG5cclxuICBpZiAoXHJcbiAgICBtb2R1bGVBcmd1bWVudCA9PT0gdm9pZCAwIHx8XHJcbiAgICBmYWN0b3J5QXJndW1lbnQgPT09IHZvaWQgMCB8fFxyXG4gICAgbW9kdWxlQXJndW1lbnQudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuU3ByZWFkRWxlbWVudCB8fFxyXG4gICAgZmFjdG9yeUFyZ3VtZW50LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLlNwcmVhZEVsZW1lbnQgfHxcclxuICAgICFpc0ZhY3RvcnlGdW5jdGlvbkV4cHJlc3Npb24oZmFjdG9yeUFyZ3VtZW50KVxyXG4gICkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIHJldHVybiB7IGZhY3RvcnlBcmd1bWVudCwgbW9kdWxlQXJndW1lbnQgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZXMgd2hldGhlciBhbiBleHByZXNzaW9uIGlzIGEgc3VwcG9ydGVkIG1vY2sgZmFjdG9yeSBmdW5jdGlvbi5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gRXhwcmVzc2lvbiB0byBpbnNwZWN0LlxyXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGV4cHJlc3Npb24gaXMgYSBmdW5jdGlvbiBjb21wYXRpYmxlIHdpdGggdGhlIGZpeGVyLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHN1cHBvcnRlZCA9IGlzRmFjdG9yeUZ1bmN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0ZhY3RvcnlGdW5jdGlvbkV4cHJlc3Npb24oXHJcbiAgZXhwcmVzc2lvbjogVFNFU1RyZWUuRXhwcmVzc2lvbixcclxuKTogZXhwcmVzc2lvbiBpcyBGYWN0b3J5RnVuY3Rpb25FeHByZXNzaW9uIHtcclxuICByZXR1cm4gKFxyXG4gICAgZXhwcmVzc2lvbi50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbiB8fFxyXG4gICAgZXhwcmVzc2lvbi50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5GdW5jdGlvbkV4cHJlc3Npb25cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgeyBnZXRGYWN0b3J5TWF0Y2hJbnB1dCB9O1xyXG4iXX0=
@@ -0,0 +1,13 @@
1
+ import type { CollectMatchContext, MatchResult } from "./types.js";
2
+ /**
3
+ * Collects a fix match for a supported Vitest mock factory call.
4
+ * @param context Match collection context.
5
+ * @returns Match result when the object literal can be safely rewritten.
6
+ * @example
7
+ * ```typescript
8
+ * const match = collectMatch(context);
9
+ * ```
10
+ */
11
+ declare function collectMatch(context: CollectMatchContext): MatchResult | undefined;
12
+ export { collectMatch };
13
+ //# sourceMappingURL=match.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,mBAAmB,EAEnB,WAAW,EAKZ,MAAM,SAAS,CAAC;AA2GjB;;;;;;;;GAQG;AACH,iBAAS,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,GAAG,SAAS,CAyC3E;AA4GD,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,189 @@
1
+ import { getPropertyName, isSupportedProperty, shouldWrapImplicitObject, } from "./ast-helpers.js";
2
+ import { getFactoryMatchInput } from "./match-input.js";
3
+ import { applyTextReplacements, buildPropertyReplacement, } from "./replacement-helpers.js";
4
+ import { isOuterCastRequired, resolveFactoryTargetType } from "./type-helpers.js";
5
+ /**
6
+ * Records one property replacement when the source text must change.
7
+ * @param propertyNames Property names already handled for the object literal.
8
+ * @param replacements Replacement entries collected so far.
9
+ * @param replacementContext Replacement context for the current property.
10
+ * @example
11
+ * ```typescript
12
+ * appendPropertyReplacement(new Set(), [], replacementContext);
13
+ * ```
14
+ */
15
+ function appendPropertyReplacement(propertyNames, replacements, replacementContext) {
16
+ propertyNames.add(replacementContext.keyName);
17
+ const replacement = buildPropertyReplacement(replacementContext);
18
+ if (replacement !== void 0) {
19
+ replacements.push(replacement);
20
+ }
21
+ }
22
+ /**
23
+ * Builds the final match result for a rewritten object literal.
24
+ * @param context Data required to build the final replacement.
25
+ * @returns Final match result when the object text changes.
26
+ * @example
27
+ * ```typescript
28
+ * const match = buildMatchResult(context);
29
+ * ```
30
+ */
31
+ function buildMatchResult(context) {
32
+ const objectText = applyTextReplacements(context.sourceText.slice(context.objectExpression.range[0], context.objectExpression.range[1]), context.replacements, context.objectExpression.range[0]);
33
+ const replacementText = createReplacementText(context, objectText);
34
+ const originalText = context.sourceText.slice(context.returnExpression.range[0], context.returnExpression.range[1]);
35
+ return originalText === replacementText
36
+ ? void 0
37
+ : {
38
+ replacementText,
39
+ returnExpressionRange: context.returnExpression.range,
40
+ };
41
+ }
42
+ /**
43
+ * Collects nested replacements for all supported object literal properties.
44
+ * @param context Data required to analyze supported object properties.
45
+ * @param properties Supported object literal properties to rewrite.
46
+ * @returns Property replacements when every property can be handled safely.
47
+ * @example
48
+ * ```typescript
49
+ * const collection = buildPropertyReplacementCollection(context, properties);
50
+ * ```
51
+ */
52
+ function buildPropertyReplacementCollection(context, properties) {
53
+ const propertyNames = new Set();
54
+ const replacements = [];
55
+ const targetProperties = createTargetPropertyMap(context);
56
+ for (const property of properties) {
57
+ const replacementContext = createPropertyReplacementContext(context, property, targetProperties);
58
+ if (replacementContext === void 0) {
59
+ return void 0;
60
+ }
61
+ appendPropertyReplacement(propertyNames, replacements, replacementContext);
62
+ }
63
+ return { propertyNames, replacements };
64
+ }
65
+ /**
66
+ * Collects a fix match for a supported Vitest mock factory call.
67
+ * @param context Match collection context.
68
+ * @returns Match result when the object literal can be safely rewritten.
69
+ * @example
70
+ * ```typescript
71
+ * const match = collectMatch(context);
72
+ * ```
73
+ */
74
+ function collectMatch(context) {
75
+ const factoryMatchInput = getFactoryMatchInput(context.callExpression);
76
+ if (factoryMatchInput === void 0) {
77
+ return void 0;
78
+ }
79
+ const targetType = resolveFactoryTargetType({
80
+ callExpression: context.callExpression,
81
+ checker: context.checker,
82
+ factoryArgument: factoryMatchInput.factoryArgument,
83
+ objectExpression: factoryMatchInput.objectExpression,
84
+ services: context.services,
85
+ });
86
+ if (targetType === void 0) {
87
+ return void 0;
88
+ }
89
+ const collectedReplacements = collectPropertyReplacements({
90
+ checker: context.checker,
91
+ moduleSpecifier: factoryMatchInput.moduleSpecifier,
92
+ objectExpression: factoryMatchInput.objectExpression,
93
+ services: context.services,
94
+ sourceText: context.sourceText,
95
+ targetType,
96
+ });
97
+ return collectedReplacements === void 0
98
+ ? void 0
99
+ : buildMatchResult({
100
+ checker: context.checker,
101
+ factoryArgument: factoryMatchInput.factoryArgument,
102
+ moduleSpecifier: factoryMatchInput.moduleSpecifier,
103
+ objectExpression: factoryMatchInput.objectExpression,
104
+ propertyNames: collectedReplacements.propertyNames,
105
+ replacements: collectedReplacements.replacements,
106
+ returnExpression: factoryMatchInput.returnExpression,
107
+ sourceText: context.sourceText,
108
+ targetType,
109
+ });
110
+ }
111
+ /**
112
+ * Collects nested replacements for all supported object literal properties.
113
+ * @param context Data required to analyze supported object properties.
114
+ * @returns Property replacements when every property can be handled safely.
115
+ * @example
116
+ * ```typescript
117
+ * const collection = collectPropertyReplacements(context);
118
+ * ```
119
+ */
120
+ function collectPropertyReplacements(context) {
121
+ const properties = context.objectExpression.properties.filter((property) => isSupportedProperty(property));
122
+ return properties.length === context.objectExpression.properties.length
123
+ ? buildPropertyReplacementCollection(context, properties)
124
+ : void 0;
125
+ }
126
+ /**
127
+ * Creates replacement inputs for one supported object literal property.
128
+ * @param context Data required to analyze supported object properties.
129
+ * @param property Supported property from the returned object literal.
130
+ * @param targetProperties Target-property lookup keyed by property name.
131
+ * @returns Replacement inputs when the property can be handled safely.
132
+ * @example
133
+ * ```typescript
134
+ * const replacementContext = createPropertyReplacementContext(context, property, targetProperties);
135
+ * ```
136
+ */
137
+ function createPropertyReplacementContext(context, property, targetProperties) {
138
+ const keyName = getPropertyName(property.key);
139
+ const targetPropertySymbol = keyName === void 0 ? void 0 : targetProperties.get(keyName);
140
+ return keyName === void 0 || targetPropertySymbol === void 0
141
+ ? void 0
142
+ : {
143
+ checker: context.checker,
144
+ keyName,
145
+ moduleSpecifier: context.moduleSpecifier,
146
+ property,
147
+ services: context.services,
148
+ sourceText: context.sourceText,
149
+ targetPropertySymbol,
150
+ };
151
+ }
152
+ /**
153
+ * Creates the final replacement text for the returned object expression.
154
+ * @param context Data required to build the final replacement.
155
+ * @param objectText Rewritten object literal text.
156
+ * @returns Final replacement text for the factory return expression.
157
+ * @example
158
+ * ```typescript
159
+ * const text = createReplacementText(context, "({})");
160
+ * ```
161
+ */
162
+ function createReplacementText(context, objectText) {
163
+ if (isOuterCastRequired({
164
+ checker: context.checker,
165
+ propertyNames: context.propertyNames,
166
+ targetType: context.targetType,
167
+ })) {
168
+ return `(${objectText}) as typeof import(${JSON.stringify(context.moduleSpecifier)})`;
169
+ }
170
+ return shouldWrapImplicitObject(context.factoryArgument, context.returnExpression, context.objectExpression)
171
+ ? `(${objectText})`
172
+ : objectText;
173
+ }
174
+ /**
175
+ * Builds the lookup of target properties from the inferred target type.
176
+ * @param context Data required to analyze supported object properties.
177
+ * @returns Target-property lookup keyed by property name.
178
+ * @example
179
+ * ```typescript
180
+ * const targetProperties = createTargetPropertyMap(context);
181
+ * ```
182
+ */
183
+ function createTargetPropertyMap(context) {
184
+ return new Map(context.checker
185
+ .getPropertiesOfType(context.targetType)
186
+ .map((propertySymbol) => [propertySymbol.getName(), propertySymbol]));
187
+ }
188
+ export { collectMatch };
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsd0JBQXdCLEdBQ3pCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0U7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyx5QkFBeUIsQ0FDaEMsYUFBMEIsRUFDMUIsWUFBbUMsRUFDbkMsa0JBQW1EO0lBRW5ELGFBQWEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFOUMsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVqRSxJQUFJLFdBQVcsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsZ0JBQWdCLENBQ3ZCLE9BQWdDO0lBRWhDLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUN0QyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDdEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDakMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDbEMsRUFDRCxPQUFPLENBQUMsWUFBWSxFQUNwQixPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNsQyxDQUFDO0lBQ0YsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUMzQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNqQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNsQyxDQUFDO0lBRUYsT0FBTyxZQUFZLEtBQUssZUFBZTtRQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDO1lBQ0UsZUFBZTtZQUNmLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLO1NBQ3RELENBQUM7QUFDUixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxrQ0FBa0MsQ0FDekMsT0FBMkMsRUFDM0MsVUFBd0M7SUFFeEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUN4QyxNQUFNLFlBQVksR0FBMEIsRUFBRSxDQUFDO0lBQy9DLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFMUQsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLGtCQUFrQixHQUFHLGdDQUFnQyxDQUN6RCxPQUFPLEVBQ1AsUUFBUSxFQUNSLGdCQUFnQixDQUNqQixDQUFDO1FBRUYsSUFBSSxrQkFBa0IsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sS0FBSyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUVELHlCQUF5QixDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxPQUE0QjtJQUNoRCxNQUFNLGlCQUFpQixHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV2RSxJQUFJLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakMsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsd0JBQXdCLENBQUM7UUFDMUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1FBQ3RDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztRQUN4QixlQUFlLEVBQUUsaUJBQWlCLENBQUMsZUFBZTtRQUNsRCxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0I7UUFDcEQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO0tBQzNCLENBQUMsQ0FBQztJQUVILElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxxQkFBcUIsR0FBRywyQkFBMkIsQ0FBQztRQUN4RCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87UUFDeEIsZUFBZSxFQUFFLGlCQUFpQixDQUFDLGVBQWU7UUFDbEQsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCO1FBQ3BELFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtRQUMxQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDOUIsVUFBVTtLQUNYLENBQUMsQ0FBQztJQUVILE9BQU8scUJBQXFCLEtBQUssS0FBSyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDUixDQUFDLENBQUMsZ0JBQWdCLENBQUM7WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsZUFBZSxFQUFFLGlCQUFpQixDQUFDLGVBQWU7WUFDbEQsZUFBZSxFQUFFLGlCQUFpQixDQUFDLGVBQWU7WUFDbEQsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCO1lBQ3BELGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxhQUFhO1lBQ2xELFlBQVksRUFBRSxxQkFBcUIsQ0FBQyxZQUFZO1lBQ2hELGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLGdCQUFnQjtZQUNwRCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsVUFBVTtTQUNYLENBQUMsQ0FBQztBQUNULENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsMkJBQTJCLENBQ2xDLE9BQTJDO0lBRTNDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDekUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQzlCLENBQUM7SUFFRixPQUFPLFVBQVUsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxNQUFNO1FBQ3JFLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO1FBQ3pELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxnQ0FBZ0MsQ0FDdkMsT0FBMkMsRUFDM0MsUUFBMkIsRUFDM0IsZ0JBQW1DO0lBRW5DLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsTUFBTSxvQkFBb0IsR0FDeEIsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTlELE9BQU8sT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLG9CQUFvQixLQUFLLEtBQUssQ0FBQztRQUMxRCxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDO1lBQ0UsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLE9BQU87WUFDUCxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7WUFDeEMsUUFBUTtZQUNSLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtZQUMxQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsb0JBQW9CO1NBQ3JCLENBQUM7QUFDUixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsT0FBZ0MsRUFDaEMsVUFBa0I7SUFFbEIsSUFDRSxtQkFBbUIsQ0FBQztRQUNsQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87UUFDeEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1FBQ3BDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtLQUMvQixDQUFDLEVBQ0YsQ0FBQztRQUNELE9BQU8sSUFBSSxVQUFVLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUM3QixPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsZ0JBQWdCLEVBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDekI7UUFDQyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUc7UUFDbkIsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHVCQUF1QixDQUM5QixPQUEyQztJQUUzQyxPQUFPLElBQUksR0FBRyxDQUNaLE9BQU8sQ0FBQyxPQUFPO1NBQ1osbUJBQW1CLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUN2QyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7QUFDSixDQUFDO0FBRUQsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xyXG4gIEJ1aWxkTWF0Y2hSZXN1bHRDb250ZXh0LFxyXG4gIEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbiAgQ29sbGVjdE1hdGNoQ29udGV4dCxcclxuICBDb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHNDb250ZXh0LFxyXG4gIE1hdGNoUmVzdWx0LFxyXG4gIFByb3BlcnR5UmVwbGFjZW1lbnQsXHJcbiAgUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24sXHJcbiAgU3VwcG9ydGVkUHJvcGVydHksXHJcbiAgVGFyZ2V0UHJvcGVydHlNYXAsXHJcbn0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgZ2V0UHJvcGVydHlOYW1lLFxyXG4gIGlzU3VwcG9ydGVkUHJvcGVydHksXHJcbiAgc2hvdWxkV3JhcEltcGxpY2l0T2JqZWN0LFxyXG59IGZyb20gXCIuL2FzdC1oZWxwZXJzXCI7XHJcbmltcG9ydCB7IGdldEZhY3RvcnlNYXRjaElucHV0IH0gZnJvbSBcIi4vbWF0Y2gtaW5wdXRcIjtcclxuaW1wb3J0IHtcclxuICBhcHBseVRleHRSZXBsYWNlbWVudHMsXHJcbiAgYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50LFxyXG59IGZyb20gXCIuL3JlcGxhY2VtZW50LWhlbHBlcnNcIjtcclxuaW1wb3J0IHsgaXNPdXRlckNhc3RSZXF1aXJlZCwgcmVzb2x2ZUZhY3RvcnlUYXJnZXRUeXBlIH0gZnJvbSBcIi4vdHlwZS1oZWxwZXJzXCI7XHJcblxyXG4vKipcclxuICogUmVjb3JkcyBvbmUgcHJvcGVydHkgcmVwbGFjZW1lbnQgd2hlbiB0aGUgc291cmNlIHRleHQgbXVzdCBjaGFuZ2UuXHJcbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWVzIFByb3BlcnR5IG5hbWVzIGFscmVhZHkgaGFuZGxlZCBmb3IgdGhlIG9iamVjdCBsaXRlcmFsLlxyXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRzIFJlcGxhY2VtZW50IGVudHJpZXMgY29sbGVjdGVkIHNvIGZhci5cclxuICogQHBhcmFtIHJlcGxhY2VtZW50Q29udGV4dCBSZXBsYWNlbWVudCBjb250ZXh0IGZvciB0aGUgY3VycmVudCBwcm9wZXJ0eS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBhcHBlbmRQcm9wZXJ0eVJlcGxhY2VtZW50KG5ldyBTZXQoKSwgW10sIHJlcGxhY2VtZW50Q29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYXBwZW5kUHJvcGVydHlSZXBsYWNlbWVudChcclxuICBwcm9wZXJ0eU5hbWVzOiBTZXQ8c3RyaW5nPixcclxuICByZXBsYWNlbWVudHM6IFByb3BlcnR5UmVwbGFjZW1lbnRbXSxcclxuICByZXBsYWNlbWVudENvbnRleHQ6IEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbik6IHZvaWQge1xyXG4gIHByb3BlcnR5TmFtZXMuYWRkKHJlcGxhY2VtZW50Q29udGV4dC5rZXlOYW1lKTtcclxuXHJcbiAgY29uc3QgcmVwbGFjZW1lbnQgPSBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnQocmVwbGFjZW1lbnRDb250ZXh0KTtcclxuXHJcbiAgaWYgKHJlcGxhY2VtZW50ICE9PSB2b2lkIDApIHtcclxuICAgIHJlcGxhY2VtZW50cy5wdXNoKHJlcGxhY2VtZW50KTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZHMgdGhlIGZpbmFsIG1hdGNoIHJlc3VsdCBmb3IgYSByZXdyaXR0ZW4gb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIGZpbmFsIHJlcGxhY2VtZW50LlxyXG4gKiBAcmV0dXJucyBGaW5hbCBtYXRjaCByZXN1bHQgd2hlbiB0aGUgb2JqZWN0IHRleHQgY2hhbmdlcy5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtYXRjaCA9IGJ1aWxkTWF0Y2hSZXN1bHQoY29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYnVpbGRNYXRjaFJlc3VsdChcclxuICBjb250ZXh0OiBCdWlsZE1hdGNoUmVzdWx0Q29udGV4dCxcclxuKTogTWF0Y2hSZXN1bHQgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IG9iamVjdFRleHQgPSBhcHBseVRleHRSZXBsYWNlbWVudHMoXHJcbiAgICBjb250ZXh0LnNvdXJjZVRleHQuc2xpY2UoXHJcbiAgICAgIGNvbnRleHQub2JqZWN0RXhwcmVzc2lvbi5yYW5nZVswXSxcclxuICAgICAgY29udGV4dC5vYmplY3RFeHByZXNzaW9uLnJhbmdlWzFdLFxyXG4gICAgKSxcclxuICAgIGNvbnRleHQucmVwbGFjZW1lbnRzLFxyXG4gICAgY29udGV4dC5vYmplY3RFeHByZXNzaW9uLnJhbmdlWzBdLFxyXG4gICk7XHJcbiAgY29uc3QgcmVwbGFjZW1lbnRUZXh0ID0gY3JlYXRlUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQsIG9iamVjdFRleHQpO1xyXG4gIGNvbnN0IG9yaWdpbmFsVGV4dCA9IGNvbnRleHQuc291cmNlVGV4dC5zbGljZShcclxuICAgIGNvbnRleHQucmV0dXJuRXhwcmVzc2lvbi5yYW5nZVswXSxcclxuICAgIGNvbnRleHQucmV0dXJuRXhwcmVzc2lvbi5yYW5nZVsxXSxcclxuICApO1xyXG5cclxuICByZXR1cm4gb3JpZ2luYWxUZXh0ID09PSByZXBsYWNlbWVudFRleHRcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IHtcclxuICAgICAgICByZXBsYWNlbWVudFRleHQsXHJcbiAgICAgICAgcmV0dXJuRXhwcmVzc2lvblJhbmdlOiBjb250ZXh0LnJldHVybkV4cHJlc3Npb24ucmFuZ2UsXHJcbiAgICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0cyBuZXN0ZWQgcmVwbGFjZW1lbnRzIGZvciBhbGwgc3VwcG9ydGVkIG9iamVjdCBsaXRlcmFsIHByb3BlcnRpZXMuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgcmVxdWlyZWQgdG8gYW5hbHl6ZSBzdXBwb3J0ZWQgb2JqZWN0IHByb3BlcnRpZXMuXHJcbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIFN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0aWVzIHRvIHJld3JpdGUuXHJcbiAqIEByZXR1cm5zIFByb3BlcnR5IHJlcGxhY2VtZW50cyB3aGVuIGV2ZXJ5IHByb3BlcnR5IGNhbiBiZSBoYW5kbGVkIHNhZmVseS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBjb2xsZWN0aW9uID0gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbihjb250ZXh0LCBwcm9wZXJ0aWVzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb2xsZWN0aW9uKFxyXG4gIGNvbnRleHQ6IENvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50c0NvbnRleHQsXHJcbiAgcHJvcGVydGllczogcmVhZG9ubHkgU3VwcG9ydGVkUHJvcGVydHlbXSxcclxuKTogUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHByb3BlcnR5TmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICBjb25zdCByZXBsYWNlbWVudHM6IFByb3BlcnR5UmVwbGFjZW1lbnRbXSA9IFtdO1xyXG4gIGNvbnN0IHRhcmdldFByb3BlcnRpZXMgPSBjcmVhdGVUYXJnZXRQcm9wZXJ0eU1hcChjb250ZXh0KTtcclxuXHJcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XHJcbiAgICBjb25zdCByZXBsYWNlbWVudENvbnRleHQgPSBjcmVhdGVQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dChcclxuICAgICAgY29udGV4dCxcclxuICAgICAgcHJvcGVydHksXHJcbiAgICAgIHRhcmdldFByb3BlcnRpZXMsXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChyZXBsYWNlbWVudENvbnRleHQgPT09IHZvaWQgMCkge1xyXG4gICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGVuZFByb3BlcnR5UmVwbGFjZW1lbnQocHJvcGVydHlOYW1lcywgcmVwbGFjZW1lbnRzLCByZXBsYWNlbWVudENvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHsgcHJvcGVydHlOYW1lcywgcmVwbGFjZW1lbnRzIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0cyBhIGZpeCBtYXRjaCBmb3IgYSBzdXBwb3J0ZWQgVml0ZXN0IG1vY2sgZmFjdG9yeSBjYWxsLlxyXG4gKiBAcGFyYW0gY29udGV4dCBNYXRjaCBjb2xsZWN0aW9uIGNvbnRleHQuXHJcbiAqIEByZXR1cm5zIE1hdGNoIHJlc3VsdCB3aGVuIHRoZSBvYmplY3QgbGl0ZXJhbCBjYW4gYmUgc2FmZWx5IHJld3JpdHRlbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtYXRjaCA9IGNvbGxlY3RNYXRjaChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0TWF0Y2goY29udGV4dDogQ29sbGVjdE1hdGNoQ29udGV4dCk6IE1hdGNoUmVzdWx0IHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCBmYWN0b3J5TWF0Y2hJbnB1dCA9IGdldEZhY3RvcnlNYXRjaElucHV0KGNvbnRleHQuY2FsbEV4cHJlc3Npb24pO1xyXG5cclxuICBpZiAoZmFjdG9yeU1hdGNoSW5wdXQgPT09IHZvaWQgMCkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGNvbnN0IHRhcmdldFR5cGUgPSByZXNvbHZlRmFjdG9yeVRhcmdldFR5cGUoe1xyXG4gICAgY2FsbEV4cHJlc3Npb246IGNvbnRleHQuY2FsbEV4cHJlc3Npb24sXHJcbiAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICBmYWN0b3J5QXJndW1lbnQ6IGZhY3RvcnlNYXRjaElucHV0LmZhY3RvcnlBcmd1bWVudCxcclxuICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICBzZXJ2aWNlczogY29udGV4dC5zZXJ2aWNlcyxcclxuICB9KTtcclxuXHJcbiAgaWYgKHRhcmdldFR5cGUgPT09IHZvaWQgMCkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGNvbnN0IGNvbGxlY3RlZFJlcGxhY2VtZW50cyA9IGNvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50cyh7XHJcbiAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICBtb2R1bGVTcGVjaWZpZXI6IGZhY3RvcnlNYXRjaElucHV0Lm1vZHVsZVNwZWNpZmllcixcclxuICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICBzZXJ2aWNlczogY29udGV4dC5zZXJ2aWNlcyxcclxuICAgIHNvdXJjZVRleHQ6IGNvbnRleHQuc291cmNlVGV4dCxcclxuICAgIHRhcmdldFR5cGUsXHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBjb2xsZWN0ZWRSZXBsYWNlbWVudHMgPT09IHZvaWQgMFxyXG4gICAgPyB2b2lkIDBcclxuICAgIDogYnVpbGRNYXRjaFJlc3VsdCh7XHJcbiAgICAgICAgY2hlY2tlcjogY29udGV4dC5jaGVja2VyLFxyXG4gICAgICAgIGZhY3RvcnlBcmd1bWVudDogZmFjdG9yeU1hdGNoSW5wdXQuZmFjdG9yeUFyZ3VtZW50LFxyXG4gICAgICAgIG1vZHVsZVNwZWNpZmllcjogZmFjdG9yeU1hdGNoSW5wdXQubW9kdWxlU3BlY2lmaWVyLFxyXG4gICAgICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICAgICAgcHJvcGVydHlOYW1lczogY29sbGVjdGVkUmVwbGFjZW1lbnRzLnByb3BlcnR5TmFtZXMsXHJcbiAgICAgICAgcmVwbGFjZW1lbnRzOiBjb2xsZWN0ZWRSZXBsYWNlbWVudHMucmVwbGFjZW1lbnRzLFxyXG4gICAgICAgIHJldHVybkV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0LnJldHVybkV4cHJlc3Npb24sXHJcbiAgICAgICAgc291cmNlVGV4dDogY29udGV4dC5zb3VyY2VUZXh0LFxyXG4gICAgICAgIHRhcmdldFR5cGUsXHJcbiAgICAgIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogQ29sbGVjdHMgbmVzdGVkIHJlcGxhY2VtZW50cyBmb3IgYWxsIHN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0aWVzLlxyXG4gKiBAcGFyYW0gY29udGV4dCBEYXRhIHJlcXVpcmVkIHRvIGFuYWx5emUgc3VwcG9ydGVkIG9iamVjdCBwcm9wZXJ0aWVzLlxyXG4gKiBAcmV0dXJucyBQcm9wZXJ0eSByZXBsYWNlbWVudHMgd2hlbiBldmVyeSBwcm9wZXJ0eSBjYW4gYmUgaGFuZGxlZCBzYWZlbHkuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50cyhjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHMoXHJcbiAgY29udGV4dDogQ29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzQ29udGV4dCxcclxuKTogUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHByb3BlcnRpZXMgPSBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucHJvcGVydGllcy5maWx0ZXIoKHByb3BlcnR5KSA9PlxyXG4gICAgaXNTdXBwb3J0ZWRQcm9wZXJ0eShwcm9wZXJ0eSksXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHByb3BlcnRpZXMubGVuZ3RoID09PSBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucHJvcGVydGllcy5sZW5ndGhcclxuICAgID8gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbihjb250ZXh0LCBwcm9wZXJ0aWVzKVxyXG4gICAgOiB2b2lkIDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIHJlcGxhY2VtZW50IGlucHV0cyBmb3Igb25lIHN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0eS5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBhbmFseXplIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydGllcy5cclxuICogQHBhcmFtIHByb3BlcnR5IFN1cHBvcnRlZCBwcm9wZXJ0eSBmcm9tIHRoZSByZXR1cm5lZCBvYmplY3QgbGl0ZXJhbC5cclxuICogQHBhcmFtIHRhcmdldFByb3BlcnRpZXMgVGFyZ2V0LXByb3BlcnR5IGxvb2t1cCBrZXllZCBieSBwcm9wZXJ0eSBuYW1lLlxyXG4gKiBAcmV0dXJucyBSZXBsYWNlbWVudCBpbnB1dHMgd2hlbiB0aGUgcHJvcGVydHkgY2FuIGJlIGhhbmRsZWQgc2FmZWx5LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlcGxhY2VtZW50Q29udGV4dCA9IGNyZWF0ZVByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0KGNvbnRleHQsIHByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0aWVzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dChcclxuICBjb250ZXh0OiBDb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHNDb250ZXh0LFxyXG4gIHByb3BlcnR5OiBTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICB0YXJnZXRQcm9wZXJ0aWVzOiBUYXJnZXRQcm9wZXJ0eU1hcCxcclxuKTogQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dCB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3Qga2V5TmFtZSA9IGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eS5rZXkpO1xyXG4gIGNvbnN0IHRhcmdldFByb3BlcnR5U3ltYm9sID1cclxuICAgIGtleU5hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldFByb3BlcnRpZXMuZ2V0KGtleU5hbWUpO1xyXG5cclxuICByZXR1cm4ga2V5TmFtZSA9PT0gdm9pZCAwIHx8IHRhcmdldFByb3BlcnR5U3ltYm9sID09PSB2b2lkIDBcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IHtcclxuICAgICAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICAgICAga2V5TmFtZSxcclxuICAgICAgICBtb2R1bGVTcGVjaWZpZXI6IGNvbnRleHQubW9kdWxlU3BlY2lmaWVyLFxyXG4gICAgICAgIHByb3BlcnR5LFxyXG4gICAgICAgIHNlcnZpY2VzOiBjb250ZXh0LnNlcnZpY2VzLFxyXG4gICAgICAgIHNvdXJjZVRleHQ6IGNvbnRleHQuc291cmNlVGV4dCxcclxuICAgICAgICB0YXJnZXRQcm9wZXJ0eVN5bWJvbCxcclxuICAgICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIGZpbmFsIHJlcGxhY2VtZW50IHRleHQgZm9yIHRoZSByZXR1cm5lZCBvYmplY3QgZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBidWlsZCB0aGUgZmluYWwgcmVwbGFjZW1lbnQuXHJcbiAqIEBwYXJhbSBvYmplY3RUZXh0IFJld3JpdHRlbiBvYmplY3QgbGl0ZXJhbCB0ZXh0LlxyXG4gKiBAcmV0dXJucyBGaW5hbCByZXBsYWNlbWVudCB0ZXh0IGZvciB0aGUgZmFjdG9yeSByZXR1cm4gZXhwcmVzc2lvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB0ZXh0ID0gY3JlYXRlUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQsIFwiKHt9KVwiKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZXBsYWNlbWVudFRleHQoXHJcbiAgY29udGV4dDogQnVpbGRNYXRjaFJlc3VsdENvbnRleHQsXHJcbiAgb2JqZWN0VGV4dDogc3RyaW5nLFxyXG4pOiBzdHJpbmcge1xyXG4gIGlmIChcclxuICAgIGlzT3V0ZXJDYXN0UmVxdWlyZWQoe1xyXG4gICAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICAgIHByb3BlcnR5TmFtZXM6IGNvbnRleHQucHJvcGVydHlOYW1lcyxcclxuICAgICAgdGFyZ2V0VHlwZTogY29udGV4dC50YXJnZXRUeXBlLFxyXG4gICAgfSlcclxuICApIHtcclxuICAgIHJldHVybiBgKCR7b2JqZWN0VGV4dH0pIGFzIHR5cGVvZiBpbXBvcnQoJHtKU09OLnN0cmluZ2lmeShjb250ZXh0Lm1vZHVsZVNwZWNpZmllcil9KWA7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gc2hvdWxkV3JhcEltcGxpY2l0T2JqZWN0KFxyXG4gICAgY29udGV4dC5mYWN0b3J5QXJndW1lbnQsXHJcbiAgICBjb250ZXh0LnJldHVybkV4cHJlc3Npb24sXHJcbiAgICBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgKVxyXG4gICAgPyBgKCR7b2JqZWN0VGV4dH0pYFxyXG4gICAgOiBvYmplY3RUZXh0O1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSBsb29rdXAgb2YgdGFyZ2V0IHByb3BlcnRpZXMgZnJvbSB0aGUgaW5mZXJyZWQgdGFyZ2V0IHR5cGUuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgcmVxdWlyZWQgdG8gYW5hbHl6ZSBzdXBwb3J0ZWQgb2JqZWN0IHByb3BlcnRpZXMuXHJcbiAqIEByZXR1cm5zIFRhcmdldC1wcm9wZXJ0eSBsb29rdXAga2V5ZWQgYnkgcHJvcGVydHkgbmFtZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB0YXJnZXRQcm9wZXJ0aWVzID0gY3JlYXRlVGFyZ2V0UHJvcGVydHlNYXAoY29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlVGFyZ2V0UHJvcGVydHlNYXAoXHJcbiAgY29udGV4dDogQ29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzQ29udGV4dCxcclxuKTogVGFyZ2V0UHJvcGVydHlNYXAge1xyXG4gIHJldHVybiBuZXcgTWFwKFxyXG4gICAgY29udGV4dC5jaGVja2VyXHJcbiAgICAgIC5nZXRQcm9wZXJ0aWVzT2ZUeXBlKGNvbnRleHQudGFyZ2V0VHlwZSlcclxuICAgICAgLm1hcCgocHJvcGVydHlTeW1ib2wpID0+IFtwcm9wZXJ0eVN5bWJvbC5nZXROYW1lKCksIHByb3BlcnR5U3ltYm9sXSksXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IHsgY29sbGVjdE1hdGNoIH07XHJcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import type { BuildPropertyReplacementContext, PropertyReplacement } from "./types.js";
2
+ /**
3
+ * Applies the collected property replacements in reverse source order.
4
+ * @param text Original object literal source text.
5
+ * @param replacements Replacement operations for the object literal.
6
+ * @param offset Absolute start offset of the object literal.
7
+ * @returns Updated object literal source text.
8
+ * @example
9
+ * ```typescript
10
+ * const objectText = applyTextReplacements(text, replacements, offset);
11
+ * ```
12
+ */
13
+ declare function applyTextReplacements(text: string, replacements: readonly PropertyReplacement[], offset: number): string;
14
+ /**
15
+ * Builds the replacement entry when a property's source text must change.
16
+ * @param context Data needed to rewrite one supported object property.
17
+ * @returns Replacement details when the property text changes.
18
+ * @example
19
+ * ```typescript
20
+ * const replacement = buildPropertyReplacement(context);
21
+ * ```
22
+ */
23
+ declare function buildPropertyReplacement(context: BuildPropertyReplacementContext): PropertyReplacement | undefined;
24
+ export { applyTextReplacements, buildPropertyReplacement };
25
+ //# sourceMappingURL=replacement-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replacement-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+BAA+B,EAC/B,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAIjB;;;;;;;;;;GAUG;AACH,iBAAS,qBAAqB,CAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,mBAAmB,EAAE,EAC5C,MAAM,EAAE,MAAM,GACb,MAAM,CAaR;AAED;;;;;;;;GAQG;AACH,iBAAS,wBAAwB,CAC/B,OAAO,EAAE,+BAA+B,GACvC,mBAAmB,GAAG,SAAS,CAWjC;AA2ED,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { canUseShorthand, unwrapExpression } from "./ast-helpers.js";
2
+ /**
3
+ * Applies the collected property replacements in reverse source order.
4
+ * @param text Original object literal source text.
5
+ * @param replacements Replacement operations for the object literal.
6
+ * @param offset Absolute start offset of the object literal.
7
+ * @returns Updated object literal source text.
8
+ * @example
9
+ * ```typescript
10
+ * const objectText = applyTextReplacements(text, replacements, offset);
11
+ * ```
12
+ */
13
+ function applyTextReplacements(text, replacements, offset) {
14
+ let currentText = text;
15
+ for (const replacement of replacements.toSorted((left, right) => right.range[0] - left.range[0])) {
16
+ const start = replacement.range[0] - offset;
17
+ const end = replacement.range[1] - offset;
18
+ currentText = `${currentText.slice(0, start)}${replacement.replacementText}${currentText.slice(end)}`;
19
+ }
20
+ return currentText;
21
+ }
22
+ /**
23
+ * Builds the replacement entry when a property's source text must change.
24
+ * @param context Data needed to rewrite one supported object property.
25
+ * @returns Replacement details when the property text changes.
26
+ * @example
27
+ * ```typescript
28
+ * const replacement = buildPropertyReplacement(context);
29
+ * ```
30
+ */
31
+ function buildPropertyReplacement(context) {
32
+ const replacementText = buildReplacementText(context);
33
+ const propertyRange = context.property.range;
34
+ const originalText = context.sourceText.slice(propertyRange[0], propertyRange[1]);
35
+ return originalText === replacementText
36
+ ? void 0
37
+ : { range: propertyRange, replacementText };
38
+ }
39
+ /**
40
+ * Builds the final source text for one object literal property.
41
+ * @param context Property replacement context.
42
+ * @returns Rewritten property text.
43
+ * @example
44
+ * ```typescript
45
+ * const replacementText = buildReplacementText(context);
46
+ * ```
47
+ */
48
+ function buildReplacementText(context) {
49
+ const { keyName, moduleSpecifier, property, sourceText } = context;
50
+ const baseValue = unwrapExpression(property.value);
51
+ const baseValueText = sourceText.slice(baseValue.range[0], baseValue.range[1]);
52
+ const keyText = sourceText.slice(property.key.range[0], property.key.range[1]);
53
+ const needsCast = isPropertyCastRequired(context, baseValue);
54
+ const valueText = needsCast
55
+ ? `${baseValueText} as ${getPropertyTypeText(moduleSpecifier, keyName)}`
56
+ : baseValueText;
57
+ return canUseShorthand({ baseValue, keyName, needsCast, property })
58
+ ? keyName
59
+ : `${keyText}: ${valueText}`;
60
+ }
61
+ /**
62
+ * Builds the imported property type expression used for a nested cast.
63
+ * @param moduleSpecifier Static module specifier used by the mock.
64
+ * @param keyName Property name being cast.
65
+ * @returns Type expression for the imported property.
66
+ * @example
67
+ * ```typescript
68
+ * const propertyType = getPropertyTypeText("fixture-module", "parser");
69
+ * ```
70
+ */
71
+ function getPropertyTypeText(moduleSpecifier, keyName) {
72
+ return `typeof import(${JSON.stringify(moduleSpecifier)})[${JSON.stringify(keyName)}]`;
73
+ }
74
+ /**
75
+ * Determines whether a property value still needs a nested cast.
76
+ * @param context Property replacement context.
77
+ * @param baseValue Unwrapped property value expression.
78
+ * @returns True when the property value is not assignable to the target type.
79
+ * @example
80
+ * ```typescript
81
+ * const needsCast = isPropertyCastRequired(context, baseValue);
82
+ * ```
83
+ */
84
+ function isPropertyCastRequired(context, baseValue) {
85
+ const tsBaseValueNode = context.services.esTreeNodeToTSNodeMap.get(baseValue);
86
+ const tsPropertyKeyNode = context.services.esTreeNodeToTSNodeMap.get(context.property.key);
87
+ const sourceType = context.checker.getTypeAtLocation(tsBaseValueNode);
88
+ const propertyTargetType = context.checker.getTypeOfSymbolAtLocation(context.targetPropertySymbol, tsPropertyKeyNode);
89
+ return !context.checker.isTypeAssignableTo(sourceType, propertyTargetType);
90
+ }
91
+ export { applyTextReplacements, buildPropertyReplacement };
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZW1lbnQtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9wcmVmZXItdml0ZXN0LWluY3JlbWVudGFsLWNhc3RzL3JlcGxhY2VtZW50LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsSUFBWSxFQUNaLFlBQTRDLEVBQzVDLE1BQWM7SUFFZCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFdkIsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUM3QyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDaEQsRUFBRSxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFFMUMsV0FBVyxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDeEcsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsd0JBQXdCLENBQy9CLE9BQXdDO0lBRXhDLE1BQU0sZUFBZSxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUMzQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQztJQUVGLE9BQU8sWUFBWSxLQUFLLGVBQWU7UUFDckMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNSLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDaEQsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsT0FBd0M7SUFFeEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNuRSxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FDcEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDbEIsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDbkIsQ0FBQztJQUNGLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQzlCLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNyQixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDdEIsQ0FBQztJQUNGLE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RCxNQUFNLFNBQVMsR0FBRyxTQUFTO1FBQ3pCLENBQUMsQ0FBQyxHQUFHLGFBQWEsT0FBTyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDeEUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUVsQixPQUFPLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxPQUFPO1FBQ1QsQ0FBQyxDQUFDLEdBQUcsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLG1CQUFtQixDQUFDLGVBQXVCLEVBQUUsT0FBZTtJQUNuRSxPQUFPLGlCQUFpQixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUN6RixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FDN0IsT0FBd0MsRUFDeEMsU0FBK0Q7SUFFL0QsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUUsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FDbEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ3JCLENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FDbEUsT0FBTyxDQUFDLG9CQUFvQixFQUM1QixpQkFBaUIsQ0FDbEIsQ0FBQztJQUVGLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcclxuICBCdWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0LFxyXG4gIFByb3BlcnR5UmVwbGFjZW1lbnQsXHJcbn0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7IGNhblVzZVNob3J0aGFuZCwgdW53cmFwRXhwcmVzc2lvbiB9IGZyb20gXCIuL2FzdC1oZWxwZXJzXCI7XHJcblxyXG4vKipcclxuICogQXBwbGllcyB0aGUgY29sbGVjdGVkIHByb3BlcnR5IHJlcGxhY2VtZW50cyBpbiByZXZlcnNlIHNvdXJjZSBvcmRlci5cclxuICogQHBhcmFtIHRleHQgT3JpZ2luYWwgb2JqZWN0IGxpdGVyYWwgc291cmNlIHRleHQuXHJcbiAqIEBwYXJhbSByZXBsYWNlbWVudHMgUmVwbGFjZW1lbnQgb3BlcmF0aW9ucyBmb3IgdGhlIG9iamVjdCBsaXRlcmFsLlxyXG4gKiBAcGFyYW0gb2Zmc2V0IEFic29sdXRlIHN0YXJ0IG9mZnNldCBvZiB0aGUgb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEByZXR1cm5zIFVwZGF0ZWQgb2JqZWN0IGxpdGVyYWwgc291cmNlIHRleHQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3Qgb2JqZWN0VGV4dCA9IGFwcGx5VGV4dFJlcGxhY2VtZW50cyh0ZXh0LCByZXBsYWNlbWVudHMsIG9mZnNldCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYXBwbHlUZXh0UmVwbGFjZW1lbnRzKFxyXG4gIHRleHQ6IHN0cmluZyxcclxuICByZXBsYWNlbWVudHM6IHJlYWRvbmx5IFByb3BlcnR5UmVwbGFjZW1lbnRbXSxcclxuICBvZmZzZXQ6IG51bWJlcixcclxuKTogc3RyaW5nIHtcclxuICBsZXQgY3VycmVudFRleHQgPSB0ZXh0O1xyXG5cclxuICBmb3IgKGNvbnN0IHJlcGxhY2VtZW50IG9mIHJlcGxhY2VtZW50cy50b1NvcnRlZChcclxuICAgIChsZWZ0LCByaWdodCkgPT4gcmlnaHQucmFuZ2VbMF0gLSBsZWZ0LnJhbmdlWzBdLFxyXG4gICkpIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gcmVwbGFjZW1lbnQucmFuZ2VbMF0gLSBvZmZzZXQ7XHJcbiAgICBjb25zdCBlbmQgPSByZXBsYWNlbWVudC5yYW5nZVsxXSAtIG9mZnNldDtcclxuXHJcbiAgICBjdXJyZW50VGV4dCA9IGAke2N1cnJlbnRUZXh0LnNsaWNlKDAsIHN0YXJ0KX0ke3JlcGxhY2VtZW50LnJlcGxhY2VtZW50VGV4dH0ke2N1cnJlbnRUZXh0LnNsaWNlKGVuZCl9YDtcclxuICB9XHJcblxyXG4gIHJldHVybiBjdXJyZW50VGV4dDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEJ1aWxkcyB0aGUgcmVwbGFjZW1lbnQgZW50cnkgd2hlbiBhIHByb3BlcnR5J3Mgc291cmNlIHRleHQgbXVzdCBjaGFuZ2UuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgbmVlZGVkIHRvIHJld3JpdGUgb25lIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydHkuXHJcbiAqIEByZXR1cm5zIFJlcGxhY2VtZW50IGRldGFpbHMgd2hlbiB0aGUgcHJvcGVydHkgdGV4dCBjaGFuZ2VzLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlcGxhY2VtZW50ID0gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50KGNvbnRleHQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudChcclxuICBjb250ZXh0OiBCdWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0LFxyXG4pOiBQcm9wZXJ0eVJlcGxhY2VtZW50IHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCByZXBsYWNlbWVudFRleHQgPSBidWlsZFJlcGxhY2VtZW50VGV4dChjb250ZXh0KTtcclxuICBjb25zdCBwcm9wZXJ0eVJhbmdlID0gY29udGV4dC5wcm9wZXJ0eS5yYW5nZTtcclxuICBjb25zdCBvcmlnaW5hbFRleHQgPSBjb250ZXh0LnNvdXJjZVRleHQuc2xpY2UoXHJcbiAgICBwcm9wZXJ0eVJhbmdlWzBdLFxyXG4gICAgcHJvcGVydHlSYW5nZVsxXSxcclxuICApO1xyXG5cclxuICByZXR1cm4gb3JpZ2luYWxUZXh0ID09PSByZXBsYWNlbWVudFRleHRcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IHsgcmFuZ2U6IHByb3BlcnR5UmFuZ2UsIHJlcGxhY2VtZW50VGV4dCB9O1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSBmaW5hbCBzb3VyY2UgdGV4dCBmb3Igb25lIG9iamVjdCBsaXRlcmFsIHByb3BlcnR5LlxyXG4gKiBAcGFyYW0gY29udGV4dCBQcm9wZXJ0eSByZXBsYWNlbWVudCBjb250ZXh0LlxyXG4gKiBAcmV0dXJucyBSZXdyaXR0ZW4gcHJvcGVydHkgdGV4dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCByZXBsYWNlbWVudFRleHQgPSBidWlsZFJlcGxhY2VtZW50VGV4dChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBidWlsZFJlcGxhY2VtZW50VGV4dChcclxuICBjb250ZXh0OiBCdWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0LFxyXG4pOiBzdHJpbmcge1xyXG4gIGNvbnN0IHsga2V5TmFtZSwgbW9kdWxlU3BlY2lmaWVyLCBwcm9wZXJ0eSwgc291cmNlVGV4dCB9ID0gY29udGV4dDtcclxuICBjb25zdCBiYXNlVmFsdWUgPSB1bndyYXBFeHByZXNzaW9uKHByb3BlcnR5LnZhbHVlKTtcclxuICBjb25zdCBiYXNlVmFsdWVUZXh0ID0gc291cmNlVGV4dC5zbGljZShcclxuICAgIGJhc2VWYWx1ZS5yYW5nZVswXSxcclxuICAgIGJhc2VWYWx1ZS5yYW5nZVsxXSxcclxuICApO1xyXG4gIGNvbnN0IGtleVRleHQgPSBzb3VyY2VUZXh0LnNsaWNlKFxyXG4gICAgcHJvcGVydHkua2V5LnJhbmdlWzBdLFxyXG4gICAgcHJvcGVydHkua2V5LnJhbmdlWzFdLFxyXG4gICk7XHJcbiAgY29uc3QgbmVlZHNDYXN0ID0gaXNQcm9wZXJ0eUNhc3RSZXF1aXJlZChjb250ZXh0LCBiYXNlVmFsdWUpO1xyXG4gIGNvbnN0IHZhbHVlVGV4dCA9IG5lZWRzQ2FzdFxyXG4gICAgPyBgJHtiYXNlVmFsdWVUZXh0fSBhcyAke2dldFByb3BlcnR5VHlwZVRleHQobW9kdWxlU3BlY2lmaWVyLCBrZXlOYW1lKX1gXHJcbiAgICA6IGJhc2VWYWx1ZVRleHQ7XHJcblxyXG4gIHJldHVybiBjYW5Vc2VTaG9ydGhhbmQoeyBiYXNlVmFsdWUsIGtleU5hbWUsIG5lZWRzQ2FzdCwgcHJvcGVydHkgfSlcclxuICAgID8ga2V5TmFtZVxyXG4gICAgOiBgJHtrZXlUZXh0fTogJHt2YWx1ZVRleHR9YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEJ1aWxkcyB0aGUgaW1wb3J0ZWQgcHJvcGVydHkgdHlwZSBleHByZXNzaW9uIHVzZWQgZm9yIGEgbmVzdGVkIGNhc3QuXHJcbiAqIEBwYXJhbSBtb2R1bGVTcGVjaWZpZXIgU3RhdGljIG1vZHVsZSBzcGVjaWZpZXIgdXNlZCBieSB0aGUgbW9jay5cclxuICogQHBhcmFtIGtleU5hbWUgUHJvcGVydHkgbmFtZSBiZWluZyBjYXN0LlxyXG4gKiBAcmV0dXJucyBUeXBlIGV4cHJlc3Npb24gZm9yIHRoZSBpbXBvcnRlZCBwcm9wZXJ0eS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBwcm9wZXJ0eVR5cGUgPSBnZXRQcm9wZXJ0eVR5cGVUZXh0KFwiZml4dHVyZS1tb2R1bGVcIiwgXCJwYXJzZXJcIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UHJvcGVydHlUeXBlVGV4dChtb2R1bGVTcGVjaWZpZXI6IHN0cmluZywga2V5TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYHR5cGVvZiBpbXBvcnQoJHtKU09OLnN0cmluZ2lmeShtb2R1bGVTcGVjaWZpZXIpfSlbJHtKU09OLnN0cmluZ2lmeShrZXlOYW1lKX1dYDtcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZXMgd2hldGhlciBhIHByb3BlcnR5IHZhbHVlIHN0aWxsIG5lZWRzIGEgbmVzdGVkIGNhc3QuXHJcbiAqIEBwYXJhbSBjb250ZXh0IFByb3BlcnR5IHJlcGxhY2VtZW50IGNvbnRleHQuXHJcbiAqIEBwYXJhbSBiYXNlVmFsdWUgVW53cmFwcGVkIHByb3BlcnR5IHZhbHVlIGV4cHJlc3Npb24uXHJcbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgcHJvcGVydHkgdmFsdWUgaXMgbm90IGFzc2lnbmFibGUgdG8gdGhlIHRhcmdldCB0eXBlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG5lZWRzQ2FzdCA9IGlzUHJvcGVydHlDYXN0UmVxdWlyZWQoY29udGV4dCwgYmFzZVZhbHVlKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1Byb3BlcnR5Q2FzdFJlcXVpcmVkKFxyXG4gIGNvbnRleHQ6IEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbiAgYmFzZVZhbHVlOiBCdWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0W1wicHJvcGVydHlcIl1bXCJ2YWx1ZVwiXSxcclxuKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgdHNCYXNlVmFsdWVOb2RlID0gY29udGV4dC5zZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuZ2V0KGJhc2VWYWx1ZSk7XHJcbiAgY29uc3QgdHNQcm9wZXJ0eUtleU5vZGUgPSBjb250ZXh0LnNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQoXHJcbiAgICBjb250ZXh0LnByb3BlcnR5LmtleSxcclxuICApO1xyXG4gIGNvbnN0IHNvdXJjZVR5cGUgPSBjb250ZXh0LmNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24odHNCYXNlVmFsdWVOb2RlKTtcclxuICBjb25zdCBwcm9wZXJ0eVRhcmdldFR5cGUgPSBjb250ZXh0LmNoZWNrZXIuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihcclxuICAgIGNvbnRleHQudGFyZ2V0UHJvcGVydHlTeW1ib2wsXHJcbiAgICB0c1Byb3BlcnR5S2V5Tm9kZSxcclxuICApO1xyXG5cclxuICByZXR1cm4gIWNvbnRleHQuY2hlY2tlci5pc1R5cGVBc3NpZ25hYmxlVG8oc291cmNlVHlwZSwgcHJvcGVydHlUYXJnZXRUeXBlKTtcclxufVxyXG5cclxuZXhwb3J0IHsgYXBwbHlUZXh0UmVwbGFjZW1lbnRzLCBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnQgfTtcclxuIl19
@@ -0,0 +1,32 @@
1
+ import type { 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
+ * Removes temporary fixture projects created during rule tests.
11
+ * @returns Promise that resolves after cleanup completes.
12
+ * @example
13
+ * ```typescript
14
+ * await cleanupTemporaryDirectories();
15
+ * ```
16
+ */
17
+ declare const cleanupTemporaryDirectories: () => Promise<void>;
18
+ /**
19
+ * Runs the rule with autofix enabled inside a temporary typed fixture project.
20
+ * @param code Source code passed to ESLint.
21
+ * @param declarationText Ambient declarations used by the fixture project.
22
+ * @returns Fixed output and lint messages.
23
+ * @throws {Error} When ESLint does not return a lint result.
24
+ * @example
25
+ * ```typescript
26
+ * const result = await runFix("vi.doMock(import(\"fixture-module\"), () => ({}));\n");
27
+ * void result;
28
+ * ```
29
+ */
30
+ declare const runFix: (code: string, declarationText?: string) => Promise<FixRunResult>;
31
+ export { cleanupTemporaryDirectories, runFix };
32
+ //# sourceMappingURL=rule-test-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-test-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAUrC,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;AAgJD;;;;;;;GAOG;AACH,QAAA,MAAM,2BAA2B,QAAa,OAAO,CAAC,IAAI,CAQzD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,MAAM,GACV,MAAM,MAAM,EACZ,wBAAwC,KACvC,OAAO,CAAC,YAAY,CAuBtB,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC"}