@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,198 @@
1
+ import { collectBindings } from "./match-bindings.js";
2
+ import { collectDeclarations } from "./match-declarations.js";
3
+ import { getFactoryReturnObject, getModuleSpecifier, getNewline, hasRange, } from "./match-helpers.js";
4
+ import { resolveImportPlan } from "./match-imports.js";
5
+ import { areLocalsSafeToInline, buildAllowedRanges, collectMemberRewrites, } from "./match-rewrites.js";
6
+ /**
7
+ * Builds a full rule match from seed data.
8
+ * @param context Rule context.
9
+ * @param program Program node.
10
+ * @param seed Seed data.
11
+ * @returns Rule match when safe.
12
+ * @example
13
+ * ```typescript
14
+ * const match = buildMatch({ sourceCode: { text: "" } } as never, { body: [], sourceType: "module", type: "Program" } as never, { factoryObject: { properties: [], type: "ObjectExpression" }, mockStatement: { expression: { arguments: [], type: "CallExpression" }, type: "ExpressionStatement" }, moduleSpecifier: "./x", specifierExpression: { range: [0, 1], type: "Literal", value: "./x" } as never });
15
+ * void match;
16
+ * ```
17
+ */
18
+ function buildMatch(context, program, seed) {
19
+ const declarations = collectDeclarations(program, context.sourceCode);
20
+ const bindings = collectBindings(seed.factoryObject, declarations);
21
+ if (bindings.length === 0) {
22
+ return void 0;
23
+ }
24
+ const memberRewrites = collectMemberRewrites(program, toLocalMap(bindings));
25
+ const localNames = new Set(bindings.map((binding) => binding.localName));
26
+ const allowedRanges = buildAllowedRanges(bindings, declarations, memberRewrites);
27
+ if (!areLocalsSafeToInline(program, allowedRanges, localNames)) {
28
+ return void 0;
29
+ }
30
+ return {
31
+ bindings,
32
+ declarations,
33
+ importPlan: resolveImportPlan(program, seed.moduleSpecifier, getImportNames(bindings)),
34
+ memberRewrites,
35
+ mockSpecifierIsImportExpression: seed.specifierExpression.type === "ImportExpression",
36
+ mockSpecifierRange: seed.specifierExpression.range,
37
+ moduleSpecifier: seed.moduleSpecifier,
38
+ newline: getNewline(context.sourceCode.text),
39
+ node: seed.mockStatement,
40
+ sourceText: context.sourceCode.text,
41
+ };
42
+ }
43
+ /**
44
+ * Collects the first applicable rule match from the file.
45
+ * @param context Rule context.
46
+ * @returns Collected match when pattern is found.
47
+ * @example
48
+ * ```typescript
49
+ * const match = collectMatch({ sourceCode: { ast: { body: [], sourceType: "module", type: "Program" }, text: "" } } as never);
50
+ * void match;
51
+ * ```
52
+ */
53
+ function collectMatch(context) {
54
+ return collectMatches(context)[0];
55
+ }
56
+ /**
57
+ * Collects every applicable rule match from the file.
58
+ * @param context Rule context.
59
+ * @returns Collected matches when patterns are found.
60
+ * @example
61
+ * ```typescript
62
+ * const matches = collectMatches({ sourceCode: { ast: { body: [], sourceType: "module", type: "Program" }, text: "" } } as never);
63
+ * void matches;
64
+ * ```
65
+ */
66
+ function collectMatches(context) {
67
+ const program = context.sourceCode.ast;
68
+ return collectSeeds(program)
69
+ .map((seed) => buildMatch(context, program, seed))
70
+ .filter((match) => match !== void 0);
71
+ }
72
+ /**
73
+ * Collects seed data for every supported mock statement in the file.
74
+ * @param program Program node.
75
+ * @returns Match seeds.
76
+ * @example
77
+ * ```typescript
78
+ * const seeds = collectSeeds({ body: [], sourceType: "module", type: "Program" } as never);
79
+ * void seeds;
80
+ * ```
81
+ */
82
+ function collectSeeds(program) {
83
+ if (!Array.isArray(program.body)) {
84
+ return [];
85
+ }
86
+ return program.body.flatMap((statement) => {
87
+ const expression = getMockCallExpression(statement);
88
+ if (expression === void 0) {
89
+ return [];
90
+ }
91
+ const callArguments = getMockCallArguments(expression);
92
+ if (callArguments === void 0) {
93
+ return [];
94
+ }
95
+ const seed = createSeed(statement, callArguments[0], callArguments[1]);
96
+ return seed === void 0 ? [] : [seed];
97
+ });
98
+ }
99
+ /**
100
+ * Creates seed data from validated call arguments.
101
+ * @param mockStatement Matched `vi.mock` statement.
102
+ * @param specifierExpression First argument expression.
103
+ * @param factoryExpression Factory callback expression.
104
+ * @returns Match seed when arguments are supported.
105
+ * @example
106
+ * ```typescript
107
+ * const seed = createSeed({ expression: { arguments: [], type: "CallExpression" }, type: "ExpressionStatement" } as never, { type: "Literal", value: "./x" } as never, { body: { properties: [], type: "ObjectExpression" }, type: "ArrowFunctionExpression" } as never);
108
+ * void seed;
109
+ * ```
110
+ */
111
+ function createSeed(mockStatement, specifierExpression, factoryExpression) {
112
+ if (!hasRange(specifierExpression)) {
113
+ return void 0;
114
+ }
115
+ const moduleSpecifier = getModuleSpecifier(specifierExpression);
116
+ const factoryObject = getFactoryReturnObject(factoryExpression);
117
+ return moduleSpecifier === void 0 || factoryObject === void 0
118
+ ? void 0
119
+ : { factoryObject, mockStatement, moduleSpecifier, specifierExpression };
120
+ }
121
+ /**
122
+ * Returns sorted unique import names from bindings.
123
+ * @param bindings Bindings list.
124
+ * @returns Sorted import names.
125
+ * @example
126
+ * ```typescript
127
+ * const names = getImportNames([]);
128
+ * void names;
129
+ * ```
130
+ */
131
+ function getImportNames(bindings) {
132
+ return [
133
+ ...new Set(bindings.map((binding) => binding.exportedName)),
134
+ ].toSorted();
135
+ }
136
+ /**
137
+ * Returns mock call arguments when both arguments are supported expressions.
138
+ * @param expression Call expression node.
139
+ * @returns First and second call arguments.
140
+ * @example
141
+ * ```typescript
142
+ * const args = getMockCallArguments({ arguments: [], type: "CallExpression" } as never);
143
+ * void args;
144
+ * ```
145
+ */
146
+ function getMockCallArguments(expression) {
147
+ const [firstArgument, secondArgument] = expression.arguments;
148
+ if (firstArgument === void 0 || secondArgument === void 0) {
149
+ return void 0;
150
+ }
151
+ if (firstArgument.type === "SpreadElement" ||
152
+ secondArgument.type === "SpreadElement") {
153
+ return void 0;
154
+ }
155
+ return [firstArgument, secondArgument];
156
+ }
157
+ /**
158
+ * Returns the call expression for a supported mock statement.
159
+ * @param statement Candidate statement.
160
+ * @returns Supported mock call expression when present.
161
+ * @example
162
+ * ```typescript
163
+ * const expression = getMockCallExpression({ type: "EmptyStatement" } as never);
164
+ * void expression;
165
+ * ```
166
+ */
167
+ function getMockCallExpression(statement) {
168
+ if (statement.type !== "ExpressionStatement") {
169
+ return void 0;
170
+ }
171
+ const { expression } = statement;
172
+ if (expression.type !== "CallExpression" ||
173
+ expression.callee.type !== "MemberExpression") {
174
+ return void 0;
175
+ }
176
+ const { object, property } = expression.callee;
177
+ return object.type === "Identifier" &&
178
+ object.name === "vi" &&
179
+ property.type === "Identifier" &&
180
+ (property.name === "mock" || property.name === "doMock")
181
+ ? expression
182
+ : void 0;
183
+ }
184
+ /**
185
+ * Creates local-to-exported mapping from bindings.
186
+ * @param bindings Bindings list.
187
+ * @returns Mapping used for rewrite lookup.
188
+ * @example
189
+ * ```typescript
190
+ * const map = toLocalMap([]);
191
+ * void map;
192
+ * ```
193
+ */
194
+ function toLocalMap(bindings) {
195
+ return new Map(bindings.map((binding) => [binding.localName, binding.exportedName]));
196
+ }
197
+ export { collectMatch, collectMatches };
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvbWF0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixRQUFRLEdBQ1QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixxQkFBcUIsR0FDdEIsTUFBTSxrQkFBa0IsQ0FBQztBQW9CMUI7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFTLFVBQVUsQ0FDakIsT0FBeUIsRUFDekIsT0FBdUIsRUFDdkIsSUFBZTtJQUVmLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDbkUsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RSxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6RSxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FDdEMsUUFBUSxFQUNSLFlBQVksRUFDWixjQUFjLENBQ2YsQ0FBQztJQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0QsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTztRQUNMLFFBQVE7UUFDUixZQUFZO1FBQ1osVUFBVSxFQUFFLGlCQUFpQixDQUMzQixPQUFPLEVBQ1AsSUFBSSxDQUFDLGVBQWUsRUFDcEIsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUN6QjtRQUNELGNBQWM7UUFDZCwrQkFBK0IsRUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksS0FBSyxrQkFBa0I7UUFDdEQsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUs7UUFDbEQsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1FBQ3JDLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFxQztRQUNoRCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxZQUFZLENBQUMsT0FBeUI7SUFDN0MsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsY0FBYyxDQUFDLE9BQXlCO0lBQy9DLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBcUIsQ0FBQztJQUV6RCxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUM7U0FDekIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNqRCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQXNCLEVBQUUsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxZQUFZLENBQUMsT0FBdUI7SUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBELElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQsSUFBSSxhQUFhLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQ3JCLFNBQXVDLEVBQ3ZDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBRUYsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQVMsVUFBVSxDQUNqQixhQUF5QyxFQUN6QyxtQkFBc0MsRUFDdEMsaUJBQW9DO0lBRXBDLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDaEUsTUFBTSxhQUFhLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoRSxPQUFPLGVBQWUsS0FBSyxLQUFLLENBQUMsSUFBSSxhQUFhLEtBQUssS0FBSyxDQUFDO1FBQzNELENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDUixDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0FBQzdFLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLGNBQWMsQ0FBQyxRQUErQjtJQUNyRCxPQUFPO1FBQ0wsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDNUQsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLG9CQUFvQixDQUMzQixVQUFpQztJQUVqQyxNQUFNLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDN0QsSUFBSSxhQUFhLEtBQUssS0FBSyxDQUFDLElBQUksY0FBYyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUQsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFDRSxhQUFhLENBQUMsSUFBSSxLQUFLLGVBQWU7UUFDdEMsY0FBYyxDQUFDLElBQUksS0FBSyxlQUFlLEVBQ3ZDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLHFCQUFxQixDQUM1QixTQUF5QztJQUV6QyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztRQUM3QyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLElBQ0UsVUFBVSxDQUFDLElBQUksS0FBSyxnQkFBZ0I7UUFDcEMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQzdDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDL0MsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7UUFDakMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJO1FBQ3BCLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUM5QixDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO1FBQ3hELENBQUMsQ0FBQyxVQUFVO1FBQ1osQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsVUFBVSxDQUFDLFFBQStCO0lBQ2pELE9BQU8sSUFBSSxHQUFHLENBQ1osUUFBUSxDQUFDLEdBQUcsQ0FDVixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQVUsQ0FDaEUsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XG5cbmltcG9ydCB0eXBlIHsgUnVsZU1hdGNoIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgY29sbGVjdEJpbmRpbmdzIH0gZnJvbSBcIi4vbWF0Y2gtYmluZGluZ3NcIjtcbmltcG9ydCB7IGNvbGxlY3REZWNsYXJhdGlvbnMgfSBmcm9tIFwiLi9tYXRjaC1kZWNsYXJhdGlvbnNcIjtcbmltcG9ydCB7XG4gIGdldEZhY3RvcnlSZXR1cm5PYmplY3QsXG4gIGdldE1vZHVsZVNwZWNpZmllcixcbiAgZ2V0TmV3bGluZSxcbiAgaGFzUmFuZ2UsXG59IGZyb20gXCIuL21hdGNoLWhlbHBlcnNcIjtcbmltcG9ydCB7IHJlc29sdmVJbXBvcnRQbGFuIH0gZnJvbSBcIi4vbWF0Y2gtaW1wb3J0c1wiO1xuaW1wb3J0IHtcbiAgYXJlTG9jYWxzU2FmZVRvSW5saW5lLFxuICBidWlsZEFsbG93ZWRSYW5nZXMsXG4gIGNvbGxlY3RNZW1iZXJSZXdyaXRlcyxcbn0gZnJvbSBcIi4vbWF0Y2gtcmV3cml0ZXNcIjtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIE1hdGNoU2VlZCB7XG4gIC8qKiBSZXR1cm5lZCBvYmplY3QgZXhwcmVzc2lvbiBmcm9tIHRoZSBtb2NrIGZhY3RvcnkuICovXG4gIGZhY3RvcnlPYmplY3Q6IEVTVHJlZS5PYmplY3RFeHByZXNzaW9uO1xuXG4gIC8qKiBFeHByZXNzaW9uIHN0YXRlbWVudCBjb250YWluaW5nIGB2aS5tb2NrYCBvciBgdmkuZG9Nb2NrYC4gKi9cbiAgbW9ja1N0YXRlbWVudDogRVNUcmVlLkV4cHJlc3Npb25TdGF0ZW1lbnQ7XG5cbiAgLyoqIE1vZHVsZSBwYXRoIHN0cmluZyBleHRyYWN0ZWQgZnJvbSB0aGUgZmlyc3QgbW9jayBhcmd1bWVudC4gKi9cbiAgbW9kdWxlU3BlY2lmaWVyOiBzdHJpbmc7XG5cbiAgLyoqIE9yaWdpbmFsIGZpcnN0IGFyZ3VtZW50IG5vZGUsIGluY2x1ZGluZyBgcmFuZ2VgLCBmb3IgZml4ZXIgdXNlLiAqL1xuICBzcGVjaWZpZXJFeHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiAmIHtcbiAgICAvKiogU291cmNlIHJhbmdlIGZvciB0aGUgbW9jayBzcGVjaWZpZXIgZXhwcmVzc2lvbi4gKi9cbiAgICByYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBmdWxsIHJ1bGUgbWF0Y2ggZnJvbSBzZWVkIGRhdGEuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGNvbnRleHQuXG4gKiBAcGFyYW0gcHJvZ3JhbSBQcm9ncmFtIG5vZGUuXG4gKiBAcGFyYW0gc2VlZCBTZWVkIGRhdGEuXG4gKiBAcmV0dXJucyBSdWxlIG1hdGNoIHdoZW4gc2FmZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXRjaCA9IGJ1aWxkTWF0Y2goeyBzb3VyY2VDb2RlOiB7IHRleHQ6IFwiXCIgfSB9IGFzIG5ldmVyLCB7IGJvZHk6IFtdLCBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLCB0eXBlOiBcIlByb2dyYW1cIiB9IGFzIG5ldmVyLCB7IGZhY3RvcnlPYmplY3Q6IHsgcHJvcGVydGllczogW10sIHR5cGU6IFwiT2JqZWN0RXhwcmVzc2lvblwiIH0sIG1vY2tTdGF0ZW1lbnQ6IHsgZXhwcmVzc2lvbjogeyBhcmd1bWVudHM6IFtdLCB0eXBlOiBcIkNhbGxFeHByZXNzaW9uXCIgfSwgdHlwZTogXCJFeHByZXNzaW9uU3RhdGVtZW50XCIgfSwgbW9kdWxlU3BlY2lmaWVyOiBcIi4veFwiLCBzcGVjaWZpZXJFeHByZXNzaW9uOiB7IHJhbmdlOiBbMCwgMV0sIHR5cGU6IFwiTGl0ZXJhbFwiLCB2YWx1ZTogXCIuL3hcIiB9IGFzIG5ldmVyIH0pO1xuICogdm9pZCBtYXRjaDtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZE1hdGNoKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBwcm9ncmFtOiBFU1RyZWUuUHJvZ3JhbSxcbiAgc2VlZDogTWF0Y2hTZWVkLFxuKTogUnVsZU1hdGNoIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVjbGFyYXRpb25zID0gY29sbGVjdERlY2xhcmF0aW9ucyhwcm9ncmFtLCBjb250ZXh0LnNvdXJjZUNvZGUpO1xuICBjb25zdCBiaW5kaW5ncyA9IGNvbGxlY3RCaW5kaW5ncyhzZWVkLmZhY3RvcnlPYmplY3QsIGRlY2xhcmF0aW9ucyk7XG4gIGlmIChiaW5kaW5ncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgbWVtYmVyUmV3cml0ZXMgPSBjb2xsZWN0TWVtYmVyUmV3cml0ZXMocHJvZ3JhbSwgdG9Mb2NhbE1hcChiaW5kaW5ncykpO1xuICBjb25zdCBsb2NhbE5hbWVzID0gbmV3IFNldChiaW5kaW5ncy5tYXAoKGJpbmRpbmcpID0+IGJpbmRpbmcubG9jYWxOYW1lKSk7XG4gIGNvbnN0IGFsbG93ZWRSYW5nZXMgPSBidWlsZEFsbG93ZWRSYW5nZXMoXG4gICAgYmluZGluZ3MsXG4gICAgZGVjbGFyYXRpb25zLFxuICAgIG1lbWJlclJld3JpdGVzLFxuICApO1xuICBpZiAoIWFyZUxvY2Fsc1NhZmVUb0lubGluZShwcm9ncmFtLCBhbGxvd2VkUmFuZ2VzLCBsb2NhbE5hbWVzKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJpbmRpbmdzLFxuICAgIGRlY2xhcmF0aW9ucyxcbiAgICBpbXBvcnRQbGFuOiByZXNvbHZlSW1wb3J0UGxhbihcbiAgICAgIHByb2dyYW0sXG4gICAgICBzZWVkLm1vZHVsZVNwZWNpZmllcixcbiAgICAgIGdldEltcG9ydE5hbWVzKGJpbmRpbmdzKSxcbiAgICApLFxuICAgIG1lbWJlclJld3JpdGVzLFxuICAgIG1vY2tTcGVjaWZpZXJJc0ltcG9ydEV4cHJlc3Npb246XG4gICAgICBzZWVkLnNwZWNpZmllckV4cHJlc3Npb24udHlwZSA9PT0gXCJJbXBvcnRFeHByZXNzaW9uXCIsXG4gICAgbW9ja1NwZWNpZmllclJhbmdlOiBzZWVkLnNwZWNpZmllckV4cHJlc3Npb24ucmFuZ2UsXG4gICAgbW9kdWxlU3BlY2lmaWVyOiBzZWVkLm1vZHVsZVNwZWNpZmllcixcbiAgICBuZXdsaW5lOiBnZXROZXdsaW5lKGNvbnRleHQuc291cmNlQ29kZS50ZXh0KSxcbiAgICBub2RlOiBzZWVkLm1vY2tTdGF0ZW1lbnQgYXMgdW5rbm93biBhcyBSdWxlLk5vZGUsXG4gICAgc291cmNlVGV4dDogY29udGV4dC5zb3VyY2VDb2RlLnRleHQsXG4gIH07XG59XG5cbi8qKlxuICogQ29sbGVjdHMgdGhlIGZpcnN0IGFwcGxpY2FibGUgcnVsZSBtYXRjaCBmcm9tIHRoZSBmaWxlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBjb250ZXh0LlxuICogQHJldHVybnMgQ29sbGVjdGVkIG1hdGNoIHdoZW4gcGF0dGVybiBpcyBmb3VuZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXRjaCA9IGNvbGxlY3RNYXRjaCh7IHNvdXJjZUNvZGU6IHsgYXN0OiB7IGJvZHk6IFtdLCBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLCB0eXBlOiBcIlByb2dyYW1cIiB9LCB0ZXh0OiBcIlwiIH0gfSBhcyBuZXZlcik7XG4gKiB2b2lkIG1hdGNoO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RNYXRjaChjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZU1hdGNoIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGNvbGxlY3RNYXRjaGVzKGNvbnRleHQpWzBdO1xufVxuXG4vKipcbiAqIENvbGxlY3RzIGV2ZXJ5IGFwcGxpY2FibGUgcnVsZSBtYXRjaCBmcm9tIHRoZSBmaWxlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBjb250ZXh0LlxuICogQHJldHVybnMgQ29sbGVjdGVkIG1hdGNoZXMgd2hlbiBwYXR0ZXJucyBhcmUgZm91bmQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWF0Y2hlcyA9IGNvbGxlY3RNYXRjaGVzKHsgc291cmNlQ29kZTogeyBhc3Q6IHsgYm9keTogW10sIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsIHR5cGU6IFwiUHJvZ3JhbVwiIH0sIHRleHQ6IFwiXCIgfSB9IGFzIG5ldmVyKTtcbiAqIHZvaWQgbWF0Y2hlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBjb2xsZWN0TWF0Y2hlcyhjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZU1hdGNoW10ge1xuICBjb25zdCBwcm9ncmFtID0gY29udGV4dC5zb3VyY2VDb2RlLmFzdCBhcyBFU1RyZWUuUHJvZ3JhbTtcblxuICByZXR1cm4gY29sbGVjdFNlZWRzKHByb2dyYW0pXG4gICAgLm1hcCgoc2VlZCkgPT4gYnVpbGRNYXRjaChjb250ZXh0LCBwcm9ncmFtLCBzZWVkKSlcbiAgICAuZmlsdGVyKChtYXRjaCk6IG1hdGNoIGlzIFJ1bGVNYXRjaCA9PiBtYXRjaCAhPT0gdm9pZCAwKTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyBzZWVkIGRhdGEgZm9yIGV2ZXJ5IHN1cHBvcnRlZCBtb2NrIHN0YXRlbWVudCBpbiB0aGUgZmlsZS5cbiAqIEBwYXJhbSBwcm9ncmFtIFByb2dyYW0gbm9kZS5cbiAqIEByZXR1cm5zIE1hdGNoIHNlZWRzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNlZWRzID0gY29sbGVjdFNlZWRzKHsgYm9keTogW10sIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsIHR5cGU6IFwiUHJvZ3JhbVwiIH0gYXMgbmV2ZXIpO1xuICogdm9pZCBzZWVkcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBjb2xsZWN0U2VlZHMocHJvZ3JhbTogRVNUcmVlLlByb2dyYW0pOiBNYXRjaFNlZWRbXSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShwcm9ncmFtLmJvZHkpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIHByb2dyYW0uYm9keS5mbGF0TWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICBjb25zdCBleHByZXNzaW9uID0gZ2V0TW9ja0NhbGxFeHByZXNzaW9uKHN0YXRlbWVudCk7XG5cbiAgICBpZiAoZXhwcmVzc2lvbiA9PT0gdm9pZCAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgY2FsbEFyZ3VtZW50cyA9IGdldE1vY2tDYWxsQXJndW1lbnRzKGV4cHJlc3Npb24pO1xuXG4gICAgaWYgKGNhbGxBcmd1bWVudHMgPT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHNlZWQgPSBjcmVhdGVTZWVkKFxuICAgICAgc3RhdGVtZW50IGFzIEVTVHJlZS5FeHByZXNzaW9uU3RhdGVtZW50LFxuICAgICAgY2FsbEFyZ3VtZW50c1swXSxcbiAgICAgIGNhbGxBcmd1bWVudHNbMV0sXG4gICAgKTtcblxuICAgIHJldHVybiBzZWVkID09PSB2b2lkIDAgPyBbXSA6IFtzZWVkXTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBzZWVkIGRhdGEgZnJvbSB2YWxpZGF0ZWQgY2FsbCBhcmd1bWVudHMuXG4gKiBAcGFyYW0gbW9ja1N0YXRlbWVudCBNYXRjaGVkIGB2aS5tb2NrYCBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gc3BlY2lmaWVyRXhwcmVzc2lvbiBGaXJzdCBhcmd1bWVudCBleHByZXNzaW9uLlxuICogQHBhcmFtIGZhY3RvcnlFeHByZXNzaW9uIEZhY3RvcnkgY2FsbGJhY2sgZXhwcmVzc2lvbi5cbiAqIEByZXR1cm5zIE1hdGNoIHNlZWQgd2hlbiBhcmd1bWVudHMgYXJlIHN1cHBvcnRlZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzZWVkID0gY3JlYXRlU2VlZCh7IGV4cHJlc3Npb246IHsgYXJndW1lbnRzOiBbXSwgdHlwZTogXCJDYWxsRXhwcmVzc2lvblwiIH0sIHR5cGU6IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiIH0gYXMgbmV2ZXIsIHsgdHlwZTogXCJMaXRlcmFsXCIsIHZhbHVlOiBcIi4veFwiIH0gYXMgbmV2ZXIsIHsgYm9keTogeyBwcm9wZXJ0aWVzOiBbXSwgdHlwZTogXCJPYmplY3RFeHByZXNzaW9uXCIgfSwgdHlwZTogXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiIH0gYXMgbmV2ZXIpO1xuICogdm9pZCBzZWVkO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVNlZWQoXG4gIG1vY2tTdGF0ZW1lbnQ6IEVTVHJlZS5FeHByZXNzaW9uU3RhdGVtZW50LFxuICBzcGVjaWZpZXJFeHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbixcbiAgZmFjdG9yeUV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uLFxuKTogTWF0Y2hTZWVkIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFoYXNSYW5nZShzcGVjaWZpZXJFeHByZXNzaW9uKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBnZXRNb2R1bGVTcGVjaWZpZXIoc3BlY2lmaWVyRXhwcmVzc2lvbik7XG4gIGNvbnN0IGZhY3RvcnlPYmplY3QgPSBnZXRGYWN0b3J5UmV0dXJuT2JqZWN0KGZhY3RvcnlFeHByZXNzaW9uKTtcbiAgcmV0dXJuIG1vZHVsZVNwZWNpZmllciA9PT0gdm9pZCAwIHx8IGZhY3RvcnlPYmplY3QgPT09IHZvaWQgMFxuICAgID8gdm9pZCAwXG4gICAgOiB7IGZhY3RvcnlPYmplY3QsIG1vY2tTdGF0ZW1lbnQsIG1vZHVsZVNwZWNpZmllciwgc3BlY2lmaWVyRXhwcmVzc2lvbiB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgc29ydGVkIHVuaXF1ZSBpbXBvcnQgbmFtZXMgZnJvbSBiaW5kaW5ncy5cbiAqIEBwYXJhbSBiaW5kaW5ncyBCaW5kaW5ncyBsaXN0LlxuICogQHJldHVybnMgU29ydGVkIGltcG9ydCBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuYW1lcyA9IGdldEltcG9ydE5hbWVzKFtdKTtcbiAqIHZvaWQgbmFtZXM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0SW1wb3J0TmFtZXMoYmluZGluZ3M6IFJ1bGVNYXRjaFtcImJpbmRpbmdzXCJdKTogc3RyaW5nW10ge1xuICByZXR1cm4gW1xuICAgIC4uLm5ldyBTZXQoYmluZGluZ3MubWFwKChiaW5kaW5nKSA9PiBiaW5kaW5nLmV4cG9ydGVkTmFtZSkpLFxuICBdLnRvU29ydGVkKCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBtb2NrIGNhbGwgYXJndW1lbnRzIHdoZW4gYm90aCBhcmd1bWVudHMgYXJlIHN1cHBvcnRlZCBleHByZXNzaW9ucy5cbiAqIEBwYXJhbSBleHByZXNzaW9uIENhbGwgZXhwcmVzc2lvbiBub2RlLlxuICogQHJldHVybnMgRmlyc3QgYW5kIHNlY29uZCBjYWxsIGFyZ3VtZW50cy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhcmdzID0gZ2V0TW9ja0NhbGxBcmd1bWVudHMoeyBhcmd1bWVudHM6IFtdLCB0eXBlOiBcIkNhbGxFeHByZXNzaW9uXCIgfSBhcyBuZXZlcik7XG4gKiB2b2lkIGFyZ3M7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0TW9ja0NhbGxBcmd1bWVudHMoXG4gIGV4cHJlc3Npb246IEVTVHJlZS5DYWxsRXhwcmVzc2lvbixcbik6IFtFU1RyZWUuRXhwcmVzc2lvbiwgRVNUcmVlLkV4cHJlc3Npb25dIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgW2ZpcnN0QXJndW1lbnQsIHNlY29uZEFyZ3VtZW50XSA9IGV4cHJlc3Npb24uYXJndW1lbnRzO1xuICBpZiAoZmlyc3RBcmd1bWVudCA9PT0gdm9pZCAwIHx8IHNlY29uZEFyZ3VtZW50ID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIGlmIChcbiAgICBmaXJzdEFyZ3VtZW50LnR5cGUgPT09IFwiU3ByZWFkRWxlbWVudFwiIHx8XG4gICAgc2Vjb25kQXJndW1lbnQudHlwZSA9PT0gXCJTcHJlYWRFbGVtZW50XCJcbiAgKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBbZmlyc3RBcmd1bWVudCwgc2Vjb25kQXJndW1lbnRdO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGNhbGwgZXhwcmVzc2lvbiBmb3IgYSBzdXBwb3J0ZWQgbW9jayBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gc3RhdGVtZW50IENhbmRpZGF0ZSBzdGF0ZW1lbnQuXG4gKiBAcmV0dXJucyBTdXBwb3J0ZWQgbW9jayBjYWxsIGV4cHJlc3Npb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGV4cHJlc3Npb24gPSBnZXRNb2NrQ2FsbEV4cHJlc3Npb24oeyB0eXBlOiBcIkVtcHR5U3RhdGVtZW50XCIgfSBhcyBuZXZlcik7XG4gKiB2b2lkIGV4cHJlc3Npb247XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0TW9ja0NhbGxFeHByZXNzaW9uKFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXVtudW1iZXJdLFxuKTogRVNUcmVlLkNhbGxFeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHN0YXRlbWVudC50eXBlICE9PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCB7IGV4cHJlc3Npb24gfSA9IHN0YXRlbWVudDtcbiAgaWYgKFxuICAgIGV4cHJlc3Npb24udHlwZSAhPT0gXCJDYWxsRXhwcmVzc2lvblwiIHx8XG4gICAgZXhwcmVzc2lvbi5jYWxsZWUudHlwZSAhPT0gXCJNZW1iZXJFeHByZXNzaW9uXCJcbiAgKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHsgb2JqZWN0LCBwcm9wZXJ0eSB9ID0gZXhwcmVzc2lvbi5jYWxsZWU7XG4gIHJldHVybiBvYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICBvYmplY3QubmFtZSA9PT0gXCJ2aVwiICYmXG4gICAgcHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAocHJvcGVydHkubmFtZSA9PT0gXCJtb2NrXCIgfHwgcHJvcGVydHkubmFtZSA9PT0gXCJkb01vY2tcIilcbiAgICA/IGV4cHJlc3Npb25cbiAgICA6IHZvaWQgMDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGxvY2FsLXRvLWV4cG9ydGVkIG1hcHBpbmcgZnJvbSBiaW5kaW5ncy5cbiAqIEBwYXJhbSBiaW5kaW5ncyBCaW5kaW5ncyBsaXN0LlxuICogQHJldHVybnMgTWFwcGluZyB1c2VkIGZvciByZXdyaXRlIGxvb2t1cC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXAgPSB0b0xvY2FsTWFwKFtdKTtcbiAqIHZvaWQgbWFwO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHRvTG9jYWxNYXAoYmluZGluZ3M6IFJ1bGVNYXRjaFtcImJpbmRpbmdzXCJdKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gIHJldHVybiBuZXcgTWFwKFxuICAgIGJpbmRpbmdzLm1hcChcbiAgICAgIChiaW5kaW5nKSA9PiBbYmluZGluZy5sb2NhbE5hbWUsIGJpbmRpbmcuZXhwb3J0ZWROYW1lXSBhcyBjb25zdCxcbiAgICApLFxuICApO1xufVxuXG5leHBvcnQgeyBjb2xsZWN0TWF0Y2gsIGNvbGxlY3RNYXRjaGVzIH07XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { Linter } from "eslint";
2
+ /** Type definition for rule data. */
3
+ interface FixRunResult {
4
+ /** Lint messages produced during the run. */
5
+ messages: Linter.LintMessage[];
6
+ /** Output code after fixes. */
7
+ output: string;
8
+ }
9
+ /**
10
+ * Runs the prefer-vi-mocked-import rule with autofix enabled.
11
+ * @param code Input code.
12
+ * @returns Fixed output and messages.
13
+ * @example
14
+ * ```typescript
15
+ * const result = runFix("const value = 1;\n");
16
+ * ```
17
+ */
18
+ declare const runFix: (code: string) => FixRunResult;
19
+ export { runFix };
20
+ //# sourceMappingURL=rule-test-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-test-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/rule-test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,qCAAqC;AACrC,UAAU,YAAY;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAE/B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,QAAA,MAAM,MAAM,GAAI,MAAM,MAAM,KAAG,YA8B9B,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { Linter } from "eslint";
2
+ import { parser } from "typescript-eslint";
3
+ import { preferViMockedImportRule } from "./rule.js";
4
+ /**
5
+ * Runs the prefer-vi-mocked-import rule with autofix enabled.
6
+ * @param code Input code.
7
+ * @returns Fixed output and messages.
8
+ * @example
9
+ * ```typescript
10
+ * const result = runFix("const value = 1;\n");
11
+ * ```
12
+ */
13
+ const runFix = (code) => {
14
+ const linter = new Linter({ configType: "flat" });
15
+ const result = linter.verifyAndFix(code, [
16
+ {
17
+ files: ["**/*.ts"],
18
+ languageOptions: {
19
+ ecmaVersion: 2022,
20
+ parser,
21
+ parserOptions: { range: true },
22
+ sourceType: "module",
23
+ },
24
+ plugins: {
25
+ codeperfect: {
26
+ rules: {
27
+ "prefer-vi-mocked-import": preferViMockedImportRule,
28
+ },
29
+ },
30
+ },
31
+ rules: {
32
+ "codeperfect/prefer-vi-mocked-import": "error",
33
+ },
34
+ },
35
+ ], { filename: "example.spec.ts" });
36
+ return { messages: result.messages, output: result.output };
37
+ };
38
+ export { runFix };
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS10ZXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvcnVsZS10ZXN0LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBV2xEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQWdCLEVBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVsRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUNoQyxJQUFJLEVBQ0o7UUFDRTtZQUNFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNsQixlQUFlLEVBQUU7Z0JBQ2YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE1BQU07Z0JBQ04sYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDOUIsVUFBVSxFQUFFLFFBQVE7YUFDckI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsV0FBVyxFQUFFO29CQUNYLEtBQUssRUFBRTt3QkFDTCx5QkFBeUIsRUFBRSx3QkFBd0I7cUJBQ3BEO2lCQUNGO2FBQ0Y7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wscUNBQXFDLEVBQUUsT0FBTzthQUMvQztTQUNGO0tBQ0YsRUFDRCxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUNoQyxDQUFDO0lBRUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xyXG5pbXBvcnQgeyBwYXJzZXIgfSBmcm9tIFwidHlwZXNjcmlwdC1lc2xpbnRcIjtcclxuXHJcbmltcG9ydCB7IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcclxuXHJcbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cclxuaW50ZXJmYWNlIEZpeFJ1blJlc3VsdCB7XHJcbiAgLyoqIExpbnQgbWVzc2FnZXMgcHJvZHVjZWQgZHVyaW5nIHRoZSBydW4uICovXHJcbiAgbWVzc2FnZXM6IExpbnRlci5MaW50TWVzc2FnZVtdO1xyXG5cclxuICAvKiogT3V0cHV0IGNvZGUgYWZ0ZXIgZml4ZXMuICovXHJcbiAgb3V0cHV0OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSdW5zIHRoZSBwcmVmZXItdmktbW9ja2VkLWltcG9ydCBydWxlIHdpdGggYXV0b2ZpeCBlbmFibGVkLlxyXG4gKiBAcGFyYW0gY29kZSBJbnB1dCBjb2RlLlxyXG4gKiBAcmV0dXJucyBGaXhlZCBvdXRwdXQgYW5kIG1lc3NhZ2VzLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlc3VsdCA9IHJ1bkZpeChcImNvbnN0IHZhbHVlID0gMTtcXG5cIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgcnVuRml4ID0gKGNvZGU6IHN0cmluZyk6IEZpeFJ1blJlc3VsdCA9PiB7XHJcbiAgY29uc3QgbGludGVyID0gbmV3IExpbnRlcih7IGNvbmZpZ1R5cGU6IFwiZmxhdFwiIH0pO1xyXG5cclxuICBjb25zdCByZXN1bHQgPSBsaW50ZXIudmVyaWZ5QW5kRml4KFxyXG4gICAgY29kZSxcclxuICAgIFtcclxuICAgICAge1xyXG4gICAgICAgIGZpbGVzOiBbXCIqKi8qLnRzXCJdLFxyXG4gICAgICAgIGxhbmd1YWdlT3B0aW9uczoge1xyXG4gICAgICAgICAgZWNtYVZlcnNpb246IDIwMjIsXHJcbiAgICAgICAgICBwYXJzZXIsXHJcbiAgICAgICAgICBwYXJzZXJPcHRpb25zOiB7IHJhbmdlOiB0cnVlIH0sXHJcbiAgICAgICAgICBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgICAgY29kZXBlcmZlY3Q6IHtcclxuICAgICAgICAgICAgcnVsZXM6IHtcclxuICAgICAgICAgICAgICBcInByZWZlci12aS1tb2NrZWQtaW1wb3J0XCI6IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBydWxlczoge1xyXG4gICAgICAgICAgXCJjb2RlcGVyZmVjdC9wcmVmZXItdmktbW9ja2VkLWltcG9ydFwiOiBcImVycm9yXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB7IGZpbGVuYW1lOiBcImV4YW1wbGUuc3BlYy50c1wiIH0sXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHsgbWVzc2FnZXM6IHJlc3VsdC5tZXNzYWdlcywgb3V0cHV0OiByZXN1bHQub3V0cHV0IH07XHJcbn07XHJcblxyXG5leHBvcnQgeyBydW5GaXggfTtcclxuIl19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAMnC,6EAA6E;AAC7E,QAAA,MAAM,wBAAwB,EAAE,IAAI,CAAC,UAqCpC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { createRuleDocumentation } from "../../custom-rule-documentation.js";
2
+ import { buildFixes } from "./fix.js";
3
+ import { collectMatches } from "./match.js";
4
+ /** Enforce inline `vi.fn()` mocks inside `vi.mock`/`vi.doMock` factories. */
5
+ const preferViMockedImportRule = {
6
+ create(context) {
7
+ return {
8
+ Program: () => {
9
+ const matches = collectMatches(context);
10
+ if (matches.length === 0) {
11
+ return;
12
+ }
13
+ for (const [index, match] of matches.entries()) {
14
+ context.report({
15
+ fix: index === 0
16
+ ? (fixer) => buildFixes(matches, fixer)
17
+ : void 0,
18
+ messageId: "preferViMockedImport",
19
+ node: match.node,
20
+ });
21
+ }
22
+ },
23
+ };
24
+ },
25
+ meta: {
26
+ docs: createRuleDocumentation("prefer-vi-mocked-import", "Prefer inlining vi.fn mocks in vi.mock/vi.doMock factories and using vi.mocked(...)."),
27
+ fixable: "code",
28
+ messages: {
29
+ preferViMockedImport: "Inline vi.fn mocks in the vi.mock/vi.doMock factory and use vi.mocked(...) for calls.",
30
+ },
31
+ schema: [],
32
+ type: "suggestion",
33
+ },
34
+ };
35
+ export { preferViMockedImportRule };
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9wcmVmZXItdmktbW9ja2VkLWltcG9ydC9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDbkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV6Qyw2RUFBNkU7QUFDN0UsTUFBTSx3QkFBd0IsR0FBb0I7SUFDaEQsTUFBTSxDQUFDLE9BQXlCO1FBQzlCLE9BQU87WUFDTCxPQUFPLEVBQUUsR0FBUyxFQUFFO2dCQUNsQixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXhDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDekIsT0FBTztnQkFDVCxDQUFDO2dCQUVELEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDYixHQUFHLEVBQ0QsS0FBSyxLQUFLLENBQUM7NEJBQ1QsQ0FBQyxDQUFDLENBQUMsS0FBcUIsRUFBYyxFQUFFLENBQ3BDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDOzRCQUM5QixDQUFDLENBQUMsS0FBSyxDQUFDO3dCQUNaLFNBQVMsRUFBRSxzQkFBc0I7d0JBQ2pDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtxQkFDakIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1NBQzBCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSx1QkFBdUIsQ0FDM0IseUJBQXlCLEVBQ3pCLHNGQUFzRixDQUN2RjtRQUNELE9BQU8sRUFBRSxNQUFNO1FBQ2YsUUFBUSxFQUFFO1lBQ1Isb0JBQW9CLEVBQ2xCLHVGQUF1RjtTQUMxRjtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFlBQVk7S0FDbkI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGNyZWF0ZVJ1bGVEb2N1bWVudGF0aW9uIH0gZnJvbSBcIi4uLy4uL2N1c3RvbS1ydWxlLWRvY3VtZW50YXRpb25cIjtcbmltcG9ydCB7IGJ1aWxkRml4ZXMgfSBmcm9tIFwiLi9maXhcIjtcbmltcG9ydCB7IGNvbGxlY3RNYXRjaGVzIH0gZnJvbSBcIi4vbWF0Y2hcIjtcblxuLyoqIEVuZm9yY2UgaW5saW5lIGB2aS5mbigpYCBtb2NrcyBpbnNpZGUgYHZpLm1vY2tgL2B2aS5kb01vY2tgIGZhY3Rvcmllcy4gKi9cbmNvbnN0IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgUHJvZ3JhbTogKCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gY29sbGVjdE1hdGNoZXMoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIG1hdGNoXSBvZiBtYXRjaGVzLmVudHJpZXMoKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIGZpeDpcbiAgICAgICAgICAgICAgaW5kZXggPT09IDBcbiAgICAgICAgICAgICAgICA/IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeFtdID0+XG4gICAgICAgICAgICAgICAgICAgIGJ1aWxkRml4ZXMobWF0Y2hlcywgZml4ZXIpXG4gICAgICAgICAgICAgICAgOiB2b2lkIDAsXG4gICAgICAgICAgICBtZXNzYWdlSWQ6IFwicHJlZmVyVmlNb2NrZWRJbXBvcnRcIixcbiAgICAgICAgICAgIG5vZGU6IG1hdGNoLm5vZGUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgUnVsZS5SdWxlTGlzdGVuZXI7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbihcbiAgICAgIFwicHJlZmVyLXZpLW1vY2tlZC1pbXBvcnRcIixcbiAgICAgIFwiUHJlZmVyIGlubGluaW5nIHZpLmZuIG1vY2tzIGluIHZpLm1vY2svdmkuZG9Nb2NrIGZhY3RvcmllcyBhbmQgdXNpbmcgdmkubW9ja2VkKC4uLikuXCIsXG4gICAgKSxcbiAgICBmaXhhYmxlOiBcImNvZGVcIixcbiAgICBtZXNzYWdlczoge1xuICAgICAgcHJlZmVyVmlNb2NrZWRJbXBvcnQ6XG4gICAgICAgIFwiSW5saW5lIHZpLmZuIG1vY2tzIGluIHRoZSB2aS5tb2NrL3ZpLmRvTW9jayBmYWN0b3J5IGFuZCB1c2UgdmkubW9ja2VkKC4uLikgZm9yIGNhbGxzLlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSB9O1xuIl19
@@ -1,5 +1,5 @@
1
1
  import type { Rule } from "eslint";
