@codeperfect/eslint-plugin 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/README.md +3 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/application/custom-rules.d.ts +8 -8
  4. package/dist/application/custom-rules.js +14 -14
  5. package/dist/application/index.d.ts +1 -1
  6. package/dist/application/index.d.ts.map +1 -1
  7. package/dist/application/index.js +2 -2
  8. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  9. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +3 -4
  10. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -1
  11. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +5 -3
  12. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -1
  13. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +17 -7
  14. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
  15. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +29 -2
  16. package/dist/domain/architecture/consistent-barrel-files/index.d.ts +2 -0
  17. package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -1
  18. package/dist/domain/architecture/consistent-barrel-files/index.js +3 -1
  19. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts +5 -0
  20. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -0
  21. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +247 -0
  22. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts +5 -0
  23. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -0
  24. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +136 -0
  25. package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
  26. package/dist/domain/architecture/consistent-barrel-files/rule.js +1 -2
  27. package/dist/domain/architecture/index.d.ts +2 -1
  28. package/dist/domain/architecture/index.d.ts.map +1 -1
  29. package/dist/domain/architecture/index.js +3 -2
  30. package/dist/domain/architecture/no-unused-exports/index.d.ts +3 -0
  31. package/dist/domain/architecture/no-unused-exports/index.d.ts.map +1 -0
  32. package/dist/domain/architecture/no-unused-exports/index.js +2 -0
  33. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts +50 -0
  34. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -0
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +141 -0
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +49 -0
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -0
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +612 -0
  39. package/dist/domain/architecture/no-unused-exports/rule.d.ts +5 -0
  40. package/dist/domain/architecture/no-unused-exports/rule.d.ts.map +1 -0
  41. package/dist/domain/architecture/no-unused-exports/rule.js +82 -0
  42. package/dist/domain/architecture/no-unused-exports/types.d.ts +32 -0
  43. package/dist/domain/architecture/no-unused-exports/types.d.ts.map +1 -0
  44. package/dist/domain/architecture/no-unused-exports/types.js +2 -0
  45. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  46. package/dist/domain/core/no-multiple-declarators/rule.js +53 -4
  47. package/dist/domain/core/no-multiple-declarators/types.d.ts +3 -1
  48. package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -1
  49. package/dist/domain/core/no-multiple-declarators/types.js +5 -2
  50. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  51. package/dist/domain/core/prefer-interface-types/rule.js +90 -22
  52. package/dist/domain/custom-rule-documentation.d.ts +1 -14
  53. package/dist/domain/custom-rule-documentation.d.ts.map +1 -1
  54. package/dist/domain/custom-rule-documentation.js +2 -2
  55. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  56. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +11 -2
  57. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
  58. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +1 -1
  59. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  60. package/dist/domain/docs/no-interface-member-docs/rule.js +7 -2
  61. package/dist/domain/docs/require-example-language/examples.d.ts +4 -15
  62. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  63. package/dist/domain/docs/require-example-language/examples.js +119 -26
  64. package/dist/domain/docs/require-example-language/fixes.d.ts +1 -21
  65. package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
  66. package/dist/domain/docs/require-example-language/fixes.js +5 -2
  67. package/dist/domain/docs/require-example-language/reporting.d.ts +2 -38
  68. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
  69. package/dist/domain/docs/require-example-language/reporting.js +2 -2
  70. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  71. package/dist/domain/docs/require-example-language/rule.js +2 -1
  72. package/dist/domain/docs/require-example-language/types.d.ts +1 -1
  73. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  74. package/dist/domain/docs/require-example-language/types.js +1 -1
  75. package/dist/domain/docs/single-line-jsdoc/rule.js +8 -8
  76. package/dist/domain/index.d.ts +2 -3
  77. package/dist/domain/index.d.ts.map +1 -1
  78. package/dist/domain/index.js +3 -4
  79. package/dist/domain/testing/aaa/analyzer.analysis.d.ts +1 -19
  80. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
  81. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +8 -31
  82. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  83. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +18 -22
  84. package/dist/domain/testing/aaa/analyzer.analysis.js +46 -39
  85. package/dist/domain/testing/aaa/analyzer.assertions.d.ts +1 -17
  86. package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -1
  87. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +1 -3
  88. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
  89. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +3 -4
  90. package/dist/domain/testing/aaa/analyzer.assertions.js +5 -33
  91. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +1 -3
  92. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
  93. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +6 -5
  94. package/dist/domain/testing/aaa/analyzer.classification.d.ts +1 -15
  95. package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -1
  96. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +1 -3
  97. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -1
  98. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +5 -6
  99. package/dist/domain/testing/aaa/analyzer.classification.js +5 -31
  100. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +1 -3
  101. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -1
  102. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +3 -5
  103. package/dist/domain/testing/aaa/analyzer.super.d.ts +1 -7
  104. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  105. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +1 -14
  106. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -1
  107. package/dist/domain/testing/aaa/analyzer.super.helpers.js +2 -4
  108. package/dist/domain/testing/aaa/analyzer.super.js +5 -20
  109. package/dist/domain/testing/aaa/index.d.ts +1 -2
  110. package/dist/domain/testing/aaa/index.d.ts.map +1 -1
  111. package/dist/domain/testing/aaa/index.js +2 -2
  112. package/dist/domain/testing/aaa/types.d.ts +1 -1
  113. package/dist/domain/testing/aaa/types.d.ts.map +1 -1
  114. package/dist/domain/testing/aaa/types.js +1 -1
  115. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
  116. package/dist/domain/testing/assert-actual-expected-names/rule.js +28 -3
  117. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -1
  118. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -1
  119. package/dist/domain/testing/enforce-aaa-phase-purity/index.js +3 -2
  120. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +1 -1
  121. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -1
  122. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
  123. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +1 -1
  124. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
  125. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +78 -16
  126. package/dist/domain/testing/{require-aaa-sections → enforce-aaa-structure}/missing-section-fixes.d.ts +1 -1
  127. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -0
  128. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +150 -0
  129. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  130. package/dist/domain/testing/enforce-aaa-structure/rule.js +166 -7
  131. package/dist/domain/testing/index.d.ts +0 -3
  132. package/dist/domain/testing/index.d.ts.map +1 -1
  133. package/dist/domain/testing/index.js +1 -4
  134. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +1 -15
  135. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -1
  136. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +2 -71
  137. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
  138. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +4 -2
  139. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +1 -13
  140. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
  141. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +3 -21
  142. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
  143. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +2 -1
  144. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
  145. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +1 -1
  146. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +6 -6
  147. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +1 -12
  148. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
  149. package/dist/domain/testing/prefer-vi-mocked-import/match.js +149 -15
  150. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  151. package/dist/domain/testing/require-act-result-capture/rule.js +37 -8
  152. package/dist/domain/testing/require-test-companion/index.d.ts +0 -1
  153. package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -1
  154. package/dist/domain/testing/require-test-companion/index.js +1 -2
  155. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts +2 -1
  156. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
  157. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +13 -58
  158. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts +2 -1
  159. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -1
  160. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -5
  161. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  162. package/dist/domain/testing/require-test-companion/rule.js +7 -7
  163. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
  164. package/dist/domain/testing/single-act-statement/rule.js +6 -3
  165. package/dist/index.d.ts +1 -1
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +2 -2
  168. package/dist/infrastructure/codeperfect-plugin.d.ts +6 -6
  169. package/dist/infrastructure/codeperfect-plugin.js +5 -5
  170. package/dist/infrastructure/presets.d.ts.map +1 -1
  171. package/dist/infrastructure/presets.js +23 -7
  172. package/package.json +24 -31
  173. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +0 -41
  174. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
  175. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -87
  176. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +0 -40
  177. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
  178. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -91
  179. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +0 -4
  180. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +0 -1
  181. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +0 -4
  182. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts +0 -141
  183. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
  184. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +0 -20
  185. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +0 -1
  186. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +0 -25
  187. package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +0 -235
  188. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +0 -101
  189. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +0 -1
  190. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +0 -108
  191. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +0 -35
  192. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +0 -1
  193. package/dist/domain/core/no-multiple-declarators/rule.fixes.js +0 -95
  194. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +0 -4
  195. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +0 -1
  196. package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +0 -4
  197. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +0 -4
  198. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +0 -1
  199. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +0 -4
  200. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts +0 -110
  201. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
  202. package/dist/domain/core/prefer-interface-types/test-helpers.js +0 -116
  203. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -89
  204. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
  205. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
  206. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts +0 -103
  207. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
  208. package/dist/domain/docs/no-interface-member-docs/test-helpers.js +0 -157
  209. package/dist/domain/docs/require-example-language/create-fixer.d.ts +0 -5
  210. package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +0 -1
  211. package/dist/domain/docs/require-example-language/create-fixer.js +0 -5
  212. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +0 -4
  213. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +0 -1
  214. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +0 -5
  215. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +0 -4
  216. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +0 -1
  217. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +0 -5
  218. package/dist/domain/docs/test-helpers.d.ts +0 -50
  219. package/dist/domain/docs/test-helpers.d.ts.map +0 -1
  220. package/dist/domain/docs/test-helpers.js +0 -107
  221. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts +0 -4
  222. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts.map +0 -1
  223. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.js +0 -4
  224. package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts +0 -4
  225. package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts.map +0 -1
  226. package/dist/domain/testing/aaa/analyzer.assertions.destructured.js +0 -4
  227. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +0 -9
  228. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +0 -1
  229. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +0 -10
  230. package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts +0 -4
  231. package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts.map +0 -1
  232. package/dist/domain/testing/aaa/analyzer.classification.mutations.js +0 -4
  233. package/dist/domain/testing/aaa/analyzer.d.ts +0 -46
  234. package/dist/domain/testing/aaa/analyzer.d.ts.map +0 -1
  235. package/dist/domain/testing/aaa/analyzer.js +0 -59
  236. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts +0 -4
  237. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts.map +0 -1
  238. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.js +0 -4
  239. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts +0 -4
  240. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts.map +0 -1
  241. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.js +0 -4
  242. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +0 -4
  243. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +0 -1
  244. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +0 -4
  245. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +0 -42
  246. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +0 -1
  247. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +0 -188
  248. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts +0 -5
  249. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
  250. package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +0 -37
  251. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +0 -20
  252. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +0 -1
  253. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +0 -39
  254. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +0 -97
  255. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +0 -1
  256. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +0 -174
  257. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +0 -2
  258. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +0 -1
  259. package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +0 -2
  260. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +0 -14
  261. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +0 -1
  262. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +0 -84
  263. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +0 -13
  264. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +0 -1
  265. package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +0 -195
  266. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +0 -25
  267. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +0 -1
  268. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +0 -96
  269. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +0 -32
  270. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +0 -1
  271. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +0 -164
  272. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +0 -5
  273. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +0 -1
  274. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +0 -4
  275. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +0 -1
  276. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +0 -4
  277. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +0 -4
  278. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +0 -1
  279. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +0 -4
  280. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +0 -88
  281. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +0 -4
  282. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +0 -1
  283. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +0 -4
  284. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +0 -24
  285. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +0 -1
  286. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +0 -113
  287. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +0 -36
  288. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +0 -1
  289. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +0 -138
  290. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +0 -187
  291. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +0 -1
  292. package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +0 -2
  293. package/dist/domain/testing/require-aaa-sections/index.d.ts +0 -2
  294. package/dist/domain/testing/require-aaa-sections/index.d.ts.map +0 -1
  295. package/dist/domain/testing/require-aaa-sections/index.js +0 -2
  296. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +0 -1
  297. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +0 -150
  298. package/dist/domain/testing/require-aaa-sections/rule.d.ts +0 -5
  299. package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +0 -1
  300. package/dist/domain/testing/require-aaa-sections/rule.js +0 -134
  301. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +0 -104
  302. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +0 -1
  303. package/dist/domain/testing/require-aaa-sections/rule.reporting.js +0 -216
  304. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts +0 -51
  305. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
  306. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +0 -184
  307. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts +0 -28
  308. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
  309. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +0 -26
@@ -1,2 +0,0 @@
1
- export { preferVitestIncrementalCastsRule } from "./rule.js";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwcmVmZXJWaXRlc3RJbmNyZW1lbnRhbENhc3RzUnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcbiJdfQ==
@@ -1,14 +0,0 @@
1
- import { TSESTree } from "@typescript-eslint/utils";
2
- import type { FactoryMatchInput } from "./types.js";
3
- /**
4
- * Extracts the mock-factory inputs needed for a rewrite attempt.
5
- * @param callExpression Call expression to inspect.
6
- * @returns Normalized factory input when the call is supported.
7
- * @example
8
- * ```typescript
9
- * const factoryInput = getFactoryMatchInput(callExpression);
10
- * ```
11
- */
12
- declare function getFactoryMatchInput(callExpression: TSESTree.CallExpression): FactoryMatchInput | undefined;
13
- export { getFactoryMatchInput };
14
- //# sourceMappingURL=match-input.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"match-input.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/match-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAEV,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAgDjB;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAC3B,cAAc,EAAE,QAAQ,CAAC,cAAc,GACtC,iBAAiB,GAAG,SAAS,CAU/B;AA+CD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,84 +0,0 @@
1
- import { TSESTree } from "@typescript-eslint/utils";
2
- import { getFactoryReturnExpression, getModuleSpecifier, hasEscapeHatchCast, isVitestMockCall, unwrapExpression, } from "./ast-helpers.js";
3
- /**
4
- * Builds normalized match input from a supported factory call.
5
- * @param mockArguments Supported mock-call arguments.
6
- * @returns Normalized factory input when the returned value is an object literal.
7
- * @example
8
- * ```typescript
9
- * const factoryInput = buildFactoryMatchInput(mockArguments);
10
- * ```
11
- */
12
- function buildFactoryMatchInput(mockArguments) {
13
- const { factoryArgument, moduleArgument } = mockArguments;
14
- const moduleSpecifier = getModuleSpecifier(moduleArgument);
15
- const returnExpression = getFactoryReturnExpression(factoryArgument);
16
- if (moduleSpecifier === void 0 || returnExpression === void 0) {
17
- return void 0;
18
- }
19
- const objectExpression = unwrapExpression(returnExpression);
20
- if (objectExpression.type !== TSESTree.AST_NODE_TYPES.ObjectExpression ||
21
- (returnExpression !== objectExpression &&
22
- !hasEscapeHatchCast(returnExpression))) {
23
- return void 0;
24
- }
25
- return {
26
- factoryArgument,
27
- moduleSpecifier,
28
- objectExpression,
29
- returnExpression,
30
- };
31
- }
32
- /**
33
- * Extracts the mock-factory inputs needed for a rewrite attempt.
34
- * @param callExpression Call expression to inspect.
35
- * @returns Normalized factory input when the call is supported.
36
- * @example
37
- * ```typescript
38
- * const factoryInput = getFactoryMatchInput(callExpression);
39
- * ```
40
- */
41
- function getFactoryMatchInput(callExpression) {
42
- if (!isVitestMockCall(callExpression)) {
43
- return void 0;
44
- }
45
- const mockArguments = getMockFactoryArguments(callExpression.arguments);
46
- return mockArguments === void 0
47
- ? void 0
48
- : buildFactoryMatchInput(mockArguments);
49
- }
50
- /**
51
- * Extracts valid mock-factory arguments from a call expression.
52
- * @param argumentsList Arguments supplied to the mock call.
53
- * @returns Normalized arguments when the call shape is supported.
54
- * @example
55
- * ```typescript
56
- * const mockArguments = getMockFactoryArguments(callExpression.arguments);
57
- * ```
58
- */
59
- function getMockFactoryArguments(argumentsList) {
60
- const [moduleArgument, factoryArgument] = argumentsList;
61
- if (moduleArgument === void 0 ||
62
- factoryArgument === void 0 ||
63
- moduleArgument.type === TSESTree.AST_NODE_TYPES.SpreadElement ||
64
- factoryArgument.type === TSESTree.AST_NODE_TYPES.SpreadElement ||
65
- !isFactoryFunctionExpression(factoryArgument)) {
66
- return void 0;
67
- }
68
- return { factoryArgument, moduleArgument };
69
- }
70
- /**
71
- * Determines whether an expression is a supported mock factory function.
72
- * @param expression Expression to inspect.
73
- * @returns True when the expression is a function compatible with the fixer.
74
- * @example
75
- * ```typescript
76
- * const supported = isFactoryFunctionExpression(expression);
77
- * ```
78
- */
79
- function isFactoryFunctionExpression(expression) {
80
- return (expression.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression ||
81
- expression.type === TSESTree.AST_NODE_TYPES.FunctionExpression);
82
- }
83
- export { getFactoryMatchInput };
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9tYXRjaC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRcEQsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkI7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHNCQUFzQixDQUM3QixhQUFtQztJQUVuQyxNQUFNLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxHQUFHLGFBQWEsQ0FBQztJQUMxRCxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMzRCxNQUFNLGdCQUFnQixHQUFHLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRXJFLElBQUksZUFBZSxLQUFLLEtBQUssQ0FBQyxJQUFJLGdCQUFnQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUQsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTVELElBQ0UsZ0JBQWdCLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCO1FBQ2xFLENBQUMsZ0JBQWdCLEtBQUssZ0JBQWdCO1lBQ3BDLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUN4QyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTztRQUNMLGVBQWU7UUFDZixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsY0FBdUM7SUFFdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsdUJBQXVCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXhFLE9BQU8sYUFBYSxLQUFLLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsdUJBQXVCLENBQzlCLGFBQXlEO0lBRXpELE1BQU0sQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDLEdBQUcsYUFBYSxDQUFDO0lBRXhELElBQ0UsY0FBYyxLQUFLLEtBQUssQ0FBQztRQUN6QixlQUFlLEtBQUssS0FBSyxDQUFDO1FBQzFCLGNBQWMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhO1FBQzdELGVBQWUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhO1FBQzlELENBQUMsMkJBQTJCLENBQUMsZUFBZSxDQUFDLEVBQzdDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBQzdDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsMkJBQTJCLENBQ2xDLFVBQStCO0lBRS9CLE9BQU8sQ0FDTCxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsdUJBQXVCO1FBQ25FLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FDL0QsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRTRVNUcmVlIH0gZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC91dGlsc1wiO1xyXG5cclxuaW1wb3J0IHR5cGUge1xyXG4gIEZhY3RvcnlGdW5jdGlvbkV4cHJlc3Npb24sXHJcbiAgRmFjdG9yeU1hdGNoSW5wdXQsXHJcbiAgTW9ja0ZhY3RvcnlBcmd1bWVudHMsXHJcbn0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgZ2V0RmFjdG9yeVJldHVybkV4cHJlc3Npb24sXHJcbiAgZ2V0TW9kdWxlU3BlY2lmaWVyLFxyXG4gIGhhc0VzY2FwZUhhdGNoQ2FzdCxcclxuICBpc1ZpdGVzdE1vY2tDYWxsLFxyXG4gIHVud3JhcEV4cHJlc3Npb24sXHJcbn0gZnJvbSBcIi4vYXN0LWhlbHBlcnNcIjtcclxuXHJcbi8qKlxyXG4gKiBCdWlsZHMgbm9ybWFsaXplZCBtYXRjaCBpbnB1dCBmcm9tIGEgc3VwcG9ydGVkIGZhY3RvcnkgY2FsbC5cclxuICogQHBhcmFtIG1vY2tBcmd1bWVudHMgU3VwcG9ydGVkIG1vY2stY2FsbCBhcmd1bWVudHMuXHJcbiAqIEByZXR1cm5zIE5vcm1hbGl6ZWQgZmFjdG9yeSBpbnB1dCB3aGVuIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbiBvYmplY3QgbGl0ZXJhbC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBmYWN0b3J5SW5wdXQgPSBidWlsZEZhY3RvcnlNYXRjaElucHV0KG1vY2tBcmd1bWVudHMpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGJ1aWxkRmFjdG9yeU1hdGNoSW5wdXQoXHJcbiAgbW9ja0FyZ3VtZW50czogTW9ja0ZhY3RvcnlBcmd1bWVudHMsXHJcbik6IEZhY3RvcnlNYXRjaElucHV0IHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCB7IGZhY3RvcnlBcmd1bWVudCwgbW9kdWxlQXJndW1lbnQgfSA9IG1vY2tBcmd1bWVudHM7XHJcbiAgY29uc3QgbW9kdWxlU3BlY2lmaWVyID0gZ2V0TW9kdWxlU3BlY2lmaWVyKG1vZHVsZUFyZ3VtZW50KTtcclxuICBjb25zdCByZXR1cm5FeHByZXNzaW9uID0gZ2V0RmFjdG9yeVJldHVybkV4cHJlc3Npb24oZmFjdG9yeUFyZ3VtZW50KTtcclxuXHJcbiAgaWYgKG1vZHVsZVNwZWNpZmllciA9PT0gdm9pZCAwIHx8IHJldHVybkV4cHJlc3Npb24gPT09IHZvaWQgMCkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGNvbnN0IG9iamVjdEV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKHJldHVybkV4cHJlc3Npb24pO1xyXG5cclxuICBpZiAoXHJcbiAgICBvYmplY3RFeHByZXNzaW9uLnR5cGUgIT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLk9iamVjdEV4cHJlc3Npb24gfHxcclxuICAgIChyZXR1cm5FeHByZXNzaW9uICE9PSBvYmplY3RFeHByZXNzaW9uICYmXHJcbiAgICAgICFoYXNFc2NhcGVIYXRjaENhc3QocmV0dXJuRXhwcmVzc2lvbikpXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGZhY3RvcnlBcmd1bWVudCxcclxuICAgIG1vZHVsZVNwZWNpZmllcixcclxuICAgIG9iamVjdEV4cHJlc3Npb24sXHJcbiAgICByZXR1cm5FeHByZXNzaW9uLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFeHRyYWN0cyB0aGUgbW9jay1mYWN0b3J5IGlucHV0cyBuZWVkZWQgZm9yIGEgcmV3cml0ZSBhdHRlbXB0LlxyXG4gKiBAcGFyYW0gY2FsbEV4cHJlc3Npb24gQ2FsbCBleHByZXNzaW9uIHRvIGluc3BlY3QuXHJcbiAqIEByZXR1cm5zIE5vcm1hbGl6ZWQgZmFjdG9yeSBpbnB1dCB3aGVuIHRoZSBjYWxsIGlzIHN1cHBvcnRlZC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBmYWN0b3J5SW5wdXQgPSBnZXRGYWN0b3J5TWF0Y2hJbnB1dChjYWxsRXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0RmFjdG9yeU1hdGNoSW5wdXQoXHJcbiAgY2FsbEV4cHJlc3Npb246IFRTRVNUcmVlLkNhbGxFeHByZXNzaW9uLFxyXG4pOiBGYWN0b3J5TWF0Y2hJbnB1dCB8IHVuZGVmaW5lZCB7XHJcbiAgaWYgKCFpc1ZpdGVzdE1vY2tDYWxsKGNhbGxFeHByZXNzaW9uKSkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGNvbnN0IG1vY2tBcmd1bWVudHMgPSBnZXRNb2NrRmFjdG9yeUFyZ3VtZW50cyhjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMpO1xyXG5cclxuICByZXR1cm4gbW9ja0FyZ3VtZW50cyA9PT0gdm9pZCAwXHJcbiAgICA/IHZvaWQgMFxyXG4gICAgOiBidWlsZEZhY3RvcnlNYXRjaElucHV0KG1vY2tBcmd1bWVudHMpO1xyXG59XHJcblxyXG4vKipcclxuICogRXh0cmFjdHMgdmFsaWQgbW9jay1mYWN0b3J5IGFyZ3VtZW50cyBmcm9tIGEgY2FsbCBleHByZXNzaW9uLlxyXG4gKiBAcGFyYW0gYXJndW1lbnRzTGlzdCBBcmd1bWVudHMgc3VwcGxpZWQgdG8gdGhlIG1vY2sgY2FsbC5cclxuICogQHJldHVybnMgTm9ybWFsaXplZCBhcmd1bWVudHMgd2hlbiB0aGUgY2FsbCBzaGFwZSBpcyBzdXBwb3J0ZWQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgbW9ja0FyZ3VtZW50cyA9IGdldE1vY2tGYWN0b3J5QXJndW1lbnRzKGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cyk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0TW9ja0ZhY3RvcnlBcmd1bWVudHMoXHJcbiAgYXJndW1lbnRzTGlzdDogcmVhZG9ubHkgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb25Bcmd1bWVudFtdLFxyXG4pOiBNb2NrRmFjdG9yeUFyZ3VtZW50cyB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3QgW21vZHVsZUFyZ3VtZW50LCBmYWN0b3J5QXJndW1lbnRdID0gYXJndW1lbnRzTGlzdDtcclxuXHJcbiAgaWYgKFxyXG4gICAgbW9kdWxlQXJndW1lbnQgPT09IHZvaWQgMCB8fFxyXG4gICAgZmFjdG9yeUFyZ3VtZW50ID09PSB2b2lkIDAgfHxcclxuICAgIG1vZHVsZUFyZ3VtZW50LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLlNwcmVhZEVsZW1lbnQgfHxcclxuICAgIGZhY3RvcnlBcmd1bWVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5TcHJlYWRFbGVtZW50IHx8XHJcbiAgICAhaXNGYWN0b3J5RnVuY3Rpb25FeHByZXNzaW9uKGZhY3RvcnlBcmd1bWVudClcclxuICApIHtcclxuICAgIHJldHVybiB2b2lkIDA7XHJcbiAgfVxyXG5cclxuICByZXR1cm4geyBmYWN0b3J5QXJndW1lbnQsIG1vZHVsZUFyZ3VtZW50IH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZXhwcmVzc2lvbiBpcyBhIHN1cHBvcnRlZCBtb2NrIGZhY3RvcnkgZnVuY3Rpb24uXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIEV4cHJlc3Npb24gdG8gaW5zcGVjdC5cclxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBleHByZXNzaW9uIGlzIGEgZnVuY3Rpb24gY29tcGF0aWJsZSB3aXRoIHRoZSBmaXhlci5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBzdXBwb3J0ZWQgPSBpc0ZhY3RvcnlGdW5jdGlvbkV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNGYWN0b3J5RnVuY3Rpb25FeHByZXNzaW9uKFxyXG4gIGV4cHJlc3Npb246IFRTRVNUcmVlLkV4cHJlc3Npb24sXHJcbik6IGV4cHJlc3Npb24gaXMgRmFjdG9yeUZ1bmN0aW9uRXhwcmVzc2lvbiB7XHJcbiAgcmV0dXJuIChcclxuICAgIGV4cHJlc3Npb24udHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gfHxcclxuICAgIGV4cHJlc3Npb24udHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuRnVuY3Rpb25FeHByZXNzaW9uXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IHsgZ2V0RmFjdG9yeU1hdGNoSW5wdXQgfTtcclxuIl19
@@ -1,13 +0,0 @@
1
- import type { CollectMatchContext, MatchResult } from "./types.js";
2
- /**
3
- * Collects a fix match for a supported Vitest mock factory call.
4
- * @param context Match collection context.
5
- * @returns Match result when the object literal can be safely rewritten.
6
- * @example
7
- * ```typescript
8
- * const match = collectMatch(context);
9
- * ```
10
- */
11
- declare function collectMatch(context: CollectMatchContext): MatchResult | undefined;
12
- export { collectMatch };
13
- //# sourceMappingURL=match.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,mBAAmB,EAEnB,WAAW,EAKZ,MAAM,SAAS,CAAC;AA2GjB;;;;;;;;GAQG;AACH,iBAAS,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,GAAG,SAAS,CA+C3E;AAkHD,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -1,195 +0,0 @@
1
- import { getPropertyName, isSupportedProperty, shouldWrapImplicitObject, } from "./ast-helpers.js";
2
- import { getFactoryMatchInput } from "./match-input.js";
3
- import { applyTextReplacements, buildPropertyReplacement, } from "./replacement-helpers.js";
4
- import { isOuterCastRequired, resolveFactoryTargetType } from "./type-helpers.js";
5
- /**
6
- * Records one property replacement when the source text must change.
7
- * @param propertyNames Property names already handled for the object literal.
8
- * @param replacements Replacement entries collected so far.
9
- * @param replacementContext Replacement context for the current property.
10
- * @example
11
- * ```typescript
12
- * appendPropertyReplacement(new Set(), [], replacementContext);
13
- * ```
14
- */
15
- function appendPropertyReplacement(propertyNames, replacements, replacementContext) {
16
- propertyNames.add(replacementContext.keyName);
17
- const replacement = buildPropertyReplacement(replacementContext);
18
- if (replacement !== void 0) {
19
- replacements.push(replacement);
20
- }
21
- }
22
- /**
23
- * Builds the final match result for a rewritten object literal.
24
- * @param context Data required to build the final replacement.
25
- * @returns Final match result when the object text changes.
26
- * @example
27
- * ```typescript
28
- * const match = buildMatchResult(context);
29
- * ```
30
- */
31
- function buildMatchResult(context) {
32
- const objectText = applyTextReplacements(context.sourceText.slice(context.objectExpression.range[0], context.objectExpression.range[1]), context.replacements, context.objectExpression.range[0]);
33
- const replacementText = createReplacementText(context, objectText);
34
- const originalText = context.sourceText.slice(context.returnExpression.range[0], context.returnExpression.range[1]);
35
- return originalText === replacementText
36
- ? void 0
37
- : {
38
- replacementText,
39
- returnExpressionRange: context.returnExpression.range,
40
- };
41
- }
42
- /**
43
- * Collects nested replacements for all supported object literal properties.
44
- * @param context Data required to analyze supported object properties.
45
- * @param properties Supported object literal properties to rewrite.
46
- * @returns Property replacements when every property can be handled safely.
47
- * @example
48
- * ```typescript
49
- * const collection = buildPropertyReplacementCollection(context, properties);
50
- * ```
51
- */
52
- function buildPropertyReplacementCollection(context, properties) {
53
- const propertyNames = new Set();
54
- const replacements = [];
55
- const targetProperties = createTargetPropertyMap(context);
56
- for (const property of properties) {
57
- const replacementContext = createPropertyReplacementContext(context, property, targetProperties);
58
- if (replacementContext === void 0) {
59
- return void 0;
60
- }
61
- appendPropertyReplacement(propertyNames, replacements, replacementContext);
62
- }
63
- return { propertyNames, replacements };
64
- }
65
- /**
66
- * Collects a fix match for a supported Vitest mock factory call.
67
- * @param context Match collection context.
68
- * @returns Match result when the object literal can be safely rewritten.
69
- * @example
70
- * ```typescript
71
- * const match = collectMatch(context);
72
- * ```
73
- */
74
- function collectMatch(context) {
75
- const factoryMatchInput = getFactoryMatchInput(context.callExpression);
76
- if (factoryMatchInput === void 0) {
77
- return void 0;
78
- }
79
- const targetType = resolveFactoryTargetType({
80
- callExpression: context.callExpression,
81
- checker: context.checker,
82
- factoryArgument: factoryMatchInput.factoryArgument,
83
- objectExpression: factoryMatchInput.objectExpression,
84
- services: context.services,
85
- });
86
- if (targetType === void 0) {
87
- return void 0;
88
- }
89
- const collectedReplacements = collectPropertyReplacements({
90
- checker: context.checker,
91
- moduleSpecifier: factoryMatchInput.moduleSpecifier,
92
- namespaceAlias: context.namespaceImports.get(factoryMatchInput.moduleSpecifier),
93
- objectExpression: factoryMatchInput.objectExpression,
94
- services: context.services,
95
- sourceText: context.sourceText,
96
- targetType,
97
- });
98
- return collectedReplacements === void 0
99
- ? void 0
100
- : buildMatchResult({
101
- checker: context.checker,
102
- factoryArgument: factoryMatchInput.factoryArgument,
103
- moduleSpecifier: factoryMatchInput.moduleSpecifier,
104
- namespaceAlias: context.namespaceImports.get(factoryMatchInput.moduleSpecifier),
105
- objectExpression: factoryMatchInput.objectExpression,
106
- propertyNames: collectedReplacements.propertyNames,
107
- replacements: collectedReplacements.replacements,
108
- returnExpression: factoryMatchInput.returnExpression,
109
- sourceText: context.sourceText,
110
- targetType,
111
- });
112
- }
113
- /**
114
- * Collects nested replacements for all supported object literal properties.
115
- * @param context Data required to analyze supported object properties.
116
- * @returns Property replacements when every property can be handled safely.
117
- * @example
118
- * ```typescript
119
- * const collection = collectPropertyReplacements(context);
120
- * ```
121
- */
122
- function collectPropertyReplacements(context) {
123
- const properties = context.objectExpression.properties.filter((property) => isSupportedProperty(property));
124
- return properties.length === context.objectExpression.properties.length
125
- ? buildPropertyReplacementCollection(context, properties)
126
- : void 0;
127
- }
128
- /**
129
- * Creates replacement inputs for one supported object literal property.
130
- * @param context Data required to analyze supported object properties.
131
- * @param property Supported property from the returned object literal.
132
- * @param targetProperties Target-property lookup keyed by property name.
133
- * @returns Replacement inputs when the property can be handled safely.
134
- * @example
135
- * ```typescript
136
- * const replacementContext = createPropertyReplacementContext(context, property, targetProperties);
137
- * ```
138
- */
139
- function createPropertyReplacementContext(context, property, targetProperties) {
140
- const keyName = getPropertyName(property.key);
141
- const targetPropertySymbol = keyName === void 0 ? void 0 : targetProperties.get(keyName);
142
- return keyName === void 0 || targetPropertySymbol === void 0
143
- ? void 0
144
- : {
145
- checker: context.checker,
146
- keyName,
147
- moduleSpecifier: context.moduleSpecifier,
148
- namespaceAlias: context.namespaceAlias,
149
- property,
150
- services: context.services,
151
- sourceText: context.sourceText,
152
- targetPropertySymbol,
153
- };
154
- }
155
- /**
156
- * Creates the final replacement text for the returned object expression.
157
- * @param context Data required to build the final replacement.
158
- * @param objectText Rewritten object literal text.
159
- * @returns Final replacement text for the factory return expression.
160
- * @example
161
- * ```typescript
162
- * const text = createReplacementText(context, "({})");
163
- * ```
164
- */
165
- function createReplacementText(context, objectText) {
166
- if (isOuterCastRequired({
167
- checker: context.checker,
168
- propertyNames: context.propertyNames,
169
- targetType: context.targetType,
170
- })) {
171
- const moduleReference = context.namespaceAlias === void 0
172
- ? `import(${JSON.stringify(context.moduleSpecifier)})`
173
- : context.namespaceAlias;
174
- return `(${objectText}) as typeof ${moduleReference}`;
175
- }
176
- return shouldWrapImplicitObject(context.factoryArgument, context.returnExpression, context.objectExpression)
177
- ? `(${objectText})`
178
- : objectText;
179
- }
180
- /**
181
- * Builds the lookup of target properties from the inferred target type.
182
- * @param context Data required to analyze supported object properties.
183
- * @returns Target-property lookup keyed by property name.
184
- * @example
185
- * ```typescript
186
- * const targetProperties = createTargetPropertyMap(context);
187
- * ```
188
- */
189
- function createTargetPropertyMap(context) {
190
- return new Map(context.checker
191
- .getPropertiesOfType(context.targetType)
192
- .map((propertySymbol) => [propertySymbol.getName(), propertySymbol]));
193
- }
194
- export { collectMatch };
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsd0JBQXdCLEdBQ3pCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0U7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyx5QkFBeUIsQ0FDaEMsYUFBMEIsRUFDMUIsWUFBbUMsRUFDbkMsa0JBQW1EO0lBRW5ELGFBQWEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFOUMsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVqRSxJQUFJLFdBQVcsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsZ0JBQWdCLENBQ3ZCLE9BQWdDO0lBRWhDLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUN0QyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDdEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDakMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDbEMsRUFDRCxPQUFPLENBQUMsWUFBWSxFQUNwQixPQUFPLENB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RTNDLE9BQU8sSUFBSSxHQUFHLENBQ1osT0FBTyxDQUFDLE9BQU87U0FDWixtQkFBbUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1NBQ3ZDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FDdkUsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XHJcbiAgQnVpbGRNYXRjaFJlc3VsdENvbnRleHQsXHJcbiAgQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dCxcclxuICBDb2xsZWN0TWF0Y2hDb250ZXh0LFxyXG4gIENvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50c0NvbnRleHQsXHJcbiAgTWF0Y2hSZXN1bHQsXHJcbiAgUHJvcGVydHlSZXBsYWNlbWVudCxcclxuICBQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbixcclxuICBTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICBUYXJnZXRQcm9wZXJ0eU1hcCxcclxufSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuaW1wb3J0IHtcclxuICBnZXRQcm9wZXJ0eU5hbWUsXHJcbiAgaXNTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICBzaG91bGRXcmFwSW1wbGljaXRPYmplY3QsXHJcbn0gZnJvbSBcIi4vYXN0LWhlbHBlcnNcIjtcclxuaW1wb3J0IHsgZ2V0RmFjdG9yeU1hdGNoSW5wdXQgfSBmcm9tIFwiLi9tYXRjaC1pbnB1dFwiO1xyXG5pbXBvcnQge1xyXG4gIGFwcGx5VGV4dFJlcGxhY2VtZW50cyxcclxuICBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnQsXHJcbn0gZnJvbSBcIi4vcmVwbGFjZW1lbnQtaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBpc091dGVyQ2FzdFJlcXVpcmVkLCByZXNvbHZlRmFjdG9yeVRhcmdldFR5cGUgfSBmcm9tIFwiLi90eXBlLWhlbHBlcnNcIjtcclxuXHJcbi8qKlxyXG4gKiBSZWNvcmRzIG9uZSBwcm9wZXJ0eSByZXBsYWNlbWVudCB3aGVuIHRoZSBzb3VyY2UgdGV4dCBtdXN0IGNoYW5nZS5cclxuICogQHBhcmFtIHByb3BlcnR5TmFtZXMgUHJvcGVydHkgbmFtZXMgYWxyZWFkeSBoYW5kbGVkIGZvciB0aGUgb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEBwYXJhbSByZXBsYWNlbWVudHMgUmVwbGFjZW1lbnQgZW50cmllcyBjb2xsZWN0ZWQgc28gZmFyLlxyXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRDb250ZXh0IFJlcGxhY2VtZW50IGNvbnRleHQgZm9yIHRoZSBjdXJyZW50IHByb3BlcnR5LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGFwcGVuZFByb3BlcnR5UmVwbGFjZW1lbnQobmV3IFNldCgpLCBbXSwgcmVwbGFjZW1lbnRDb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBhcHBlbmRQcm9wZXJ0eVJlcGxhY2VtZW50KFxyXG4gIHByb3BlcnR5TmFtZXM6IFNldDxzdHJpbmc+LFxyXG4gIHJlcGxhY2VtZW50czogUHJvcGVydHlSZXBsYWNlbWVudFtdLFxyXG4gIHJlcGxhY2VtZW50Q29udGV4dDogQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dCxcclxuKTogdm9pZCB7XHJcbiAgcHJvcGVydHlOYW1lcy5hZGQocmVwbGFjZW1lbnRDb250ZXh0LmtleU5hbWUpO1xyXG5cclxuICBjb25zdCByZXBsYWNlbWVudCA9IGJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudChyZXBsYWNlbWVudENvbnRleHQpO1xyXG5cclxuICBpZiAocmVwbGFjZW1lbnQgIT09IHZvaWQgMCkge1xyXG4gICAgcmVwbGFjZW1lbnRzLnB1c2gocmVwbGFjZW1lbnQpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEJ1aWxkcyB0aGUgZmluYWwgbWF0Y2ggcmVzdWx0IGZvciBhIHJld3JpdHRlbiBvYmplY3QgbGl0ZXJhbC5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBidWlsZCB0aGUgZmluYWwgcmVwbGFjZW1lbnQuXHJcbiAqIEByZXR1cm5zIEZpbmFsIG1hdGNoIHJlc3VsdCB3aGVuIHRoZSBvYmplY3QgdGV4dCBjaGFuZ2VzLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1hdGNoID0gYnVpbGRNYXRjaFJlc3VsdChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBidWlsZE1hdGNoUmVzdWx0KFxyXG4gIGNvbnRleHQ6IEJ1aWxkTWF0Y2hSZXN1bHRDb250ZXh0LFxyXG4pOiBNYXRjaFJlc3VsdCB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3Qgb2JqZWN0VGV4dCA9IGFwcGx5VGV4dFJlcGxhY2VtZW50cyhcclxuICAgIGNvbnRleHQuc291cmNlVGV4dC5zbGljZShcclxuICAgICAgY29udGV4dC5vYmplY3RFeHByZXNzaW9uLnJhbmdlWzBdLFxyXG4gICAgICBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucmFuZ2VbMV0sXHJcbiAgICApLFxyXG4gICAgY29udGV4dC5yZXBsYWNlbWVudHMsXHJcbiAgICBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucmFuZ2VbMF0sXHJcbiAgKTtcclxuICBjb25zdCByZXBsYWNlbWVudFRleHQgPSBjcmVhdGVSZXBsYWNlbWVudFRleHQoY29udGV4dCwgb2JqZWN0VGV4dCk7XHJcbiAgY29uc3Qgb3JpZ2luYWxUZXh0ID0gY29udGV4dC5zb3VyY2VUZXh0LnNsaWNlKFxyXG4gICAgY29udGV4dC5yZXR1cm5FeHByZXNzaW9uLnJhbmdlWzBdLFxyXG4gICAgY29udGV4dC5yZXR1cm5FeHByZXNzaW9uLnJhbmdlWzFdLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiBvcmlnaW5hbFRleHQgPT09IHJlcGxhY2VtZW50VGV4dFxyXG4gICAgPyB2b2lkIDBcclxuICAgIDoge1xyXG4gICAgICAgIHJlcGxhY2VtZW50VGV4dCxcclxuICAgICAgICByZXR1cm5FeHByZXNzaW9uUmFuZ2U6IGNvbnRleHQucmV0dXJuRXhwcmVzc2lvbi5yYW5nZSxcclxuICAgICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3RzIG5lc3RlZCByZXBsYWNlbWVudHMgZm9yIGFsbCBzdXBwb3J0ZWQgb2JqZWN0IGxpdGVyYWwgcHJvcGVydGllcy5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBhbmFseXplIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydGllcy5cclxuICogQHBhcmFtIHByb3BlcnRpZXMgU3VwcG9ydGVkIG9iamVjdCBsaXRlcmFsIHByb3BlcnRpZXMgdG8gcmV3cml0ZS5cclxuICogQHJldHVybnMgUHJvcGVydHkgcmVwbGFjZW1lbnRzIHdoZW4gZXZlcnkgcHJvcGVydHkgY2FuIGJlIGhhbmRsZWQgc2FmZWx5LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGNvbGxlY3Rpb24gPSBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb2xsZWN0aW9uKGNvbnRleHQsIHByb3BlcnRpZXMpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24oXHJcbiAgY29udGV4dDogQ29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzQ29udGV4dCxcclxuICBwcm9wZXJ0aWVzOiByZWFkb25seSBTdXBwb3J0ZWRQcm9wZXJ0eVtdLFxyXG4pOiBQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbiB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3QgcHJvcGVydHlOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gIGNvbnN0IHJlcGxhY2VtZW50czogUHJvcGVydHlSZXBsYWNlbWVudFtdID0gW107XHJcbiAgY29uc3QgdGFyZ2V0UHJvcGVydGllcyA9IGNyZWF0ZVRhcmdldFByb3BlcnR5TWFwKGNvbnRleHQpO1xyXG5cclxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcclxuICAgIGNvbnN0IHJlcGxhY2VtZW50Q29udGV4dCA9IGNyZWF0ZVByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0KFxyXG4gICAgICBjb250ZXh0LFxyXG4gICAgICBwcm9wZXJ0eSxcclxuICAgICAgdGFyZ2V0UHJvcGVydGllcyxcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHJlcGxhY2VtZW50Q29udGV4dCA9PT0gdm9pZCAwKSB7XHJcbiAgICAgIHJldHVybiB2b2lkIDA7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwZW5kUHJvcGVydHlSZXBsYWNlbWVudChwcm9wZXJ0eU5hbWVzLCByZXBsYWNlbWVudHMsIHJlcGxhY2VtZW50Q29udGV4dCk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4geyBwcm9wZXJ0eU5hbWVzLCByZXBsYWNlbWVudHMgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3RzIGEgZml4IG1hdGNoIGZvciBhIHN1cHBvcnRlZCBWaXRlc3QgbW9jayBmYWN0b3J5IGNhbGwuXHJcbiAqIEBwYXJhbSBjb250ZXh0IE1hdGNoIGNvbGxlY3Rpb24gY29udGV4dC5cclxuICogQHJldHVybnMgTWF0Y2ggcmVzdWx0IHdoZW4gdGhlIG9iamVjdCBsaXRlcmFsIGNhbiBiZSBzYWZlbHkgcmV3cml0dGVuLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1hdGNoID0gY29sbGVjdE1hdGNoKGNvbnRleHQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNvbGxlY3RNYXRjaChjb250ZXh0OiBDb2xsZWN0TWF0Y2hDb250ZXh0KTogTWF0Y2hSZXN1bHQgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IGZhY3RvcnlNYXRjaElucHV0ID0gZ2V0RmFjdG9yeU1hdGNoSW5wdXQoY29udGV4dC5jYWxsRXhwcmVzc2lvbik7XHJcblxyXG4gIGlmIChmYWN0b3J5TWF0Y2hJbnB1dCA9PT0gdm9pZCAwKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgdGFyZ2V0VHlwZSA9IHJlc29sdmVGYWN0b3J5VGFyZ2V0VHlwZSh7XHJcbiAgICBjYWxsRXhwcmVzc2lvbjogY29udGV4dC5jYWxsRXhwcmVzc2lvbixcclxuICAgIGNoZWNrZXI6IGNvbnRleHQuY2hlY2tlcixcclxuICAgIGZhY3RvcnlBcmd1bWVudDogZmFjdG9yeU1hdGNoSW5wdXQuZmFjdG9yeUFyZ3VtZW50LFxyXG4gICAgb2JqZWN0RXhwcmVzc2lvbjogZmFjdG9yeU1hdGNoSW5wdXQub2JqZWN0RXhwcmVzc2lvbixcclxuICAgIHNlcnZpY2VzOiBjb250ZXh0LnNlcnZpY2VzLFxyXG4gIH0pO1xyXG5cclxuICBpZiAodGFyZ2V0VHlwZSA9PT0gdm9pZCAwKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgY29sbGVjdGVkUmVwbGFjZW1lbnRzID0gY29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzKHtcclxuICAgIGNoZWNrZXI6IGNvbnRleHQuY2hlY2tlcixcclxuICAgIG1vZHVsZVNwZWNpZmllcjogZmFjdG9yeU1hdGNoSW5wdXQubW9kdWxlU3BlY2lmaWVyLFxyXG4gICAgbmFtZXNwYWNlQWxpYXM6IGNvbnRleHQubmFtZXNwYWNlSW1wb3J0cy5nZXQoXHJcbiAgICAgIGZhY3RvcnlNYXRjaElucHV0Lm1vZHVsZVNwZWNpZmllcixcclxuICAgICksXHJcbiAgICBvYmplY3RFeHByZXNzaW9uOiBmYWN0b3J5TWF0Y2hJbnB1dC5vYmplY3RFeHByZXNzaW9uLFxyXG4gICAgc2VydmljZXM6IGNvbnRleHQuc2VydmljZXMsXHJcbiAgICBzb3VyY2VUZXh0OiBjb250ZXh0LnNvdXJjZVRleHQsXHJcbiAgICB0YXJnZXRUeXBlLFxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gY29sbGVjdGVkUmVwbGFjZW1lbnRzID09PSB2b2lkIDBcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IGJ1aWxkTWF0Y2hSZXN1bHQoe1xyXG4gICAgICAgIGNoZWNrZXI6IGNvbnRleHQuY2hlY2tlcixcclxuICAgICAgICBmYWN0b3J5QXJndW1lbnQ6IGZhY3RvcnlNYXRjaElucHV0LmZhY3RvcnlBcmd1bWVudCxcclxuICAgICAgICBtb2R1bGVTcGVjaWZpZXI6IGZhY3RvcnlNYXRjaElucHV0Lm1vZHVsZVNwZWNpZmllcixcclxuICAgICAgICBuYW1lc3BhY2VBbGlhczogY29udGV4dC5uYW1lc3BhY2VJbXBvcnRzLmdldChcclxuICAgICAgICAgIGZhY3RvcnlNYXRjaElucHV0Lm1vZHVsZVNwZWNpZmllcixcclxuICAgICAgICApLFxyXG4gICAgICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICAgICAgcHJvcGVydHlOYW1lczogY29sbGVjdGVkUmVwbGFjZW1lbnRzLnByb3BlcnR5TmFtZXMsXHJcbiAgICAgICAgcmVwbGFjZW1lbnRzOiBjb2xsZWN0ZWRSZXBsYWNlbWVudHMucmVwbGFjZW1lbnRzLFxyXG4gICAgICAgIHJldHVybkV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0LnJldHVybkV4cHJlc3Npb24sXHJcbiAgICAgICAgc291cmNlVGV4dDogY29udGV4dC5zb3VyY2VUZXh0LFxyXG4gICAgICAgIHRhcmdldFR5cGUsXHJcbiAgICAgIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogQ29sbGVjdHMgbmVzdGVkIHJlcGxhY2VtZW50cyBmb3IgYWxsIHN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0aWVzLlxyXG4gKiBAcGFyYW0gY29udGV4dCBEYXRhIHJlcXVpcmVkIHRvIGFuYWx5emUgc3VwcG9ydGVkIG9iamVjdCBwcm9wZXJ0aWVzLlxyXG4gKiBAcmV0dXJucyBQcm9wZXJ0eSByZXBsYWNlbWVudHMgd2hlbiBldmVyeSBwcm9wZXJ0eSBjYW4gYmUgaGFuZGxlZCBzYWZlbHkuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50cyhjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHMoXHJcbiAgY29udGV4dDogQ29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzQ29udGV4dCxcclxuKTogUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHByb3BlcnRpZXMgPSBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucHJvcGVydGllcy5maWx0ZXIoKHByb3BlcnR5KSA9PlxyXG4gICAgaXNTdXBwb3J0ZWRQcm9wZXJ0eShwcm9wZXJ0eSksXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHByb3BlcnRpZXMubGVuZ3RoID09PSBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucHJvcGVydGllcy5sZW5ndGhcclxuICAgID8gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbihjb250ZXh0LCBwcm9wZXJ0aWVzKVxyXG4gICAgOiB2b2lkIDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIHJlcGxhY2VtZW50IGlucHV0cyBmb3Igb25lIHN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0eS5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBhbmFseXplIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydGllcy5cclxuICogQHBhcmFtIHByb3BlcnR5IFN1cHBvcnRlZCBwcm9wZXJ0eSBmcm9tIHRoZSByZXR1cm5lZCBvYmplY3QgbGl0ZXJhbC5cclxuICogQHBhcmFtIHRhcmdldFByb3BlcnRpZXMgVGFyZ2V0LXByb3BlcnR5IGxvb2t1cCBrZXllZCBieSBwcm9wZXJ0eSBuYW1lLlxyXG4gKiBAcmV0dXJucyBSZXBsYWNlbWVudCBpbnB1dHMgd2hlbiB0aGUgcHJvcGVydHkgY2FuIGJlIGhhbmRsZWQgc2FmZWx5LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlcGxhY2VtZW50Q29udGV4dCA9IGNyZWF0ZVByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0KGNvbnRleHQsIHByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0aWVzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dChcclxuICBjb250ZXh0OiBDb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHNDb250ZXh0LFxyXG4gIHByb3BlcnR5OiBTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICB0YXJnZXRQcm9wZXJ0aWVzOiBUYXJnZXRQcm9wZXJ0eU1hcCxcclxuKTogQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dCB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3Qga2V5TmFtZSA9IGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eS5rZXkpO1xyXG4gIGNvbnN0IHRhcmdldFByb3BlcnR5U3ltYm9sID1cclxuICAgIGtleU5hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldFByb3BlcnRpZXMuZ2V0KGtleU5hbWUpO1xyXG5cclxuICByZXR1cm4ga2V5TmFtZSA9PT0gdm9pZCAwIHx8IHRhcmdldFByb3BlcnR5U3ltYm9sID09PSB2b2lkIDBcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IHtcclxuICAgICAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICAgICAga2V5TmFtZSxcclxuICAgICAgICBtb2R1bGVTcGVjaWZpZXI6IGNvbnRleHQubW9kdWxlU3BlY2lmaWVyLFxyXG4gICAgICAgIG5hbWVzcGFjZUFsaWFzOiBjb250ZXh0Lm5hbWVzcGFjZUFsaWFzLFxyXG4gICAgICAgIHByb3BlcnR5LFxyXG4gICAgICAgIHNlcnZpY2VzOiBjb250ZXh0LnNlcnZpY2VzLFxyXG4gICAgICAgIHNvdXJjZVRleHQ6IGNvbnRleHQuc291cmNlVGV4dCxcclxuICAgICAgICB0YXJnZXRQcm9wZXJ0eVN5bWJvbCxcclxuICAgICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIGZpbmFsIHJlcGxhY2VtZW50IHRleHQgZm9yIHRoZSByZXR1cm5lZCBvYmplY3QgZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBidWlsZCB0aGUgZmluYWwgcmVwbGFjZW1lbnQuXHJcbiAqIEBwYXJhbSBvYmplY3RUZXh0IFJld3JpdHRlbiBvYmplY3QgbGl0ZXJhbCB0ZXh0LlxyXG4gKiBAcmV0dXJucyBGaW5hbCByZXBsYWNlbWVudCB0ZXh0IGZvciB0aGUgZmFjdG9yeSByZXR1cm4gZXhwcmVzc2lvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB0ZXh0ID0gY3JlYXRlUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQsIFwiKHt9KVwiKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZXBsYWNlbWVudFRleHQoXHJcbiAgY29udGV4dDogQnVpbGRNYXRjaFJlc3VsdENvbnRleHQsXHJcbiAgb2JqZWN0VGV4dDogc3RyaW5nLFxyXG4pOiBzdHJpbmcge1xyXG4gIGlmIChcclxuICAgIGlzT3V0ZXJDYXN0UmVxdWlyZWQoe1xyXG4gICAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICAgIHByb3BlcnR5TmFtZXM6IGNvbnRleHQucHJvcGVydHlOYW1lcyxcclxuICAgICAgdGFyZ2V0VHlwZTogY29udGV4dC50YXJnZXRUeXBlLFxyXG4gICAgfSlcclxuICApIHtcclxuICAgIGNvbnN0IG1vZHVsZVJlZmVyZW5jZSA9XHJcbiAgICAgIGNvbnRleHQubmFtZXNwYWNlQWxpYXMgPT09IHZvaWQgMFxyXG4gICAgICAgID8gYGltcG9ydCgke0pTT04uc3RyaW5naWZ5KGNvbnRleHQubW9kdWxlU3BlY2lmaWVyKX0pYFxyXG4gICAgICAgIDogY29udGV4dC5uYW1lc3BhY2VBbGlhcztcclxuXHJcbiAgICByZXR1cm4gYCgke29iamVjdFRleHR9KSBhcyB0eXBlb2YgJHttb2R1bGVSZWZlcmVuY2V9YDtcclxuICB9XHJcblxyXG4gIHJldHVybiBzaG91bGRXcmFwSW1wbGljaXRPYmplY3QoXHJcbiAgICBjb250ZXh0LmZhY3RvcnlBcmd1bWVudCxcclxuICAgIGNvbnRleHQucmV0dXJuRXhwcmVzc2lvbixcclxuICAgIGNvbnRleHQub2JqZWN0RXhwcmVzc2lvbixcclxuICApXHJcbiAgICA/IGAoJHtvYmplY3RUZXh0fSlgXHJcbiAgICA6IG9iamVjdFRleHQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZHMgdGhlIGxvb2t1cCBvZiB0YXJnZXQgcHJvcGVydGllcyBmcm9tIHRoZSBpbmZlcnJlZCB0YXJnZXQgdHlwZS5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBhbmFseXplIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydGllcy5cclxuICogQHJldHVybnMgVGFyZ2V0LXByb3BlcnR5IGxvb2t1cCBrZXllZCBieSBwcm9wZXJ0eSBuYW1lLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHRhcmdldFByb3BlcnRpZXMgPSBjcmVhdGVUYXJnZXRQcm9wZXJ0eU1hcChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVUYXJnZXRQcm9wZXJ0eU1hcChcclxuICBjb250ZXh0OiBDb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHNDb250ZXh0LFxyXG4pOiBUYXJnZXRQcm9wZXJ0eU1hcCB7XHJcbiAgcmV0dXJuIG5ldyBNYXAoXHJcbiAgICBjb250ZXh0LmNoZWNrZXJcclxuICAgICAgLmdldFByb3BlcnRpZXNPZlR5cGUoY29udGV4dC50YXJnZXRUeXBlKVxyXG4gICAgICAubWFwKChwcm9wZXJ0eVN5bWJvbCkgPT4gW3Byb3BlcnR5U3ltYm9sLmdldE5hbWUoKSwgcHJvcGVydHlTeW1ib2xdKSxcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgeyBjb2xsZWN0TWF0Y2ggfTtcclxuIl19
@@ -1,25 +0,0 @@
1
- import type { BuildPropertyReplacementContext, PropertyReplacement } from "./types.js";
2
- /**
3
- * Applies the collected property replacements in reverse source order.
4
- * @param text Original object literal source text.
5
- * @param replacements Replacement operations for the object literal.
6
- * @param offset Absolute start offset of the object literal.
7
- * @returns Updated object literal source text.
8
- * @example
9
- * ```typescript
10
- * const objectText = applyTextReplacements(text, replacements, offset);
11
- * ```
12
- */
13
- declare function applyTextReplacements(text: string, replacements: readonly PropertyReplacement[], offset: number): string;
14
- /**
15
- * Builds the replacement entry when a property's source text must change.
16
- * @param context Data needed to rewrite one supported object property.
17
- * @returns Replacement details when the property text changes.
18
- * @example
19
- * ```typescript
20
- * const replacement = buildPropertyReplacement(context);
21
- * ```
22
- */
23
- declare function buildPropertyReplacement(context: BuildPropertyReplacementContext): PropertyReplacement | undefined;
24
- export { applyTextReplacements, buildPropertyReplacement };
25
- //# sourceMappingURL=replacement-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replacement-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+BAA+B,EAC/B,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAIjB;;;;;;;;;;GAUG;AACH,iBAAS,qBAAqB,CAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,mBAAmB,EAAE,EAC5C,MAAM,EAAE,MAAM,GACb,MAAM,CAaR;AAED;;;;;;;;GAQG;AACH,iBAAS,wBAAwB,CAC/B,OAAO,EAAE,+BAA+B,GACvC,mBAAmB,GAAG,SAAS,CAWjC;AAsFD,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC"}
@@ -1,96 +0,0 @@
1
- import { canUseShorthand, unwrapExpression } from "./ast-helpers.js";
2
- /**
3
- * Applies the collected property replacements in reverse source order.
4
- * @param text Original object literal source text.
5
- * @param replacements Replacement operations for the object literal.
6
- * @param offset Absolute start offset of the object literal.
7
- * @returns Updated object literal source text.
8
- * @example
9
- * ```typescript
10
- * const objectText = applyTextReplacements(text, replacements, offset);
11
- * ```
12
- */
13
- function applyTextReplacements(text, replacements, offset) {
14
- let currentText = text;
15
- for (const replacement of replacements.toSorted((left, right) => right.range[0] - left.range[0])) {
16
- const start = replacement.range[0] - offset;
17
- const end = replacement.range[1] - offset;
18
- currentText = `${currentText.slice(0, start)}${replacement.replacementText}${currentText.slice(end)}`;
19
- }
20
- return currentText;
21
- }
22
- /**
23
- * Builds the replacement entry when a property's source text must change.
24
- * @param context Data needed to rewrite one supported object property.
25
- * @returns Replacement details when the property text changes.
26
- * @example
27
- * ```typescript
28
- * const replacement = buildPropertyReplacement(context);
29
- * ```
30
- */
31
- function buildPropertyReplacement(context) {
32
- const replacementText = buildReplacementText(context);
33
- const propertyRange = context.property.range;
34
- const originalText = context.sourceText.slice(propertyRange[0], propertyRange[1]);
35
- return originalText === replacementText
36
- ? void 0
37
- : { range: propertyRange, replacementText };
38
- }
39
- /**
40
- * Builds the final source text for one object literal property.
41
- * @param context Property replacement context.
42
- * @returns Rewritten property text.
43
- * @example
44
- * ```typescript
45
- * const replacementText = buildReplacementText(context);
46
- * ```
47
- */
48
- function buildReplacementText(context) {
49
- const { keyName, moduleSpecifier, namespaceAlias, property, sourceText } = context;
50
- const baseValue = unwrapExpression(property.value);
51
- const baseValueText = sourceText.slice(baseValue.range[0], baseValue.range[1]);
52
- const keyText = sourceText.slice(property.key.range[0], property.key.range[1]);
53
- const needsCast = isPropertyCastRequired(context, baseValue);
54
- const valueText = needsCast
55
- ? `${baseValueText} as ${getPropertyTypeText(moduleSpecifier, keyName, namespaceAlias)}`
56
- : baseValueText;
57
- return canUseShorthand({ baseValue, keyName, needsCast, property })
58
- ? keyName
59
- : `${keyText}: ${valueText}`;
60
- }
61
- /**
62
- * Builds the imported property type expression used for a nested cast.
63
- * @param moduleSpecifier Static module specifier used by the mock.
64
- * @param keyName Property name being cast.
65
- * @param namespaceAlias Namespace alias for the module, when present.
66
- * @returns Type expression for the imported property.
67
- * @example
68
- * ```typescript
69
- * const propertyType = getPropertyTypeText("fixture-module", "parser");
70
- * ```
71
- */
72
- function getPropertyTypeText(moduleSpecifier, keyName, namespaceAlias) {
73
- const moduleReference = namespaceAlias === void 0
74
- ? `import(${JSON.stringify(moduleSpecifier)})`
75
- : namespaceAlias;
76
- return `typeof ${moduleReference}[${JSON.stringify(keyName)}]`;
77
- }
78
- /**
79
- * Determines whether a property value still needs a nested cast.
80
- * @param context Property replacement context.
81
- * @param baseValue Unwrapped property value expression.
82
- * @returns True when the property value is not assignable to the target type.
83
- * @example
84
- * ```typescript
85
- * const needsCast = isPropertyCastRequired(context, baseValue);
86
- * ```
87
- */
88
- function isPropertyCastRequired(context, baseValue) {
89
- const tsBaseValueNode = context.services.esTreeNodeToTSNodeMap.get(baseValue);
90
- const tsPropertyKeyNode = context.services.esTreeNodeToTSNodeMap.get(context.property.key);
91
- const sourceType = context.checker.getTypeAtLocation(tsBaseValueNode);
92
- const propertyTargetType = context.checker.getTypeOfSymbolAtLocation(context.targetPropertySymbol, tsPropertyKeyNode);
93
- return !context.checker.isTypeAssignableTo(sourceType, propertyTargetType);
94
- }
95
- export { applyTextReplacements, buildPropertyReplacement };
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZW1lbnQtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9wcmVmZXItdml0ZXN0LWluY3JlbWVudGFsLWNhc3RzL3JlcGxhY2VtZW50LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsSUFBWSxFQUNaLFlBQTRDLEVBQzVDLE1BQWM7SUFFZCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFdkIsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUM3QyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDaEQsRUFBRSxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFFMUMsV0FBVyxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDeEcsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsd0JBQXdCLENBQy9CLE9BQXdDO0lBRXhDLE1BQU0sZUFBZSxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE1B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Q0FBQztBQUVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xyXG4gIEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbiAgUHJvcGVydHlSZXBsYWNlbWVudCxcclxufSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuaW1wb3J0IHsgY2FuVXNlU2hvcnRoYW5kLCB1bndyYXBFeHByZXNzaW9uIH0gZnJvbSBcIi4vYXN0LWhlbHBlcnNcIjtcclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIHRoZSBjb2xsZWN0ZWQgcHJvcGVydHkgcmVwbGFjZW1lbnRzIGluIHJldmVyc2Ugc291cmNlIG9yZGVyLlxyXG4gKiBAcGFyYW0gdGV4dCBPcmlnaW5hbCBvYmplY3QgbGl0ZXJhbCBzb3VyY2UgdGV4dC5cclxuICogQHBhcmFtIHJlcGxhY2VtZW50cyBSZXBsYWNlbWVudCBvcGVyYXRpb25zIGZvciB0aGUgb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEBwYXJhbSBvZmZzZXQgQWJzb2x1dGUgc3RhcnQgb2Zmc2V0IG9mIHRoZSBvYmplY3QgbGl0ZXJhbC5cclxuICogQHJldHVybnMgVXBkYXRlZCBvYmplY3QgbGl0ZXJhbCBzb3VyY2UgdGV4dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBvYmplY3RUZXh0ID0gYXBwbHlUZXh0UmVwbGFjZW1lbnRzKHRleHQsIHJlcGxhY2VtZW50cywgb2Zmc2V0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBhcHBseVRleHRSZXBsYWNlbWVudHMoXHJcbiAgdGV4dDogc3RyaW5nLFxyXG4gIHJlcGxhY2VtZW50czogcmVhZG9ubHkgUHJvcGVydHlSZXBsYWNlbWVudFtdLFxyXG4gIG9mZnNldDogbnVtYmVyLFxyXG4pOiBzdHJpbmcge1xyXG4gIGxldCBjdXJyZW50VGV4dCA9IHRleHQ7XHJcblxyXG4gIGZvciAoY29uc3QgcmVwbGFjZW1lbnQgb2YgcmVwbGFjZW1lbnRzLnRvU29ydGVkKFxyXG4gICAgKGxlZnQsIHJpZ2h0KSA9PiByaWdodC5yYW5nZVswXSAtIGxlZnQucmFuZ2VbMF0sXHJcbiAgKSkge1xyXG4gICAgY29uc3Qgc3RhcnQgPSByZXBsYWNlbWVudC5yYW5nZVswXSAtIG9mZnNldDtcclxuICAgIGNvbnN0IGVuZCA9IHJlcGxhY2VtZW50LnJhbmdlWzFdIC0gb2Zmc2V0O1xyXG5cclxuICAgIGN1cnJlbnRUZXh0ID0gYCR7Y3VycmVudFRleHQuc2xpY2UoMCwgc3RhcnQpfSR7cmVwbGFjZW1lbnQucmVwbGFjZW1lbnRUZXh0fSR7Y3VycmVudFRleHQuc2xpY2UoZW5kKX1gO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGN1cnJlbnRUZXh0O1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSByZXBsYWNlbWVudCBlbnRyeSB3aGVuIGEgcHJvcGVydHkncyBzb3VyY2UgdGV4dCBtdXN0IGNoYW5nZS5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSBuZWVkZWQgdG8gcmV3cml0ZSBvbmUgc3VwcG9ydGVkIG9iamVjdCBwcm9wZXJ0eS5cclxuICogQHJldHVybnMgUmVwbGFjZW1lbnQgZGV0YWlscyB3aGVuIHRoZSBwcm9wZXJ0eSB0ZXh0IGNoYW5nZXMuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgcmVwbGFjZW1lbnQgPSBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnQoY29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50KFxyXG4gIGNvbnRleHQ6IEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbik6IFByb3BlcnR5UmVwbGFjZW1lbnQgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHJlcGxhY2VtZW50VGV4dCA9IGJ1aWxkUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQpO1xyXG4gIGNvbnN0IHByb3BlcnR5UmFuZ2UgPSBjb250ZXh0LnByb3BlcnR5LnJhbmdlO1xyXG4gIGNvbnN0IG9yaWdpbmFsVGV4dCA9IGNvbnRleHQuc291cmNlVGV4dC5zbGljZShcclxuICAgIHByb3BlcnR5UmFuZ2VbMF0sXHJcbiAgICBwcm9wZXJ0eVJhbmdlWzFdLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiBvcmlnaW5hbFRleHQgPT09IHJlcGxhY2VtZW50VGV4dFxyXG4gICAgPyB2b2lkIDBcclxuICAgIDogeyByYW5nZTogcHJvcGVydHlSYW5nZSwgcmVwbGFjZW1lbnRUZXh0IH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZHMgdGhlIGZpbmFsIHNvdXJjZSB0ZXh0IGZvciBvbmUgb2JqZWN0IGxpdGVyYWwgcHJvcGVydHkuXHJcbiAqIEBwYXJhbSBjb250ZXh0IFByb3BlcnR5IHJlcGxhY2VtZW50IGNvbnRleHQuXHJcbiAqIEByZXR1cm5zIFJld3JpdHRlbiBwcm9wZXJ0eSB0ZXh0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlcGxhY2VtZW50VGV4dCA9IGJ1aWxkUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGJ1aWxkUmVwbGFjZW1lbnRUZXh0KFxyXG4gIGNvbnRleHQ6IEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbik6IHN0cmluZyB7XHJcbiAgY29uc3QgeyBrZXlOYW1lLCBtb2R1bGVTcGVjaWZpZXIsIG5hbWVzcGFjZUFsaWFzLCBwcm9wZXJ0eSwgc291cmNlVGV4dCB9ID1cclxuICAgIGNvbnRleHQ7XHJcbiAgY29uc3QgYmFzZVZhbHVlID0gdW53cmFwRXhwcmVzc2lvbihwcm9wZXJ0eS52YWx1ZSk7XHJcbiAgY29uc3QgYmFzZVZhbHVlVGV4dCA9IHNvdXJjZVRleHQuc2xpY2UoXHJcbiAgICBiYXNlVmFsdWUucmFuZ2VbMF0sXHJcbiAgICBiYXNlVmFsdWUucmFuZ2VbMV0sXHJcbiAgKTtcclxuICBjb25zdCBrZXlUZXh0ID0gc291cmNlVGV4dC5zbGljZShcclxuICAgIHByb3BlcnR5LmtleS5yYW5nZVswXSxcclxuICAgIHByb3BlcnR5LmtleS5yYW5nZVsxXSxcclxuICApO1xyXG4gIGNvbnN0IG5lZWRzQ2FzdCA9IGlzUHJvcGVydHlDYXN0UmVxdWlyZWQoY29udGV4dCwgYmFzZVZhbHVlKTtcclxuICBjb25zdCB2YWx1ZVRleHQgPSBuZWVkc0Nhc3RcclxuICAgID8gYCR7YmFzZVZhbHVlVGV4dH0gYXMgJHtnZXRQcm9wZXJ0eVR5cGVUZXh0KG1vZHVsZVNwZWNpZmllciwga2V5TmFtZSwgbmFtZXNwYWNlQWxpYXMpfWBcclxuICAgIDogYmFzZVZhbHVlVGV4dDtcclxuXHJcbiAgcmV0dXJuIGNhblVzZVNob3J0aGFuZCh7IGJhc2VWYWx1ZSwga2V5TmFtZSwgbmVlZHNDYXN0LCBwcm9wZXJ0eSB9KVxyXG4gICAgPyBrZXlOYW1lXHJcbiAgICA6IGAke2tleVRleHR9OiAke3ZhbHVlVGV4dH1gO1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSBpbXBvcnRlZCBwcm9wZXJ0eSB0eXBlIGV4cHJlc3Npb24gdXNlZCBmb3IgYSBuZXN0ZWQgY2FzdC5cclxuICogQHBhcmFtIG1vZHVsZVNwZWNpZmllciBTdGF0aWMgbW9kdWxlIHNwZWNpZmllciB1c2VkIGJ5IHRoZSBtb2NrLlxyXG4gKiBAcGFyYW0ga2V5TmFtZSBQcm9wZXJ0eSBuYW1lIGJlaW5nIGNhc3QuXHJcbiAqIEBwYXJhbSBuYW1lc3BhY2VBbGlhcyBOYW1lc3BhY2UgYWxpYXMgZm9yIHRoZSBtb2R1bGUsIHdoZW4gcHJlc2VudC5cclxuICogQHJldHVybnMgVHlwZSBleHByZXNzaW9uIGZvciB0aGUgaW1wb3J0ZWQgcHJvcGVydHkuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgcHJvcGVydHlUeXBlID0gZ2V0UHJvcGVydHlUeXBlVGV4dChcImZpeHR1cmUtbW9kdWxlXCIsIFwicGFyc2VyXCIpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldFByb3BlcnR5VHlwZVRleHQoXHJcbiAgbW9kdWxlU3BlY2lmaWVyOiBzdHJpbmcsXHJcbiAga2V5TmFtZTogc3RyaW5nLFxyXG4gIG5hbWVzcGFjZUFsaWFzPzogc3RyaW5nLFxyXG4pOiBzdHJpbmcge1xyXG4gIGNvbnN0IG1vZHVsZVJlZmVyZW5jZSA9XHJcbiAgICBuYW1lc3BhY2VBbGlhcyA9PT0gdm9pZCAwXHJcbiAgICAgID8gYGltcG9ydCgke0pTT04uc3RyaW5naWZ5KG1vZHVsZVNwZWNpZmllcil9KWBcclxuICAgICAgOiBuYW1lc3BhY2VBbGlhcztcclxuXHJcbiAgcmV0dXJuIGB0eXBlb2YgJHttb2R1bGVSZWZlcmVuY2V9WyR7SlNPTi5zdHJpbmdpZnkoa2V5TmFtZSl9XWA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBwcm9wZXJ0eSB2YWx1ZSBzdGlsbCBuZWVkcyBhIG5lc3RlZCBjYXN0LlxyXG4gKiBAcGFyYW0gY29udGV4dCBQcm9wZXJ0eSByZXBsYWNlbWVudCBjb250ZXh0LlxyXG4gKiBAcGFyYW0gYmFzZVZhbHVlIFVud3JhcHBlZCBwcm9wZXJ0eSB2YWx1ZSBleHByZXNzaW9uLlxyXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHByb3BlcnR5IHZhbHVlIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHRoZSB0YXJnZXQgdHlwZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBuZWVkc0Nhc3QgPSBpc1Byb3BlcnR5Q2FzdFJlcXVpcmVkKGNvbnRleHQsIGJhc2VWYWx1ZSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNQcm9wZXJ0eUNhc3RSZXF1aXJlZChcclxuICBjb250ZXh0OiBCdWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0LFxyXG4gIGJhc2VWYWx1ZTogQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dFtcInByb3BlcnR5XCJdW1widmFsdWVcIl0sXHJcbik6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHRzQmFzZVZhbHVlTm9kZSA9IGNvbnRleHQuc2VydmljZXMuZXNUcmVlTm9kZVRvVFNOb2RlTWFwLmdldChiYXNlVmFsdWUpO1xyXG4gIGNvbnN0IHRzUHJvcGVydHlLZXlOb2RlID0gY29udGV4dC5zZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuZ2V0KFxyXG4gICAgY29udGV4dC5wcm9wZXJ0eS5rZXksXHJcbiAgKTtcclxuICBjb25zdCBzb3VyY2VUeXBlID0gY29udGV4dC5jaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKHRzQmFzZVZhbHVlTm9kZSk7XHJcbiAgY29uc3QgcHJvcGVydHlUYXJnZXRUeXBlID0gY29udGV4dC5jaGVja2VyLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oXHJcbiAgICBjb250ZXh0LnRhcmdldFByb3BlcnR5U3ltYm9sLFxyXG4gICAgdHNQcm9wZXJ0eUtleU5vZGUsXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuICFjb250ZXh0LmNoZWNrZXIuaXNUeXBlQXNzaWduYWJsZVRvKHNvdXJjZVR5cGUsIHByb3BlcnR5VGFyZ2V0VHlwZSk7XHJcbn1cclxuXHJcbmV4cG9ydCB7IGFwcGx5VGV4dFJlcGxhY2VtZW50cywgYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50IH07XHJcbiJdfQ==
@@ -1,32 +0,0 @@
1
- import type { Linter } from "eslint";
2
- /** Type definition for rule data. */
3
- interface FixRunResult {
4
- /** Lint messages produced during the run. */
5
- messages: Linter.LintMessage[];
6
- /** Output code after fixes. */
7
- output: string;
8
- }
9
- /**
10
- * Removes temporary fixture projects created during rule tests.
11
- * @returns Promise that resolves after cleanup completes.
12
- * @example
13
- * ```typescript
14
- * await cleanupTemporaryDirectories();
15
- * ```
16
- */
17
- declare const cleanupTemporaryDirectories: () => Promise<void>;
18
- /**
19
- * Runs the rule with autofix enabled inside a temporary typed fixture project.
20
- * @param code Source code passed to ESLint.
21
- * @param declarationText Ambient declarations used by the fixture project.
22
- * @returns Fixed output and lint messages.
23
- * @throws {Error} When ESLint does not return a lint result.
24
- * @example
25
- * ```typescript
26
- * const result = await runFix("vi.doMock(import(\"fixture-module\"), () => ({}));\n");
27
- * void result;
28
- * ```
29
- */
30
- declare const runFix: (code: string, declarationText?: string) => Promise<FixRunResult>;
31
- export { cleanupTemporaryDirectories, runFix };
32
- //# sourceMappingURL=rule-test-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rule-test-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAUrC,qCAAqC;AACrC,UAAU,YAAY;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAE/B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAgJD;;;;;;;GAOG;AACH,QAAA,MAAM,2BAA2B,QAAa,OAAO,CAAC,IAAI,CAQzD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,MAAM,GACV,MAAM,MAAM,EACZ,wBAAwC,KACvC,OAAO,CAAC,YAAY,CAuBtB,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC"}