2
- import type { Range } from "./match-helpers";
2
+ import type { Range } from "./match-helpers.js";
3
3
  /** Type definition for rule data. */
4
4
  interface Binding {
5
5
  /** Name of the mocked export (object property key). */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qCAAqC;AACrC,UAAU,OAAO;IACf,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IAErB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAElB,mDAAmD;IACnD,gBAAgB,EAAE,KAAK,CAAC;IAExB,oDAAoD;IACpD,aAAa,EAAE,KAAK,CAAC;IAErB,kEAAkE;IAClE,kBAAkB,EAAE,KAAK,CAAC;CAC3B;AAED,qCAAqC;AACrC,UAAU,WAAW;IACnB,4EAA4E;IAC5E,kBAAkB,EAAE,KAAK,CAAC;IAE1B,mEAAmE;IACnE,gBAAgB,EAAE,KAAK,CAAC;IAExB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,cAAc,EAAE,KAAK,CAAC;CACvB;AAED,qCAAqC;AACrC,UAAU,gBAAgB;IACxB,wDAAwD;IACxD,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAED,qCAAqC;AACrC,UAAU,UAAU;IAClB,oDAAoD;IACpD,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1B,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,qCAAqC;AACrC,UAAU,gBAAgB;IACxB,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,8CAA8C;IAC9C,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAE/B,gDAAgD;IAChD,KAAK,EAAE,KAAK,CAAC;CACd;AAED,qCAAqC;AACrC,UAAU,aAAa;IACrB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IAErB,oEAAoE;IACpE,gBAAgB,EAAE,KAAK,CAAC;CACzB;AAED,qCAAqC;AACrC,UAAU,SAAS;IACjB,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,EAAE,CAAC;IAEpB,kCAAkC;IAClC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEvC,oCAAoC;IACpC,UAAU,EAAE,UAAU,CAAC;IAEvB,qDAAqD;IACrD,cAAc,EAAE,aAAa,EAAE,CAAC;IAEhC,+DAA+D;IAC/D,+BAA+B,EAAE,OAAO,CAAC;IAEzC,4DAA4D;IAC5D,kBAAkB,EAAE,KAAK,CAAC;IAE1B,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC;IAEvB,iCAAiC;IACjC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;IAEhB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBSYW5nZSB9IGZyb20gXCIuL21hdGNoLWhlbHBlcnNcIjtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEJpbmRpbmcge1xuICAvKiogTmFtZSBvZiB0aGUgbW9ja2VkIGV4cG9ydCAob2JqZWN0IHByb3BlcnR5IGtleSkuICovXG4gIGV4cG9ydGVkTmFtZTogc3RyaW5nO1xuXG4gIC8qKiBMb2NhbCB2YXJpYWJsZSBuYW1lIHJlZmVyZW5jZWQgaW4gdGhlIG1vY2sgZmFjdG9yeSBvYmplY3QuICovXG4gIGxvY2FsTmFtZTogc3RyaW5nO1xuXG4gIC8qKiBSYW5nZSBvZiB0aGUgb2JqZWN0IHByb3BlcnR5IGtleSBpZGVudGlmaWVyLiAqL1xuICBwcm9wZXJ0eUtleVJhbmdlOiBSYW5nZTtcblxuICAvKiogRnVsbCByYW5nZSBvZiB0aGUgb2JqZWN0IHByb3BlcnR5IHRvIHJlcGxhY2UuICovXG4gIHByb3BlcnR5UmFuZ2U6IFJhbmdlO1xuXG4gIC8qKiBSYW5nZSBvZiB0aGUgaWRlbnRpZmllciB0aGF0IHJlZmVyZW5jZXMgdGhlIGxvY2FsIHZhcmlhYmxlLiAqL1xuICBwcm9wZXJ0eVZhbHVlUmFuZ2U6IFJhbmdlO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgRGVjbGFyYXRpb24ge1xuICAvKiogUmFuZ2Ugb2YgdGhlIGlkZW50aWZpZXIgYmVpbmcgZGVjbGFyZWQgKGUuZy4gYHhgIGluIGBjb25zdCB4ID0gLi4uYCkuICovXG4gIGRlY2xhcmF0aW9uSWRSYW5nZTogUmFuZ2U7XG5cbiAgLyoqIFJhbmdlIG9mIHRoZSBpbml0aWFsaXplciBleHByZXNzaW9uICh0aGUgYHZpLmZuKC4uLilgIGNhbGwpLiAqL1xuICBpbml0aWFsaXplclJhbmdlOiBSYW5nZTtcblxuICAvKiogTG9jYWwgdmFyaWFibGUgbmFtZS4gKi9cbiAgbG9jYWxOYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFJhbmdlIG9mIHRoZSBmdWxsIHN0YXRlbWVudCB0byByZW1vdmUuICovXG4gIHN0YXRlbWVudFJhbmdlOiBSYW5nZTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEltcG9ydEluc2VydFBsYW4ge1xuICAvKiogUmFuZ2Ugb2YgdGhlIGxhc3QgaW1wb3J0IHN0YXRlbWVudCwgd2hlbiBwcmVzZW50LiAqL1xuICBhZnRlclJhbmdlPzogUmFuZ2U7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBJbXBvcnRQbGFuIHtcbiAgLyoqIEluc2VydCBwbGFuIHdoZW4gbm8gY29tcGF0aWJsZSBpbXBvcnQgZXhpc3RzLiAqL1xuICBpbnNlcnQ/OiBJbXBvcnRJbnNlcnRQbGFuO1xuXG4gIC8qKiBNb2R1bGUgc3BlY2lmaWVyIHRvIGltcG9ydCBmcm9tLiAqL1xuICBtb2R1bGVTcGVjaWZpZXI6IHN0cmluZztcblxuICAvKiogTmFtZXMgdGhhdCBtdXN0IGJlIGltcG9ydGVkIGZyb20gdGhlIG1vZHVsZS4gKi9cbiAgbmFtZXM6IHN0cmluZ1tdO1xuXG4gIC8qKiBVcGRhdGUgcGxhbiB3aGVuIGFuIGltcG9ydCBjYW4gYmUgdXBkYXRlZCBpbi1wbGFjZS4gKi9cbiAgdXBkYXRlPzogSW1wb3J0VXBkYXRlUGxhbjtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEltcG9ydFVwZGF0ZVBsYW4ge1xuICAvKiogRGVmYXVsdCBpbXBvcnQgbG9jYWwgbmFtZSwgd2hlbiBwcmVzZW50LiAqL1xuICBkZWZhdWx0SW1wb3J0TmFtZT86IHN0cmluZztcblxuICAvKiogRXhpc3RpbmcgbmFtZWQgaW1wb3J0cyBmcm9tIHRoZSBtb2R1bGUuICovXG4gIGV4aXN0aW5nTmFtZWRJbXBvcnRzOiBzdHJpbmdbXTtcblxuICAvKiogUmFuZ2Ugb2YgdGhlIGltcG9ydCBzdGF0ZW1lbnQgdG8gcmVwbGFjZS4gKi9cbiAgcmFuZ2U6IFJhbmdlO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgTWVtYmVyUmV3cml0ZSB7XG4gIC8qKiBFeHBvcnRlZCBuYW1lIHRvIHVzZSBpbnNpZGUgYHZpLm1vY2tlZCguLi4pYC4gKi9cbiAgZXhwb3J0ZWROYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFJhbmdlIG9mIHRoZSBpZGVudGlmaWVyIHVzZWQgYXMgdGhlIG1lbWJlci1leHByZXNzaW9uIG9iamVjdC4gKi9cbiAgbG9jYWxPYmplY3RSYW5nZTogUmFuZ2U7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSdWxlTWF0Y2gge1xuICAvKiogQmluZGluZ3MgdGhhdCBjYW4gYmUgaW5saW5lZCBpbnRvIHRoZSBtb2NrIGZhY3RvcnkuICovXG4gIGJpbmRpbmdzOiBCaW5kaW5nW107XG5cbiAgLyoqIERlY2xhcmF0aW9ucyBieSBsb2NhbCBuYW1lLiAqL1xuICBkZWNsYXJhdGlvbnM6IE1hcDxzdHJpbmcsIERlY2xhcmF0aW9uPjtcblxuICAvKiogSW1wb3J0IGluc2VydGlvbi91cGRhdGUgcGxhbi4gKi9cbiAgaW1wb3J0UGxhbjogSW1wb3J0UGxhbjtcblxuICAvKiogTWVtYmVyLWV4cHJlc3Npb24gcmV3cml0ZXMgZm9yIGAubW9jaypgIGNhbGxzLiAqL1xuICBtZW1iZXJSZXdyaXRlczogTWVtYmVyUmV3cml0ZVtdO1xuXG4gIC8qKiBUcnVlIHdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFscmVhZHkgYGltcG9ydChcIi4uLlwiKWAuICovXG4gIG1vY2tTcGVjaWZpZXJJc0ltcG9ydEV4cHJlc3Npb246IGJvb2xlYW47XG5cbiAgLyoqIFJhbmdlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCB0byBgdmkubW9ja2AvYHZpLmRvTW9ja2AuICovXG4gIG1vY2tTcGVjaWZpZXJSYW5nZTogUmFuZ2U7XG5cbiAgLyoqIE1vZHVsZSBzcGVjaWZpZXIgYmVpbmcgbW9ja2VkLiAqL1xuICBtb2R1bGVTcGVjaWZpZXI6IHN0cmluZztcblxuICAvKiogUHJlZmVycmVkIG5ld2xpbmUgc2VxdWVuY2UgdXNlZCBieSB0aGUgZmlsZS4gKi9cbiAgbmV3bGluZTogXCJcXG5cIiB8IFwiXFxyXFxuXCI7XG5cbiAgLyoqIE5vZGUgdG8gdXNlIGZvciByZXBvcnRpbmcuICovXG4gIG5vZGU6IFJ1bGUuTm9kZTtcblxuICAvKiogRnVsbCBzb3VyY2UgdGV4dC4gKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSB7IEJpbmRpbmcsIERlY2xhcmF0aW9uLCBJbXBvcnRQbGFuLCBNZW1iZXJSZXdyaXRlLCBSdWxlTWF0Y2ggfTtcbiJdfQ==
@@ -0,0 +1,86 @@
1
+ import { TSESTree } from "@typescript-eslint/utils";
2
+ import type { ShorthandContext, SupportedProperty } from "./types.js";
3
+ /**
4
+ * Checks whether a property can remain in shorthand form after replacement.
5
+ * @param context Property shorthand decision context.
6
+ * @returns True when shorthand syntax remains valid.
7
+ * @example
8
+ * ```typescript
9
+ * const keepShorthand = canUseShorthand(context);
10
+ * ```
11
+ */
12
+ declare function canUseShorthand(context: ShorthandContext): boolean;
13
+ /**
14
+ * Resolves the expression returned by the mock factory.
15
+ * @param factoryArgument Mock factory function expression.
16
+ * @returns Returned expression when one is present.
17
+ * @example
18
+ * ```typescript
19
+ * const returnExpression = getFactoryReturnExpression(factoryArgument);
20
+ * ```
21
+ */
22
+ declare function getFactoryReturnExpression(factoryArgument: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression): TSESTree.Expression | undefined;
23
+ /**
24
+ * Extracts the module specifier from a mock call argument.
25
+ * @param moduleArgument Import expression or string literal argument.
26
+ * @returns Static module specifier when it can be determined.
27
+ * @example
28
+ * ```typescript
29
+ * const moduleSpecifier = getModuleSpecifier(moduleArgument);
30
+ * ```
31
+ */
32
+ declare function getModuleSpecifier(moduleArgument: TSESTree.Expression): string | undefined;
33
+ /**
34
+ * Converts an object property key node into a stable string name.
35
+ * @param propertyKey Property key node from the object literal.
36
+ * @returns Property name when the key is statically known.
37
+ * @example
38
+ * ```typescript
39
+ * const propertyName = getPropertyName(property.key);
40
+ * ```
41
+ */
42
+ declare function getPropertyName(propertyKey: TSESTree.PropertyName): string | undefined;
43
+ /**
44
+ * Narrows object literal elements to the subset the fixer can rewrite safely.
45
+ * @param property Object literal element to inspect.
46
+ * @returns True when the property is supported by the fixer.
47
+ * @example
48
+ * ```typescript
49
+ * const supported = isSupportedProperty(property);
50
+ * ```
51
+ */
52
+ declare function isSupportedProperty(property: TSESTree.ObjectLiteralElement): property is SupportedProperty;
53
+ /**
54
+ * Detects `vi.mock(...)` and `vi.doMock(...)` calls.
55
+ * @param node Call expression being inspected.
56
+ * @returns True when the call targets a Vitest mock factory.
57
+ * @example
58
+ * ```typescript
59
+ * const isMockCall = isVitestMockCall(callExpression);
60
+ * ```
61
+ */
62
+ declare function isVitestMockCall(node: TSESTree.CallExpression): boolean;
63
+ /**
64
+ * Determines whether the fixed object literal must be parenthesized.
65
+ * @param factoryArgument Mock factory function expression.
66
+ * @param returnExpression Expression returned by the factory.
67
+ * @param objectExpression Object literal being rewritten.
68
+ * @returns True when parentheses are required around the object literal.
69
+ * @example
70
+ * ```typescript
71
+ * const wrapObject = shouldWrapImplicitObject(factoryArgument, returnExpression, objectExpression);
72
+ * ```
73
+ */
74
+ declare function shouldWrapImplicitObject(factoryArgument: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression, returnExpression: TSESTree.Expression, objectExpression: TSESTree.ObjectExpression): boolean;
75
+ /**
76
+ * Removes surrounding cast wrappers from an expression.
77
+ * @param expression Expression to unwrap.
78
+ * @returns The innermost non-cast expression.
79
+ * @example
80
+ * ```typescript
81
+ * const baseExpression = unwrapExpression(expression);
82
+ * ```
83
+ */
84
+ declare function unwrapExpression(expression: TSESTree.Expression): TSESTree.Expression;
85
+ export { canUseShorthand, getFactoryReturnExpression, getModuleSpecifier, getPropertyName, isSupportedProperty, isVitestMockCall, shouldWrapImplicitObject, unwrapExpression, };
86
+ //# sourceMappingURL=ast-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/ast-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnE;;;;;;;;GAQG;AACH,iBAAS,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAU3D;AAED;;;;;;;;GAQG;AACH,iBAAS,0BAA0B,CACjC,eAAe,EACX,QAAQ,CAAC,uBAAuB,GAChC,QAAQ,CAAC,kBAAkB,GAC9B,QAAQ,CAAC,UAAU,GAAG,SAAS,CAYjC;AAED;;;;;;;;GAQG;AACH,iBAAS,kBAAkB,CACzB,cAAc,EAAE,QAAQ,CAAC,UAAU,GAClC,MAAM,GAAG,SAAS,CAkBpB;AAED;;;;;;;;GAQG;AACH,iBAAS,eAAe,CACtB,WAAW,EAAE,QAAQ,CAAC,YAAY,GACjC,MAAM,GAAG,SAAS,CAapB;AAED;;;;;;;;GAQG;AACH,iBAAS,mBAAmB,CAC1B,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,GACtC,QAAQ,IAAI,iBAAiB,CAQ/B;AAED;;;;;;;;GAQG;AACH,iBAAS,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,GAAG,OAAO,CAahE;AAED;;;;;;;;;;GAUG;AACH,iBAAS,wBAAwB,CAC/B,eAAe,EACX,QAAQ,CAAC,uBAAuB,GAChC,QAAQ,CAAC,kBAAkB,EAC/B,gBAAgB,EAAE,QAAQ,CAAC,UAAU,EACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,GAC1C,OAAO,CAMT;AAED;;;;;;;;GAQG;AACH,iBAAS,gBAAgB,CACvB,UAAU,EAAE,QAAQ,CAAC,UAAU,GAC9B,QAAQ,CAAC,UAAU,CAYrB;AAED,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GACjB,CAAC"}
@@ -0,0 +1,150 @@
1
+ import { TSESTree } from "@typescript-eslint/utils";
2
+ /**
3
+ * Checks whether a property can remain in shorthand form after replacement.
4
+ * @param context Property shorthand decision context.
5
+ * @returns True when shorthand syntax remains valid.
6
+ * @example
7
+ * ```typescript
8
+ * const keepShorthand = canUseShorthand(context);
9
+ * ```
10
+ */
11
+ function canUseShorthand(context) {
12
+ const { baseValue, keyName, needsCast, property } = context;
13
+ return (!needsCast &&
14
+ baseValue.type === TSESTree.AST_NODE_TYPES.Identifier &&
15
+ property.key.type === TSESTree.AST_NODE_TYPES.Identifier &&
16
+ property.key.name === keyName &&
17
+ baseValue.name === keyName);
18
+ }
19
+ /**
20
+ * Resolves the expression returned by the mock factory.
21
+ * @param factoryArgument Mock factory function expression.
22
+ * @returns Returned expression when one is present.
23
+ * @example
24
+ * ```typescript
25
+ * const returnExpression = getFactoryReturnExpression(factoryArgument);
26
+ * ```
27
+ */
28
+ function getFactoryReturnExpression(factoryArgument) {
29
+ if (factoryArgument.body.type !== TSESTree.AST_NODE_TYPES.BlockStatement) {
30
+ return factoryArgument.body;
31
+ }
32
+ const returnStatement = factoryArgument.body.body.find((statement) => statement.type === TSESTree.AST_NODE_TYPES.ReturnStatement &&
33
+ statement.argument !== null);
34
+ return returnStatement?.argument ?? void 0;
35
+ }
36
+ /**
37
+ * Extracts the module specifier from a mock call argument.
38
+ * @param moduleArgument Import expression or string literal argument.
39
+ * @returns Static module specifier when it can be determined.
40
+ * @example
41
+ * ```typescript
42
+ * const moduleSpecifier = getModuleSpecifier(moduleArgument);
43
+ * ```
44
+ */
45
+ function getModuleSpecifier(moduleArgument) {
46
+ if (moduleArgument.type === TSESTree.AST_NODE_TYPES.ImportExpression) {
47
+ const { source } = moduleArgument;
48
+ if (source.type === TSESTree.AST_NODE_TYPES.Literal &&
49
+ typeof source.value === "string") {
50
+ return source.value;
51
+ }
52
+ return void 0;
53
+ }
54
+ return moduleArgument.type === TSESTree.AST_NODE_TYPES.Literal &&
55
+ typeof moduleArgument.value === "string"
56
+ ? moduleArgument.value
57
+ : void 0;
58
+ }
59
+ /**
60
+ * Converts an object property key node into a stable string name.
61
+ * @param propertyKey Property key node from the object literal.
62
+ * @returns Property name when the key is statically known.
63
+ * @example
64
+ * ```typescript
65
+ * const propertyName = getPropertyName(property.key);
66
+ * ```
67
+ */
68
+ function getPropertyName(propertyKey) {
69
+ if (propertyKey.type === TSESTree.AST_NODE_TYPES.Identifier) {
70
+ return propertyKey.name;
71
+ }
72
+ if (propertyKey.type === TSESTree.AST_NODE_TYPES.Literal) {
73
+ return typeof propertyKey.value === "string" ||
74
+ typeof propertyKey.value === "number"
75
+ ? String(propertyKey.value)
76
+ : void 0;
77
+ }
78
+ return void 0;
79
+ }
80
+ /**
81
+ * Narrows object literal elements to the subset the fixer can rewrite safely.
82
+ * @param property Object literal element to inspect.
83
+ * @returns True when the property is supported by the fixer.
84
+ * @example
85
+ * ```typescript
86
+ * const supported = isSupportedProperty(property);
87
+ * ```
88
+ */
89
+ function isSupportedProperty(property) {
90
+ return (property.type === TSESTree.AST_NODE_TYPES.Property &&
91
+ !property.computed &&
92
+ property.kind === "init" &&
93
+ !property.method &&
94
+ property.value.type !== TSESTree.AST_NODE_TYPES.AssignmentPattern);
95
+ }
96
+ /**
97
+ * Detects `vi.mock(...)` and `vi.doMock(...)` calls.
98
+ * @param node Call expression being inspected.
99
+ * @returns True when the call targets a Vitest mock factory.
100
+ * @example
101
+ * ```typescript
102
+ * const isMockCall = isVitestMockCall(callExpression);
103
+ * ```
104
+ */
105
+ function isVitestMockCall(node) {
106
+ if (node.callee.type !== TSESTree.AST_NODE_TYPES.MemberExpression) {
107
+ return false;
108
+ }
109
+ const { object, property } = node.callee;
110
+ return (object.type === TSESTree.AST_NODE_TYPES.Identifier &&
111
+ object.name === "vi" &&
112
+ property.type === TSESTree.AST_NODE_TYPES.Identifier &&
113
+ (property.name === "mock" || property.name === "doMock"));
114
+ }
115
+ /**
116
+ * Determines whether the fixed object literal must be parenthesized.
117
+ * @param factoryArgument Mock factory function expression.
118
+ * @param returnExpression Expression returned by the factory.
119
+ * @param objectExpression Object literal being rewritten.
120
+ * @returns True when parentheses are required around the object literal.
121
+ * @example
122
+ * ```typescript
123
+ * const wrapObject = shouldWrapImplicitObject(factoryArgument, returnExpression, objectExpression);
124
+ * ```
125
+ */
126
+ function shouldWrapImplicitObject(factoryArgument, returnExpression, objectExpression) {
127
+ return (factoryArgument.body.type !== TSESTree.AST_NODE_TYPES.BlockStatement &&
128
+ (returnExpression.range[0] !== objectExpression.range[0] ||
129
+ returnExpression.range[1] !== objectExpression.range[1]));
130
+ }
131
+ /**
132
+ * Removes surrounding cast wrappers from an expression.
133
+ * @param expression Expression to unwrap.
134
+ * @returns The innermost non-cast expression.
135
+ * @example
136
+ * ```typescript
137
+ * const baseExpression = unwrapExpression(expression);
138
+ * ```
139
+ */
140
+ function unwrapExpression(expression) {
141
+ let currentExpression = expression;
142
+ while (currentExpression.type === TSESTree.AST_NODE_TYPES.TSAsExpression ||
143
+ currentExpression.type === TSESTree.AST_NODE_TYPES.TSSatisfiesExpression ||
144
+ currentExpression.type === TSESTree.AST_NODE_TYPES.TSTypeAssertion) {
145
+ currentExpression = currentExpression.expression;
146
+ }
147
+ return currentExpression;
148
+ }
149
+ export { canUseShorthand, getFactoryReturnExpression, getModuleSpecifier, getPropertyName, isSupportedProperty, isVitestMockCall, shouldWrapImplicitObject, unwrapExpression, };
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9hc3QtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxPQUF5QjtJQUNoRCxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTVELE9BQU8sQ0FDTCxDQUFDLFNBQVM7UUFDVixTQUFTLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVTtRQUNyRCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVU7UUFDeEQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTztRQUM3QixTQUFTLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FDM0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsMEJBQTBCLENBQ2pDLGVBRStCO0lBRS9CLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6RSxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDcEQsQ0FBQyxTQUFTLEVBQXlDLEVBQUUsQ0FDbkQsU0FBUyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLGVBQWU7UUFDMUQsU0FBUyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQzlCLENBQUM7SUFFRixP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QUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWM7UUFDcEUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0RCxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzNELENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGdCQUFnQixDQUN2QixVQUErQjtJQUUvQixJQUFJLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztJQUVuQyxPQUNFLGlCQUFpQixDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWM7UUFDakUsaUJBQWlCLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCO1FBQ3hFLGlCQUFpQixDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFDbEUsQ0FBQztRQUNELGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTyxpQkFBaUIsQ0FBQztBQUMzQixDQUFDO0FBRUQsT0FBTyxFQUNMLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixnQkFBZ0IsR0FDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRTRVNUcmVlIH0gZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC91dGlsc1wiO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBTaG9ydGhhbmRDb250ZXh0LCBTdXBwb3J0ZWRQcm9wZXJ0eSB9IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSBwcm9wZXJ0eSBjYW4gcmVtYWluIGluIHNob3J0aGFuZCBmb3JtIGFmdGVyIHJlcGxhY2VtZW50LlxyXG4gKiBAcGFyYW0gY29udGV4dCBQcm9wZXJ0eSBzaG9ydGhhbmQgZGVjaXNpb24gY29udGV4dC5cclxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHNob3J0aGFuZCBzeW50YXggcmVtYWlucyB2YWxpZC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBrZWVwU2hvcnRoYW5kID0gY2FuVXNlU2hvcnRoYW5kKGNvbnRleHQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNhblVzZVNob3J0aGFuZChjb250ZXh0OiBTaG9ydGhhbmRDb250ZXh0KTogYm9vbGVhbiB7XHJcbiAgY29uc3QgeyBiYXNlVmFsdWUsIGtleU5hbWUsIG5lZWRzQ2FzdCwgcHJvcGVydHkgfSA9IGNvbnRleHQ7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICAhbmVlZHNDYXN0ICYmXHJcbiAgICBiYXNlVmFsdWUudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciAmJlxyXG4gICAgcHJvcGVydHkua2V5LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIgJiZcclxuICAgIHByb3BlcnR5LmtleS5uYW1lID09PSBrZXlOYW1lICYmXHJcbiAgICBiYXNlVmFsdWUubmFtZSA9PT0ga2V5TmFtZVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlcyB0aGUgZXhwcmVzc2lvbiByZXR1cm5lZCBieSB0aGUgbW9jayBmYWN0b3J5LlxyXG4gKiBAcGFyYW0gZmFjdG9yeUFyZ3VtZW50IE1vY2sgZmFjdG9yeSBmdW5jdGlvbiBleHByZXNzaW9uLlxyXG4gKiBAcmV0dXJucyBSZXR1cm5lZCBleHByZXNzaW9uIHdoZW4gb25lIGlzIHByZXNlbnQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgcmV0dXJuRXhwcmVzc2lvbiA9IGdldEZhY3RvcnlSZXR1cm5FeHByZXNzaW9uKGZhY3RvcnlBcmd1bWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0RmFjdG9yeVJldHVybkV4cHJlc3Npb24oXHJcbiAgZmFjdG9yeUFyZ3VtZW50OlxyXG4gICAgfCBUU0VTVHJlZS5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblxyXG4gICAgfCBUU0VTVHJlZS5GdW5jdGlvbkV4cHJlc3Npb24sXHJcbik6IFRTRVNUcmVlLkV4cHJlc3Npb24gfCB1bmRlZmluZWQge1xyXG4gIGlmIChmYWN0b3J5QXJndW1lbnQuYm9keS50eXBlICE9PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5CbG9ja1N0YXRlbWVudCkge1xyXG4gICAgcmV0dXJuIGZhY3RvcnlBcmd1bWVudC5ib2R5O1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcmV0dXJuU3RhdGVtZW50ID0gZmFjdG9yeUFyZ3VtZW50LmJvZHkuYm9keS5maW5kKFxyXG4gICAgKHN0YXRlbWVudCk6IHN0YXRlbWVudCBpcyBUU0VTVHJlZS5SZXR1cm5TdGF0ZW1lbnQgPT5cclxuICAgICAgc3RhdGVtZW50LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLlJldHVyblN0YXRlbWVudCAmJlxyXG4gICAgICBzdGF0ZW1lbnQuYXJndW1lbnQgIT09IG51bGwsXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHJldHVyblN0YXRlbWVudD8uYXJndW1lbnQgPz8gdm9pZCAwO1xyXG59XHJcblxyXG4vKipcclxuICogRXh0cmFjdHMgdGhlIG1vZHVsZSBzcGVjaWZpZXIgZnJvbSBhIG1vY2sgY2FsbCBhcmd1bWVudC5cclxuICogQHBhcmFtIG1vZHVsZUFyZ3VtZW50IEltcG9ydCBleHByZXNzaW9uIG9yIHN0cmluZyBsaXRlcmFsIGFyZ3VtZW50LlxyXG4gKiBAcmV0dXJucyBTdGF0aWMgbW9kdWxlIHNwZWNpZmllciB3aGVuIGl0IGNhbiBiZSBkZXRlcm1pbmVkLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1vZHVsZVNwZWNpZmllciA9IGdldE1vZHVsZVNwZWNpZmllcihtb2R1bGVBcmd1bWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0TW9kdWxlU3BlY2lmaWVyKFxyXG4gIG1vZHVsZUFyZ3VtZW50OiBUU0VTVHJlZS5FeHByZXNzaW9uLFxyXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIGlmIChtb2R1bGVBcmd1bWVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5JbXBvcnRFeHByZXNzaW9uKSB7XHJcbiAgICBjb25zdCB7IHNvdXJjZSB9ID0gbW9kdWxlQXJndW1lbnQ7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBzb3VyY2UudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuTGl0ZXJhbCAmJlxyXG4gICAgICB0eXBlb2Ygc291cmNlLnZhbHVlID09PSBcInN0cmluZ1wiXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHNvdXJjZS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG1vZHVsZUFyZ3VtZW50LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLkxpdGVyYWwgJiZcclxuICAgIHR5cGVvZiBtb2R1bGVBcmd1bWVudC52YWx1ZSA9PT0gXCJzdHJpbmdcIlxyXG4gICAgPyBtb2R1bGVBcmd1bWVudC52YWx1ZVxyXG4gICAgOiB2b2lkIDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBhbiBvYmplY3QgcHJvcGVydHkga2V5IG5vZGUgaW50byBhIHN0YWJsZSBzdHJpbmcgbmFtZS5cclxuICogQHBhcmFtIHByb3BlcnR5S2V5IFByb3BlcnR5IGtleSBub2RlIGZyb20gdGhlIG9iamVjdCBsaXRlcmFsLlxyXG4gKiBAcmV0dXJucyBQcm9wZXJ0eSBuYW1lIHdoZW4gdGhlIGtleSBpcyBzdGF0aWNhbGx5IGtub3duLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHByb3BlcnR5TmFtZSA9IGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eS5rZXkpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldFByb3BlcnR5TmFtZShcclxuICBwcm9wZXJ0eUtleTogVFNFU1RyZWUuUHJvcGVydHlOYW1lLFxyXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIGlmIChwcm9wZXJ0eUtleS50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5JZGVudGlmaWVyKSB7XHJcbiAgICByZXR1cm4gcHJvcGVydHlLZXkubmFtZTtcclxuICB9XHJcblxyXG4gIGlmIChwcm9wZXJ0eUtleS50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5MaXRlcmFsKSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHByb3BlcnR5S2V5LnZhbHVlID09PSBcInN0cmluZ1wiIHx8XHJcbiAgICAgIHR5cGVvZiBwcm9wZXJ0eUtleS52YWx1ZSA9PT0gXCJudW1iZXJcIlxyXG4gICAgICA/IFN0cmluZyhwcm9wZXJ0eUtleS52YWx1ZSlcclxuICAgICAgOiB2b2lkIDA7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdm9pZCAwO1xyXG59XHJcblxyXG4vKipcclxuICogTmFycm93cyBvYmplY3QgbGl0ZXJhbCBlbGVtZW50cyB0byB0aGUgc3Vic2V0IHRoZSBmaXhlciBjYW4gcmV3cml0ZSBzYWZlbHkuXHJcbiAqIEBwYXJhbSBwcm9wZXJ0eSBPYmplY3QgbGl0ZXJhbCBlbGVtZW50IHRvIGluc3BlY3QuXHJcbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgcHJvcGVydHkgaXMgc3VwcG9ydGVkIGJ5IHRoZSBmaXhlci5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBzdXBwb3J0ZWQgPSBpc1N1cHBvcnRlZFByb3BlcnR5KHByb3BlcnR5KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1N1cHBvcnRlZFByb3BlcnR5KFxyXG4gIHByb3BlcnR5OiBUU0VTVHJlZS5PYmplY3RMaXRlcmFsRWxlbWVudCxcclxuKTogcHJvcGVydHkgaXMgU3VwcG9ydGVkUHJvcGVydHkge1xyXG4gIHJldHVybiAoXHJcbiAgICBwcm9wZXJ0eS50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5Qcm9wZXJ0eSAmJlxyXG4gICAgIXByb3BlcnR5LmNvbXB1dGVkICYmXHJcbiAgICBwcm9wZXJ0eS5raW5kID09PSBcImluaXRcIiAmJlxyXG4gICAgIXByb3BlcnR5Lm1ldGhvZCAmJlxyXG4gICAgcHJvcGVydHkudmFsdWUudHlwZSAhPT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuQXNzaWdubWVudFBhdHRlcm5cclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZWN0cyBgdmkubW9jayguLi4pYCBhbmQgYHZpLmRvTW9jayguLi4pYCBjYWxscy5cclxuICogQHBhcmFtIG5vZGUgQ2FsbCBleHByZXNzaW9uIGJlaW5nIGluc3BlY3RlZC5cclxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBjYWxsIHRhcmdldHMgYSBWaXRlc3QgbW9jayBmYWN0b3J5LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGlzTW9ja0NhbGwgPSBpc1ZpdGVzdE1vY2tDYWxsKGNhbGxFeHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1ZpdGVzdE1vY2tDYWxsKG5vZGU6IFRTRVNUcmVlLkNhbGxFeHByZXNzaW9uKTogYm9vbGVhbiB7XHJcbiAgaWYgKG5vZGUuY2FsbGVlLnR5cGUgIT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLk1lbWJlckV4cHJlc3Npb24pIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHsgb2JqZWN0LCBwcm9wZXJ0eSB9ID0gbm9kZS5jYWxsZWU7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICBvYmplY3QudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciAmJlxyXG4gICAgb2JqZWN0Lm5hbWUgPT09IFwidmlcIiAmJlxyXG4gICAgcHJvcGVydHkudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciAmJlxyXG4gICAgKHByb3BlcnR5Lm5hbWUgPT09IFwibW9ja1wiIHx8IHByb3BlcnR5Lm5hbWUgPT09IFwiZG9Nb2NrXCIpXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZml4ZWQgb2JqZWN0IGxpdGVyYWwgbXVzdCBiZSBwYXJlbnRoZXNpemVkLlxyXG4gKiBAcGFyYW0gZmFjdG9yeUFyZ3VtZW50IE1vY2sgZmFjdG9yeSBmdW5jdGlvbiBleHByZXNzaW9uLlxyXG4gKiBAcGFyYW0gcmV0dXJuRXhwcmVzc2lvbiBFeHByZXNzaW9uIHJldHVybmVkIGJ5IHRoZSBmYWN0b3J5LlxyXG4gKiBAcGFyYW0gb2JqZWN0RXhwcmVzc2lvbiBPYmplY3QgbGl0ZXJhbCBiZWluZyByZXdyaXR0ZW4uXHJcbiAqIEByZXR1cm5zIFRydWUgd2hlbiBwYXJlbnRoZXNlcyBhcmUgcmVxdWlyZWQgYXJvdW5kIHRoZSBvYmplY3QgbGl0ZXJhbC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB3cmFwT2JqZWN0ID0gc2hvdWxkV3JhcEltcGxpY2l0T2JqZWN0KGZhY3RvcnlBcmd1bWVudCwgcmV0dXJuRXhwcmVzc2lvbiwgb2JqZWN0RXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gc2hvdWxkV3JhcEltcGxpY2l0T2JqZWN0KFxyXG4gIGZhY3RvcnlBcmd1bWVudDpcclxuICAgIHwgVFNFU1RyZWUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cclxuICAgIHwgVFNFU1RyZWUuRnVuY3Rpb25FeHByZXNzaW9uLFxyXG4gIHJldHVybkV4cHJlc3Npb246IFRTRVNUcmVlLkV4cHJlc3Npb24sXHJcbiAgb2JqZWN0RXhwcmVzc2lvbjogVFNFU1RyZWUuT2JqZWN0RXhwcmVzc2lvbixcclxuKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIChcclxuICAgIGZhY3RvcnlBcmd1bWVudC5ib2R5LnR5cGUgIT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLkJsb2NrU3RhdGVtZW50ICYmXHJcbiAgICAocmV0dXJuRXhwcmVzc2lvbi5yYW5nZVswXSAhPT0gb2JqZWN0RXhwcmVzc2lvbi5yYW5nZVswXSB8fFxyXG4gICAgICByZXR1cm5FeHByZXNzaW9uLnJhbmdlWzFdICE9PSBvYmplY3RFeHByZXNzaW9uLnJhbmdlWzFdKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmVzIHN1cnJvdW5kaW5nIGNhc3Qgd3JhcHBlcnMgZnJvbSBhbiBleHByZXNzaW9uLlxyXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBFeHByZXNzaW9uIHRvIHVud3JhcC5cclxuICogQHJldHVybnMgVGhlIGlubmVybW9zdCBub24tY2FzdCBleHByZXNzaW9uLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGJhc2VFeHByZXNzaW9uID0gdW53cmFwRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiB1bndyYXBFeHByZXNzaW9uKFxyXG4gIGV4cHJlc3Npb246IFRTRVNUcmVlLkV4cHJlc3Npb24sXHJcbik6IFRTRVNUcmVlLkV4cHJlc3Npb24ge1xyXG4gIGxldCBjdXJyZW50RXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XHJcblxyXG4gIHdoaWxlIChcclxuICAgIGN1cnJlbnRFeHByZXNzaW9uLnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLlRTQXNFeHByZXNzaW9uIHx8XHJcbiAgICBjdXJyZW50RXhwcmVzc2lvbi50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU1NhdGlzZmllc0V4cHJlc3Npb24gfHxcclxuICAgIGN1cnJlbnRFeHByZXNzaW9uLnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLlRTVHlwZUFzc2VydGlvblxyXG4gICkge1xyXG4gICAgY3VycmVudEV4cHJlc3Npb24gPSBjdXJyZW50RXhwcmVzc2lvbi5leHByZXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGN1cnJlbnRFeHByZXNzaW9uO1xyXG59XHJcblxyXG5leHBvcnQge1xyXG4gIGNhblVzZVNob3J0aGFuZCxcclxuICBnZXRGYWN0b3J5UmV0dXJuRXhwcmVzc2lvbixcclxuICBnZXRNb2R1bGVTcGVjaWZpZXIsXHJcbiAgZ2V0UHJvcGVydHlOYW1lLFxyXG4gIGlzU3VwcG9ydGVkUHJvcGVydHksXHJcbiAgaXNWaXRlc3RNb2NrQ2FsbCxcclxuICBzaG91bGRXcmFwSW1wbGljaXRPYmplY3QsXHJcbiAgdW53cmFwRXhwcmVzc2lvbixcclxufTtcclxuIl19
@@ -0,0 +1,2 @@
1
+ export { preferVitestIncrementalCastsRule } from "./rule.js";
2
+ //# sourceMappingURL=index.d.ts.map