eslint-plugin-typefest 1.0.1

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 (578) hide show
  1. package/CHANGELOG.md +1814 -0
  2. package/LICENSE +21 -0
  3. package/README.md +282 -0
  4. package/dist/_internal/array-like-expression.d.ts +67 -0
  5. package/dist/_internal/array-like-expression.d.ts.map +1 -0
  6. package/dist/_internal/array-like-expression.js +179 -0
  7. package/dist/_internal/array-like-expression.js.map +1 -0
  8. package/dist/_internal/array-method-call-rule.d.ts +34 -0
  9. package/dist/_internal/array-method-call-rule.d.ts.map +1 -0
  10. package/dist/_internal/array-method-call-rule.js +49 -0
  11. package/dist/_internal/array-method-call-rule.js.map +1 -0
  12. package/dist/_internal/ast-node.d.ts +23 -0
  13. package/dist/_internal/ast-node.d.ts.map +1 -0
  14. package/dist/_internal/ast-node.js +38 -0
  15. package/dist/_internal/ast-node.js.map +1 -0
  16. package/dist/_internal/bounded-cache.d.ts +42 -0
  17. package/dist/_internal/bounded-cache.d.ts.map +1 -0
  18. package/dist/_internal/bounded-cache.js +57 -0
  19. package/dist/_internal/bounded-cache.js.map +1 -0
  20. package/dist/_internal/constrained-type-at-location.d.ts +31 -0
  21. package/dist/_internal/constrained-type-at-location.d.ts.map +1 -0
  22. package/dist/_internal/constrained-type-at-location.js +61 -0
  23. package/dist/_internal/constrained-type-at-location.js.map +1 -0
  24. package/dist/_internal/cycle-safe-linked-search.d.ts +48 -0
  25. package/dist/_internal/cycle-safe-linked-search.d.ts.map +1 -0
  26. package/dist/_internal/cycle-safe-linked-search.js +70 -0
  27. package/dist/_internal/cycle-safe-linked-search.js.map +1 -0
  28. package/dist/_internal/expression-boolean-memoizer.d.ts +17 -0
  29. package/dist/_internal/expression-boolean-memoizer.d.ts.map +1 -0
  30. package/dist/_internal/expression-boolean-memoizer.js +23 -0
  31. package/dist/_internal/expression-boolean-memoizer.js.map +1 -0
  32. package/dist/_internal/filter-callback.d.ts +56 -0
  33. package/dist/_internal/filter-callback.d.ts.map +1 -0
  34. package/dist/_internal/filter-callback.js +100 -0
  35. package/dist/_internal/filter-callback.js.map +1 -0
  36. package/dist/_internal/global-identifier-member-call.d.ts +23 -0
  37. package/dist/_internal/global-identifier-member-call.d.ts.map +1 -0
  38. package/dist/_internal/global-identifier-member-call.js +25 -0
  39. package/dist/_internal/global-identifier-member-call.js.map +1 -0
  40. package/dist/_internal/global-member-call-rule.d.ts +36 -0
  41. package/dist/_internal/global-member-call-rule.d.ts.map +1 -0
  42. package/dist/_internal/global-member-call-rule.js +52 -0
  43. package/dist/_internal/global-member-call-rule.js.map +1 -0
  44. package/dist/_internal/import-analysis.d.ts +45 -0
  45. package/dist/_internal/import-analysis.d.ts.map +1 -0
  46. package/dist/_internal/import-analysis.js +113 -0
  47. package/dist/_internal/import-analysis.js.map +1 -0
  48. package/dist/_internal/import-aware-fixes.d.ts +31 -0
  49. package/dist/_internal/import-aware-fixes.d.ts.map +1 -0
  50. package/dist/_internal/import-aware-fixes.js +38 -0
  51. package/dist/_internal/import-aware-fixes.js.map +1 -0
  52. package/dist/_internal/import-fix-coordinator.d.ts +43 -0
  53. package/dist/_internal/import-fix-coordinator.d.ts.map +1 -0
  54. package/dist/_internal/import-fix-coordinator.js +71 -0
  55. package/dist/_internal/import-fix-coordinator.js.map +1 -0
  56. package/dist/_internal/import-insertion.d.ts +27 -0
  57. package/dist/_internal/import-insertion.d.ts.map +1 -0
  58. package/dist/_internal/import-insertion.js +295 -0
  59. package/dist/_internal/import-insertion.js.map +1 -0
  60. package/dist/_internal/imported-type-aliases.d.ts +140 -0
  61. package/dist/_internal/imported-type-aliases.d.ts.map +1 -0
  62. package/dist/_internal/imported-type-aliases.js +316 -0
  63. package/dist/_internal/imported-type-aliases.js.map +1 -0
  64. package/dist/_internal/imported-value-symbols.d.ts +157 -0
  65. package/dist/_internal/imported-value-symbols.d.ts.map +1 -0
  66. package/dist/_internal/imported-value-symbols.js +478 -0
  67. package/dist/_internal/imported-value-symbols.js.map +1 -0
  68. package/dist/_internal/member-call.d.ts +53 -0
  69. package/dist/_internal/member-call.d.ts.map +1 -0
  70. package/dist/_internal/member-call.js +48 -0
  71. package/dist/_internal/member-call.js.map +1 -0
  72. package/dist/_internal/module-source.d.ts +11 -0
  73. package/dist/_internal/module-source.d.ts.map +1 -0
  74. package/dist/_internal/module-source.js +11 -0
  75. package/dist/_internal/module-source.js.map +1 -0
  76. package/dist/_internal/normalize-expression-text.d.ts +26 -0
  77. package/dist/_internal/normalize-expression-text.d.ts.map +1 -0
  78. package/dist/_internal/normalize-expression-text.js +182 -0
  79. package/dist/_internal/normalize-expression-text.js.map +1 -0
  80. package/dist/_internal/nullish-comparison.d.ts +43 -0
  81. package/dist/_internal/nullish-comparison.d.ts.map +1 -0
  82. package/dist/_internal/nullish-comparison.js +147 -0
  83. package/dist/_internal/nullish-comparison.js.map +1 -0
  84. package/dist/_internal/plugin-settings.d.ts +32 -0
  85. package/dist/_internal/plugin-settings.d.ts.map +1 -0
  86. package/dist/_internal/plugin-settings.js +118 -0
  87. package/dist/_internal/plugin-settings.js.map +1 -0
  88. package/dist/_internal/report-adapter.d.ts +25 -0
  89. package/dist/_internal/report-adapter.d.ts.map +1 -0
  90. package/dist/_internal/report-adapter.js +36 -0
  91. package/dist/_internal/report-adapter.js.map +1 -0
  92. package/dist/_internal/rule-catalog.d.ts +51 -0
  93. package/dist/_internal/rule-catalog.d.ts.map +1 -0
  94. package/dist/_internal/rule-catalog.js +162 -0
  95. package/dist/_internal/rule-catalog.js.map +1 -0
  96. package/dist/_internal/rule-docs-metadata.d.ts +37 -0
  97. package/dist/_internal/rule-docs-metadata.d.ts.map +1 -0
  98. package/dist/_internal/rule-docs-metadata.js +192 -0
  99. package/dist/_internal/rule-docs-metadata.js.map +1 -0
  100. package/dist/_internal/rule-docs-url.d.ts +15 -0
  101. package/dist/_internal/rule-docs-url.d.ts.map +1 -0
  102. package/dist/_internal/rule-docs-url.js +15 -0
  103. package/dist/_internal/rule-docs-url.js.map +1 -0
  104. package/dist/_internal/rule-reporting.d.ts +71 -0
  105. package/dist/_internal/rule-reporting.d.ts.map +1 -0
  106. package/dist/_internal/rule-reporting.js +89 -0
  107. package/dist/_internal/rule-reporting.js.map +1 -0
  108. package/dist/_internal/rules-registry.d.ts +14 -0
  109. package/dist/_internal/rules-registry.d.ts.map +1 -0
  110. package/dist/_internal/rules-registry.js +165 -0
  111. package/dist/_internal/rules-registry.js.map +1 -0
  112. package/dist/_internal/safe-type-operation.d.ts +89 -0
  113. package/dist/_internal/safe-type-operation.d.ts.map +1 -0
  114. package/dist/_internal/safe-type-operation.js +147 -0
  115. package/dist/_internal/safe-type-operation.js.map +1 -0
  116. package/dist/_internal/scope-resolution.d.ts +20 -0
  117. package/dist/_internal/scope-resolution.d.ts.map +1 -0
  118. package/dist/_internal/scope-resolution.js +21 -0
  119. package/dist/_internal/scope-resolution.js.map +1 -0
  120. package/dist/_internal/scope-variable.d.ts +17 -0
  121. package/dist/_internal/scope-variable.d.ts.map +1 -0
  122. package/dist/_internal/scope-variable.js +30 -0
  123. package/dist/_internal/scope-variable.js.map +1 -0
  124. package/dist/_internal/set-membership.d.ts +6 -0
  125. package/dist/_internal/set-membership.d.ts.map +1 -0
  126. package/dist/_internal/set-membership.js +11 -0
  127. package/dist/_internal/set-membership.js.map +1 -0
  128. package/dist/_internal/text-character.d.ts +18 -0
  129. package/dist/_internal/text-character.d.ts.map +1 -0
  130. package/dist/_internal/text-character.js +69 -0
  131. package/dist/_internal/text-character.js.map +1 -0
  132. package/dist/_internal/throw-consequent.d.ts +22 -0
  133. package/dist/_internal/throw-consequent.d.ts.map +1 -0
  134. package/dist/_internal/throw-consequent.js +48 -0
  135. package/dist/_internal/throw-consequent.js.map +1 -0
  136. package/dist/_internal/throw-type-error.d.ts +19 -0
  137. package/dist/_internal/throw-type-error.d.ts.map +1 -0
  138. package/dist/_internal/throw-type-error.js +24 -0
  139. package/dist/_internal/throw-type-error.js.map +1 -0
  140. package/dist/_internal/type-checker-compat.d.ts +80 -0
  141. package/dist/_internal/type-checker-compat.d.ts.map +1 -0
  142. package/dist/_internal/type-checker-compat.js +104 -0
  143. package/dist/_internal/type-checker-compat.js.map +1 -0
  144. package/dist/_internal/type-predicate-autofix-safety.d.ts +20 -0
  145. package/dist/_internal/type-predicate-autofix-safety.d.ts.map +1 -0
  146. package/dist/_internal/type-predicate-autofix-safety.js +58 -0
  147. package/dist/_internal/type-predicate-autofix-safety.js.map +1 -0
  148. package/dist/_internal/type-reference-node.d.ts +19 -0
  149. package/dist/_internal/type-reference-node.d.ts.map +1 -0
  150. package/dist/_internal/type-reference-node.js +14 -0
  151. package/dist/_internal/type-reference-node.js.map +1 -0
  152. package/dist/_internal/typed-member-call-rule.d.ts +35 -0
  153. package/dist/_internal/typed-member-call-rule.d.ts.map +1 -0
  154. package/dist/_internal/typed-member-call-rule.js +50 -0
  155. package/dist/_internal/typed-member-call-rule.js.map +1 -0
  156. package/dist/_internal/typed-path-telemetry.d.ts +58 -0
  157. package/dist/_internal/typed-path-telemetry.d.ts.map +1 -0
  158. package/dist/_internal/typed-path-telemetry.js +114 -0
  159. package/dist/_internal/typed-path-telemetry.js.map +1 -0
  160. package/dist/_internal/typed-rule.d.ts +142 -0
  161. package/dist/_internal/typed-rule.d.ts.map +1 -0
  162. package/dist/_internal/typed-rule.js +197 -0
  163. package/dist/_internal/typed-rule.js.map +1 -0
  164. package/dist/_internal/typefest-config-references.d.ts +45 -0
  165. package/dist/_internal/typefest-config-references.d.ts.map +1 -0
  166. package/dist/_internal/typefest-config-references.js +98 -0
  167. package/dist/_internal/typefest-config-references.js.map +1 -0
  168. package/dist/_internal/typescript-eslint-node-autofix.d.ts +32 -0
  169. package/dist/_internal/typescript-eslint-node-autofix.d.ts.map +1 -0
  170. package/dist/_internal/typescript-eslint-node-autofix.js +495 -0
  171. package/dist/_internal/typescript-eslint-node-autofix.js.map +1 -0
  172. package/dist/_internal/value-rewrite-autofix-safety.d.ts +33 -0
  173. package/dist/_internal/value-rewrite-autofix-safety.d.ts.map +1 -0
  174. package/dist/_internal/value-rewrite-autofix-safety.js +103 -0
  175. package/dist/_internal/value-rewrite-autofix-safety.js.map +1 -0
  176. package/dist/plugin.cjs +9718 -0
  177. package/dist/plugin.cjs.map +7 -0
  178. package/dist/plugin.d.cts +76 -0
  179. package/dist/plugin.d.ts +76 -0
  180. package/dist/plugin.d.ts.map +1 -0
  181. package/dist/plugin.js +206 -0
  182. package/dist/plugin.js.map +1 -0
  183. package/dist/rules/prefer-ts-extras-array-at.d.ts +13 -0
  184. package/dist/rules/prefer-ts-extras-array-at.d.ts.map +1 -0
  185. package/dist/rules/prefer-ts-extras-array-at.js +66 -0
  186. package/dist/rules/prefer-ts-extras-array-at.js.map +1 -0
  187. package/dist/rules/prefer-ts-extras-array-concat.d.ts +13 -0
  188. package/dist/rules/prefer-ts-extras-array-concat.d.ts.map +1 -0
  189. package/dist/rules/prefer-ts-extras-array-concat.js +66 -0
  190. package/dist/rules/prefer-ts-extras-array-concat.js.map +1 -0
  191. package/dist/rules/prefer-ts-extras-array-find-last-index.d.ts +13 -0
  192. package/dist/rules/prefer-ts-extras-array-find-last-index.d.ts.map +1 -0
  193. package/dist/rules/prefer-ts-extras-array-find-last-index.js +63 -0
  194. package/dist/rules/prefer-ts-extras-array-find-last-index.js.map +1 -0
  195. package/dist/rules/prefer-ts-extras-array-find-last.d.ts +13 -0
  196. package/dist/rules/prefer-ts-extras-array-find-last.d.ts.map +1 -0
  197. package/dist/rules/prefer-ts-extras-array-find-last.js +66 -0
  198. package/dist/rules/prefer-ts-extras-array-find-last.js.map +1 -0
  199. package/dist/rules/prefer-ts-extras-array-find.d.ts +13 -0
  200. package/dist/rules/prefer-ts-extras-array-find.d.ts.map +1 -0
  201. package/dist/rules/prefer-ts-extras-array-find.js +63 -0
  202. package/dist/rules/prefer-ts-extras-array-find.js.map +1 -0
  203. package/dist/rules/prefer-ts-extras-array-first.d.ts +13 -0
  204. package/dist/rules/prefer-ts-extras-array-first.d.ts.map +1 -0
  205. package/dist/rules/prefer-ts-extras-array-first.js +107 -0
  206. package/dist/rules/prefer-ts-extras-array-first.js.map +1 -0
  207. package/dist/rules/prefer-ts-extras-array-includes.d.ts +13 -0
  208. package/dist/rules/prefer-ts-extras-array-includes.d.ts.map +1 -0
  209. package/dist/rules/prefer-ts-extras-array-includes.js +89 -0
  210. package/dist/rules/prefer-ts-extras-array-includes.js.map +1 -0
  211. package/dist/rules/prefer-ts-extras-array-join.d.ts +13 -0
  212. package/dist/rules/prefer-ts-extras-array-join.d.ts.map +1 -0
  213. package/dist/rules/prefer-ts-extras-array-join.js +66 -0
  214. package/dist/rules/prefer-ts-extras-array-join.js.map +1 -0
  215. package/dist/rules/prefer-ts-extras-array-last.d.ts +8 -0
  216. package/dist/rules/prefer-ts-extras-array-last.d.ts.map +1 -0
  217. package/dist/rules/prefer-ts-extras-array-last.js +132 -0
  218. package/dist/rules/prefer-ts-extras-array-last.js.map +1 -0
  219. package/dist/rules/prefer-ts-extras-as-writable.d.ts +13 -0
  220. package/dist/rules/prefer-ts-extras-as-writable.d.ts.map +1 -0
  221. package/dist/rules/prefer-ts-extras-as-writable.js +110 -0
  222. package/dist/rules/prefer-ts-extras-as-writable.js.map +1 -0
  223. package/dist/rules/prefer-ts-extras-assert-defined.d.ts +13 -0
  224. package/dist/rules/prefer-ts-extras-assert-defined.d.ts.map +1 -0
  225. package/dist/rules/prefer-ts-extras-assert-defined.js +182 -0
  226. package/dist/rules/prefer-ts-extras-assert-defined.js.map +1 -0
  227. package/dist/rules/prefer-ts-extras-assert-error.d.ts +13 -0
  228. package/dist/rules/prefer-ts-extras-assert-error.d.ts.map +1 -0
  229. package/dist/rules/prefer-ts-extras-assert-error.js +152 -0
  230. package/dist/rules/prefer-ts-extras-assert-error.js.map +1 -0
  231. package/dist/rules/prefer-ts-extras-assert-present.d.ts +13 -0
  232. package/dist/rules/prefer-ts-extras-assert-present.d.ts.map +1 -0
  233. package/dist/rules/prefer-ts-extras-assert-present.js +266 -0
  234. package/dist/rules/prefer-ts-extras-assert-present.js.map +1 -0
  235. package/dist/rules/prefer-ts-extras-is-defined-filter.d.ts +13 -0
  236. package/dist/rules/prefer-ts-extras-is-defined-filter.d.ts.map +1 -0
  237. package/dist/rules/prefer-ts-extras-is-defined-filter.js +90 -0
  238. package/dist/rules/prefer-ts-extras-is-defined-filter.js.map +1 -0
  239. package/dist/rules/prefer-ts-extras-is-defined.d.ts +13 -0
  240. package/dist/rules/prefer-ts-extras-is-defined.d.ts.map +1 -0
  241. package/dist/rules/prefer-ts-extras-is-defined.js +179 -0
  242. package/dist/rules/prefer-ts-extras-is-defined.js.map +1 -0
  243. package/dist/rules/prefer-ts-extras-is-empty.d.ts +13 -0
  244. package/dist/rules/prefer-ts-extras-is-empty.d.ts.map +1 -0
  245. package/dist/rules/prefer-ts-extras-is-empty.js +116 -0
  246. package/dist/rules/prefer-ts-extras-is-empty.js.map +1 -0
  247. package/dist/rules/prefer-ts-extras-is-equal-type.d.ts +13 -0
  248. package/dist/rules/prefer-ts-extras-is-equal-type.d.ts.map +1 -0
  249. package/dist/rules/prefer-ts-extras-is-equal-type.js +138 -0
  250. package/dist/rules/prefer-ts-extras-is-equal-type.js.map +1 -0
  251. package/dist/rules/prefer-ts-extras-is-finite.d.ts +13 -0
  252. package/dist/rules/prefer-ts-extras-is-finite.d.ts.map +1 -0
  253. package/dist/rules/prefer-ts-extras-is-finite.js +61 -0
  254. package/dist/rules/prefer-ts-extras-is-finite.js.map +1 -0
  255. package/dist/rules/prefer-ts-extras-is-infinite.d.ts +8 -0
  256. package/dist/rules/prefer-ts-extras-is-infinite.d.ts.map +1 -0
  257. package/dist/rules/prefer-ts-extras-is-infinite.js +178 -0
  258. package/dist/rules/prefer-ts-extras-is-infinite.js.map +1 -0
  259. package/dist/rules/prefer-ts-extras-is-integer.d.ts +13 -0
  260. package/dist/rules/prefer-ts-extras-is-integer.d.ts.map +1 -0
  261. package/dist/rules/prefer-ts-extras-is-integer.js +61 -0
  262. package/dist/rules/prefer-ts-extras-is-integer.js.map +1 -0
  263. package/dist/rules/prefer-ts-extras-is-present-filter.d.ts +13 -0
  264. package/dist/rules/prefer-ts-extras-is-present-filter.d.ts.map +1 -0
  265. package/dist/rules/prefer-ts-extras-is-present-filter.js +216 -0
  266. package/dist/rules/prefer-ts-extras-is-present-filter.js.map +1 -0
  267. package/dist/rules/prefer-ts-extras-is-present.d.ts +13 -0
  268. package/dist/rules/prefer-ts-extras-is-present.d.ts.map +1 -0
  269. package/dist/rules/prefer-ts-extras-is-present.js +217 -0
  270. package/dist/rules/prefer-ts-extras-is-present.js.map +1 -0
  271. package/dist/rules/prefer-ts-extras-is-safe-integer.d.ts +13 -0
  272. package/dist/rules/prefer-ts-extras-is-safe-integer.d.ts.map +1 -0
  273. package/dist/rules/prefer-ts-extras-is-safe-integer.js +61 -0
  274. package/dist/rules/prefer-ts-extras-is-safe-integer.js.map +1 -0
  275. package/dist/rules/prefer-ts-extras-key-in.d.ts +13 -0
  276. package/dist/rules/prefer-ts-extras-key-in.d.ts.map +1 -0
  277. package/dist/rules/prefer-ts-extras-key-in.js +124 -0
  278. package/dist/rules/prefer-ts-extras-key-in.js.map +1 -0
  279. package/dist/rules/prefer-ts-extras-not.d.ts +13 -0
  280. package/dist/rules/prefer-ts-extras-not.d.ts.map +1 -0
  281. package/dist/rules/prefer-ts-extras-not.js +136 -0
  282. package/dist/rules/prefer-ts-extras-not.js.map +1 -0
  283. package/dist/rules/prefer-ts-extras-object-entries.d.ts +13 -0
  284. package/dist/rules/prefer-ts-extras-object-entries.d.ts.map +1 -0
  285. package/dist/rules/prefer-ts-extras-object-entries.js +59 -0
  286. package/dist/rules/prefer-ts-extras-object-entries.js.map +1 -0
  287. package/dist/rules/prefer-ts-extras-object-from-entries.d.ts +13 -0
  288. package/dist/rules/prefer-ts-extras-object-from-entries.d.ts.map +1 -0
  289. package/dist/rules/prefer-ts-extras-object-from-entries.js +59 -0
  290. package/dist/rules/prefer-ts-extras-object-from-entries.js.map +1 -0
  291. package/dist/rules/prefer-ts-extras-object-has-in.d.ts +13 -0
  292. package/dist/rules/prefer-ts-extras-object-has-in.d.ts.map +1 -0
  293. package/dist/rules/prefer-ts-extras-object-has-in.js +79 -0
  294. package/dist/rules/prefer-ts-extras-object-has-in.js.map +1 -0
  295. package/dist/rules/prefer-ts-extras-object-has-own.d.ts +13 -0
  296. package/dist/rules/prefer-ts-extras-object-has-own.d.ts.map +1 -0
  297. package/dist/rules/prefer-ts-extras-object-has-own.js +82 -0
  298. package/dist/rules/prefer-ts-extras-object-has-own.js.map +1 -0
  299. package/dist/rules/prefer-ts-extras-object-keys.d.ts +13 -0
  300. package/dist/rules/prefer-ts-extras-object-keys.d.ts.map +1 -0
  301. package/dist/rules/prefer-ts-extras-object-keys.js +59 -0
  302. package/dist/rules/prefer-ts-extras-object-keys.js.map +1 -0
  303. package/dist/rules/prefer-ts-extras-object-values.d.ts +13 -0
  304. package/dist/rules/prefer-ts-extras-object-values.d.ts.map +1 -0
  305. package/dist/rules/prefer-ts-extras-object-values.js +59 -0
  306. package/dist/rules/prefer-ts-extras-object-values.js.map +1 -0
  307. package/dist/rules/prefer-ts-extras-safe-cast-to.d.ts +13 -0
  308. package/dist/rules/prefer-ts-extras-safe-cast-to.d.ts.map +1 -0
  309. package/dist/rules/prefer-ts-extras-safe-cast-to.js +159 -0
  310. package/dist/rules/prefer-ts-extras-safe-cast-to.js.map +1 -0
  311. package/dist/rules/prefer-ts-extras-set-has.d.ts +13 -0
  312. package/dist/rules/prefer-ts-extras-set-has.d.ts.map +1 -0
  313. package/dist/rules/prefer-ts-extras-set-has.js +304 -0
  314. package/dist/rules/prefer-ts-extras-set-has.js.map +1 -0
  315. package/dist/rules/prefer-ts-extras-string-split.d.ts +13 -0
  316. package/dist/rules/prefer-ts-extras-string-split.d.ts.map +1 -0
  317. package/dist/rules/prefer-ts-extras-string-split.js +166 -0
  318. package/dist/rules/prefer-ts-extras-string-split.js.map +1 -0
  319. package/dist/rules/prefer-type-fest-abstract-constructor.d.ts +13 -0
  320. package/dist/rules/prefer-type-fest-abstract-constructor.d.ts.map +1 -0
  321. package/dist/rules/prefer-type-fest-abstract-constructor.js +65 -0
  322. package/dist/rules/prefer-type-fest-abstract-constructor.js.map +1 -0
  323. package/dist/rules/prefer-type-fest-arrayable.d.ts +13 -0
  324. package/dist/rules/prefer-type-fest-arrayable.d.ts.map +1 -0
  325. package/dist/rules/prefer-type-fest-arrayable.js +123 -0
  326. package/dist/rules/prefer-type-fest-arrayable.js.map +1 -0
  327. package/dist/rules/prefer-type-fest-async-return-type.d.ts +13 -0
  328. package/dist/rules/prefer-type-fest-async-return-type.d.ts.map +1 -0
  329. package/dist/rules/prefer-type-fest-async-return-type.js +92 -0
  330. package/dist/rules/prefer-type-fest-async-return-type.js.map +1 -0
  331. package/dist/rules/prefer-type-fest-conditional-pick.d.ts +13 -0
  332. package/dist/rules/prefer-type-fest-conditional-pick.d.ts.map +1 -0
  333. package/dist/rules/prefer-type-fest-conditional-pick.js +74 -0
  334. package/dist/rules/prefer-type-fest-conditional-pick.js.map +1 -0
  335. package/dist/rules/prefer-type-fest-constructor.d.ts +13 -0
  336. package/dist/rules/prefer-type-fest-constructor.d.ts.map +1 -0
  337. package/dist/rules/prefer-type-fest-constructor.js +67 -0
  338. package/dist/rules/prefer-type-fest-constructor.js.map +1 -0
  339. package/dist/rules/prefer-type-fest-except.d.ts +13 -0
  340. package/dist/rules/prefer-type-fest-except.d.ts.map +1 -0
  341. package/dist/rules/prefer-type-fest-except.js +105 -0
  342. package/dist/rules/prefer-type-fest-except.js.map +1 -0
  343. package/dist/rules/prefer-type-fest-if.d.ts +13 -0
  344. package/dist/rules/prefer-type-fest-if.d.ts.map +1 -0
  345. package/dist/rules/prefer-type-fest-if.js +79 -0
  346. package/dist/rules/prefer-type-fest-if.js.map +1 -0
  347. package/dist/rules/prefer-type-fest-iterable-element.d.ts +13 -0
  348. package/dist/rules/prefer-type-fest-iterable-element.d.ts.map +1 -0
  349. package/dist/rules/prefer-type-fest-iterable-element.js +76 -0
  350. package/dist/rules/prefer-type-fest-iterable-element.js.map +1 -0
  351. package/dist/rules/prefer-type-fest-json-array.d.ts +13 -0
  352. package/dist/rules/prefer-type-fest-json-array.d.ts.map +1 -0
  353. package/dist/rules/prefer-type-fest-json-array.js +164 -0
  354. package/dist/rules/prefer-type-fest-json-array.js.map +1 -0
  355. package/dist/rules/prefer-type-fest-json-object.d.ts +13 -0
  356. package/dist/rules/prefer-type-fest-json-object.d.ts.map +1 -0
  357. package/dist/rules/prefer-type-fest-json-object.js +102 -0
  358. package/dist/rules/prefer-type-fest-json-object.js.map +1 -0
  359. package/dist/rules/prefer-type-fest-json-primitive.d.ts +13 -0
  360. package/dist/rules/prefer-type-fest-json-primitive.d.ts.map +1 -0
  361. package/dist/rules/prefer-type-fest-json-primitive.js +112 -0
  362. package/dist/rules/prefer-type-fest-json-primitive.js.map +1 -0
  363. package/dist/rules/prefer-type-fest-json-value.d.ts +13 -0
  364. package/dist/rules/prefer-type-fest-json-value.d.ts.map +1 -0
  365. package/dist/rules/prefer-type-fest-json-value.js +109 -0
  366. package/dist/rules/prefer-type-fest-json-value.js.map +1 -0
  367. package/dist/rules/prefer-type-fest-keys-of-union.d.ts +13 -0
  368. package/dist/rules/prefer-type-fest-keys-of-union.d.ts.map +1 -0
  369. package/dist/rules/prefer-type-fest-keys-of-union.js +74 -0
  370. package/dist/rules/prefer-type-fest-keys-of-union.js.map +1 -0
  371. package/dist/rules/prefer-type-fest-literal-union.d.ts +13 -0
  372. package/dist/rules/prefer-type-fest-literal-union.d.ts.map +1 -0
  373. package/dist/rules/prefer-type-fest-literal-union.js +181 -0
  374. package/dist/rules/prefer-type-fest-literal-union.js.map +1 -0
  375. package/dist/rules/prefer-type-fest-merge-exclusive.d.ts +13 -0
  376. package/dist/rules/prefer-type-fest-merge-exclusive.d.ts.map +1 -0
  377. package/dist/rules/prefer-type-fest-merge-exclusive.js +63 -0
  378. package/dist/rules/prefer-type-fest-merge-exclusive.js.map +1 -0
  379. package/dist/rules/prefer-type-fest-non-empty-tuple.d.ts +13 -0
  380. package/dist/rules/prefer-type-fest-non-empty-tuple.d.ts.map +1 -0
  381. package/dist/rules/prefer-type-fest-non-empty-tuple.js +133 -0
  382. package/dist/rules/prefer-type-fest-non-empty-tuple.js.map +1 -0
  383. package/dist/rules/prefer-type-fest-omit-index-signature.d.ts +13 -0
  384. package/dist/rules/prefer-type-fest-omit-index-signature.d.ts.map +1 -0
  385. package/dist/rules/prefer-type-fest-omit-index-signature.js +74 -0
  386. package/dist/rules/prefer-type-fest-omit-index-signature.js.map +1 -0
  387. package/dist/rules/prefer-type-fest-partial-deep.d.ts +13 -0
  388. package/dist/rules/prefer-type-fest-partial-deep.d.ts.map +1 -0
  389. package/dist/rules/prefer-type-fest-partial-deep.js +63 -0
  390. package/dist/rules/prefer-type-fest-partial-deep.js.map +1 -0
  391. package/dist/rules/prefer-type-fest-primitive.d.ts +13 -0
  392. package/dist/rules/prefer-type-fest-primitive.d.ts.map +1 -0
  393. package/dist/rules/prefer-type-fest-primitive.js +102 -0
  394. package/dist/rules/prefer-type-fest-primitive.js.map +1 -0
  395. package/dist/rules/prefer-type-fest-promisable.d.ts +13 -0
  396. package/dist/rules/prefer-type-fest-promisable.d.ts.map +1 -0
  397. package/dist/rules/prefer-type-fest-promisable.js +167 -0
  398. package/dist/rules/prefer-type-fest-promisable.js.map +1 -0
  399. package/dist/rules/prefer-type-fest-readonly-deep.d.ts +13 -0
  400. package/dist/rules/prefer-type-fest-readonly-deep.d.ts.map +1 -0
  401. package/dist/rules/prefer-type-fest-readonly-deep.js +63 -0
  402. package/dist/rules/prefer-type-fest-readonly-deep.js.map +1 -0
  403. package/dist/rules/prefer-type-fest-require-all-or-none.d.ts +13 -0
  404. package/dist/rules/prefer-type-fest-require-all-or-none.d.ts.map +1 -0
  405. package/dist/rules/prefer-type-fest-require-all-or-none.js +75 -0
  406. package/dist/rules/prefer-type-fest-require-all-or-none.js.map +1 -0
  407. package/dist/rules/prefer-type-fest-require-at-least-one.d.ts +13 -0
  408. package/dist/rules/prefer-type-fest-require-at-least-one.d.ts.map +1 -0
  409. package/dist/rules/prefer-type-fest-require-at-least-one.js +74 -0
  410. package/dist/rules/prefer-type-fest-require-at-least-one.js.map +1 -0
  411. package/dist/rules/prefer-type-fest-require-exactly-one.d.ts +13 -0
  412. package/dist/rules/prefer-type-fest-require-exactly-one.d.ts.map +1 -0
  413. package/dist/rules/prefer-type-fest-require-exactly-one.js +102 -0
  414. package/dist/rules/prefer-type-fest-require-exactly-one.js.map +1 -0
  415. package/dist/rules/prefer-type-fest-require-one-or-none.d.ts +13 -0
  416. package/dist/rules/prefer-type-fest-require-one-or-none.d.ts.map +1 -0
  417. package/dist/rules/prefer-type-fest-require-one-or-none.js +74 -0
  418. package/dist/rules/prefer-type-fest-require-one-or-none.js.map +1 -0
  419. package/dist/rules/prefer-type-fest-required-deep.d.ts +13 -0
  420. package/dist/rules/prefer-type-fest-required-deep.d.ts.map +1 -0
  421. package/dist/rules/prefer-type-fest-required-deep.js +63 -0
  422. package/dist/rules/prefer-type-fest-required-deep.js.map +1 -0
  423. package/dist/rules/prefer-type-fest-schema.d.ts +13 -0
  424. package/dist/rules/prefer-type-fest-schema.d.ts.map +1 -0
  425. package/dist/rules/prefer-type-fest-schema.js +74 -0
  426. package/dist/rules/prefer-type-fest-schema.js.map +1 -0
  427. package/dist/rules/prefer-type-fest-set-non-nullable.d.ts +13 -0
  428. package/dist/rules/prefer-type-fest-set-non-nullable.d.ts.map +1 -0
  429. package/dist/rules/prefer-type-fest-set-non-nullable.js +74 -0
  430. package/dist/rules/prefer-type-fest-set-non-nullable.js.map +1 -0
  431. package/dist/rules/prefer-type-fest-set-optional.d.ts +13 -0
  432. package/dist/rules/prefer-type-fest-set-optional.d.ts.map +1 -0
  433. package/dist/rules/prefer-type-fest-set-optional.js +74 -0
  434. package/dist/rules/prefer-type-fest-set-optional.js.map +1 -0
  435. package/dist/rules/prefer-type-fest-set-readonly.d.ts +13 -0
  436. package/dist/rules/prefer-type-fest-set-readonly.d.ts.map +1 -0
  437. package/dist/rules/prefer-type-fest-set-readonly.js +74 -0
  438. package/dist/rules/prefer-type-fest-set-readonly.js.map +1 -0
  439. package/dist/rules/prefer-type-fest-set-required.d.ts +13 -0
  440. package/dist/rules/prefer-type-fest-set-required.d.ts.map +1 -0
  441. package/dist/rules/prefer-type-fest-set-required.js +74 -0
  442. package/dist/rules/prefer-type-fest-set-required.js.map +1 -0
  443. package/dist/rules/prefer-type-fest-simplify.d.ts +13 -0
  444. package/dist/rules/prefer-type-fest-simplify.d.ts.map +1 -0
  445. package/dist/rules/prefer-type-fest-simplify.js +75 -0
  446. package/dist/rules/prefer-type-fest-simplify.js.map +1 -0
  447. package/dist/rules/prefer-type-fest-tagged-brands.d.ts +13 -0
  448. package/dist/rules/prefer-type-fest-tagged-brands.d.ts.map +1 -0
  449. package/dist/rules/prefer-type-fest-tagged-brands.js +174 -0
  450. package/dist/rules/prefer-type-fest-tagged-brands.js.map +1 -0
  451. package/dist/rules/prefer-type-fest-tuple-of.d.ts +14 -0
  452. package/dist/rules/prefer-type-fest-tuple-of.d.ts.map +1 -0
  453. package/dist/rules/prefer-type-fest-tuple-of.js +132 -0
  454. package/dist/rules/prefer-type-fest-tuple-of.js.map +1 -0
  455. package/dist/rules/prefer-type-fest-unknown-array.d.ts +13 -0
  456. package/dist/rules/prefer-type-fest-unknown-array.d.ts.map +1 -0
  457. package/dist/rules/prefer-type-fest-unknown-array.js +111 -0
  458. package/dist/rules/prefer-type-fest-unknown-array.js.map +1 -0
  459. package/dist/rules/prefer-type-fest-unknown-map.d.ts +13 -0
  460. package/dist/rules/prefer-type-fest-unknown-map.d.ts.map +1 -0
  461. package/dist/rules/prefer-type-fest-unknown-map.js +82 -0
  462. package/dist/rules/prefer-type-fest-unknown-map.js.map +1 -0
  463. package/dist/rules/prefer-type-fest-unknown-record.d.ts +13 -0
  464. package/dist/rules/prefer-type-fest-unknown-record.d.ts.map +1 -0
  465. package/dist/rules/prefer-type-fest-unknown-record.js +77 -0
  466. package/dist/rules/prefer-type-fest-unknown-record.js.map +1 -0
  467. package/dist/rules/prefer-type-fest-unknown-set.d.ts +13 -0
  468. package/dist/rules/prefer-type-fest-unknown-set.d.ts.map +1 -0
  469. package/dist/rules/prefer-type-fest-unknown-set.js +81 -0
  470. package/dist/rules/prefer-type-fest-unknown-set.js.map +1 -0
  471. package/dist/rules/prefer-type-fest-unwrap-tagged.d.ts +13 -0
  472. package/dist/rules/prefer-type-fest-unwrap-tagged.d.ts.map +1 -0
  473. package/dist/rules/prefer-type-fest-unwrap-tagged.js +74 -0
  474. package/dist/rules/prefer-type-fest-unwrap-tagged.js.map +1 -0
  475. package/dist/rules/prefer-type-fest-value-of.d.ts +13 -0
  476. package/dist/rules/prefer-type-fest-value-of.d.ts.map +1 -0
  477. package/dist/rules/prefer-type-fest-value-of.js +74 -0
  478. package/dist/rules/prefer-type-fest-value-of.js.map +1 -0
  479. package/dist/rules/prefer-type-fest-writable-deep.d.ts +13 -0
  480. package/dist/rules/prefer-type-fest-writable-deep.d.ts.map +1 -0
  481. package/dist/rules/prefer-type-fest-writable-deep.js +64 -0
  482. package/dist/rules/prefer-type-fest-writable-deep.js.map +1 -0
  483. package/dist/rules/prefer-type-fest-writable.d.ts +13 -0
  484. package/dist/rules/prefer-type-fest-writable.d.ts.map +1 -0
  485. package/dist/rules/prefer-type-fest-writable.js +129 -0
  486. package/dist/rules/prefer-type-fest-writable.js.map +1 -0
  487. package/docs/rules/getting-started.md +74 -0
  488. package/docs/rules/guides/adoption-checklist.md +37 -0
  489. package/docs/rules/guides/preset-selection-strategy.md +87 -0
  490. package/docs/rules/guides/rollout-and-fix-safety.md +42 -0
  491. package/docs/rules/guides/snapshot-testing.md +121 -0
  492. package/docs/rules/guides/type-aware-linting-readiness.md +105 -0
  493. package/docs/rules/overview.md +49 -0
  494. package/docs/rules/prefer-ts-extras-array-at.md +132 -0
  495. package/docs/rules/prefer-ts-extras-array-concat.md +138 -0
  496. package/docs/rules/prefer-ts-extras-array-find-last-index.md +108 -0
  497. package/docs/rules/prefer-ts-extras-array-find-last.md +108 -0
  498. package/docs/rules/prefer-ts-extras-array-find.md +108 -0
  499. package/docs/rules/prefer-ts-extras-array-first.md +132 -0
  500. package/docs/rules/prefer-ts-extras-array-includes.md +135 -0
  501. package/docs/rules/prefer-ts-extras-array-join.md +132 -0
  502. package/docs/rules/prefer-ts-extras-array-last.md +132 -0
  503. package/docs/rules/prefer-ts-extras-as-writable.md +124 -0
  504. package/docs/rules/prefer-ts-extras-assert-defined.md +140 -0
  505. package/docs/rules/prefer-ts-extras-assert-error.md +147 -0
  506. package/docs/rules/prefer-ts-extras-assert-present.md +139 -0
  507. package/docs/rules/prefer-ts-extras-is-defined-filter.md +125 -0
  508. package/docs/rules/prefer-ts-extras-is-defined.md +147 -0
  509. package/docs/rules/prefer-ts-extras-is-empty.md +142 -0
  510. package/docs/rules/prefer-ts-extras-is-equal-type.md +144 -0
  511. package/docs/rules/prefer-ts-extras-is-finite.md +116 -0
  512. package/docs/rules/prefer-ts-extras-is-infinite.md +134 -0
  513. package/docs/rules/prefer-ts-extras-is-integer.md +116 -0
  514. package/docs/rules/prefer-ts-extras-is-present-filter.md +125 -0
  515. package/docs/rules/prefer-ts-extras-is-present.md +143 -0
  516. package/docs/rules/prefer-ts-extras-is-safe-integer.md +116 -0
  517. package/docs/rules/prefer-ts-extras-key-in.md +150 -0
  518. package/docs/rules/prefer-ts-extras-not.md +138 -0
  519. package/docs/rules/prefer-ts-extras-object-entries.md +130 -0
  520. package/docs/rules/prefer-ts-extras-object-from-entries.md +131 -0
  521. package/docs/rules/prefer-ts-extras-object-has-in.md +141 -0
  522. package/docs/rules/prefer-ts-extras-object-has-own.md +137 -0
  523. package/docs/rules/prefer-ts-extras-object-keys.md +127 -0
  524. package/docs/rules/prefer-ts-extras-object-values.md +128 -0
  525. package/docs/rules/prefer-ts-extras-safe-cast-to.md +130 -0
  526. package/docs/rules/prefer-ts-extras-set-has.md +203 -0
  527. package/docs/rules/prefer-ts-extras-string-split.md +133 -0
  528. package/docs/rules/prefer-type-fest-abstract-constructor.md +87 -0
  529. package/docs/rules/prefer-type-fest-arrayable.md +127 -0
  530. package/docs/rules/prefer-type-fest-async-return-type.md +117 -0
  531. package/docs/rules/prefer-type-fest-conditional-pick.md +140 -0
  532. package/docs/rules/prefer-type-fest-constructor.md +87 -0
  533. package/docs/rules/prefer-type-fest-except.md +231 -0
  534. package/docs/rules/prefer-type-fest-if.md +217 -0
  535. package/docs/rules/prefer-type-fest-iterable-element.md +170 -0
  536. package/docs/rules/prefer-type-fest-json-array.md +107 -0
  537. package/docs/rules/prefer-type-fest-json-object.md +107 -0
  538. package/docs/rules/prefer-type-fest-json-primitive.md +105 -0
  539. package/docs/rules/prefer-type-fest-json-value.md +107 -0
  540. package/docs/rules/prefer-type-fest-keys-of-union.md +139 -0
  541. package/docs/rules/prefer-type-fest-literal-union.md +118 -0
  542. package/docs/rules/prefer-type-fest-merge-exclusive.md +118 -0
  543. package/docs/rules/prefer-type-fest-non-empty-tuple.md +115 -0
  544. package/docs/rules/prefer-type-fest-omit-index-signature.md +196 -0
  545. package/docs/rules/prefer-type-fest-partial-deep.md +133 -0
  546. package/docs/rules/prefer-type-fest-primitive.md +106 -0
  547. package/docs/rules/prefer-type-fest-promisable.md +246 -0
  548. package/docs/rules/prefer-type-fest-readonly-deep.md +151 -0
  549. package/docs/rules/prefer-type-fest-require-all-or-none.md +149 -0
  550. package/docs/rules/prefer-type-fest-require-at-least-one.md +155 -0
  551. package/docs/rules/prefer-type-fest-require-exactly-one.md +240 -0
  552. package/docs/rules/prefer-type-fest-require-one-or-none.md +165 -0
  553. package/docs/rules/prefer-type-fest-required-deep.md +123 -0
  554. package/docs/rules/prefer-type-fest-schema.md +161 -0
  555. package/docs/rules/prefer-type-fest-set-non-nullable.md +145 -0
  556. package/docs/rules/prefer-type-fest-set-optional.md +133 -0
  557. package/docs/rules/prefer-type-fest-set-readonly.md +136 -0
  558. package/docs/rules/prefer-type-fest-set-required.md +140 -0
  559. package/docs/rules/prefer-type-fest-simplify.md +168 -0
  560. package/docs/rules/prefer-type-fest-tagged-brands.md +278 -0
  561. package/docs/rules/prefer-type-fest-tuple-of.md +250 -0
  562. package/docs/rules/prefer-type-fest-unknown-array.md +126 -0
  563. package/docs/rules/prefer-type-fest-unknown-map.md +123 -0
  564. package/docs/rules/prefer-type-fest-unknown-record.md +130 -0
  565. package/docs/rules/prefer-type-fest-unknown-set.md +123 -0
  566. package/docs/rules/prefer-type-fest-unwrap-tagged.md +133 -0
  567. package/docs/rules/prefer-type-fest-value-of.md +121 -0
  568. package/docs/rules/prefer-type-fest-writable-deep.md +113 -0
  569. package/docs/rules/prefer-type-fest-writable.md +139 -0
  570. package/docs/rules/presets/all.md +102 -0
  571. package/docs/rules/presets/index.md +124 -0
  572. package/docs/rules/presets/minimal.md +37 -0
  573. package/docs/rules/presets/recommended-type-checked.md +37 -0
  574. package/docs/rules/presets/recommended.md +116 -0
  575. package/docs/rules/presets/strict.md +98 -0
  576. package/docs/rules/presets/ts-extras-type-guards.md +45 -0
  577. package/docs/rules/presets/type-fest-types.md +68 -0
  578. package/package.json +574 -0
@@ -0,0 +1,478 @@
1
+ import { arrayJoin, setHas } from "ts-extras";
2
+ import { collectNamedImportLocalNamesByImportedNameFromSource, isImportDeclarationFromSource, } from "./import-analysis.js";
3
+ import { createImportAwareFixes, } from "./import-aware-fixes.js";
4
+ import { resolveImportInsertionDecisionForReportFix, } from "./import-fix-coordinator.js";
5
+ import { createImportInsertionFix } from "./import-insertion.js";
6
+ import { getScopeFromContextSourceCode } from "./scope-resolution.js";
7
+ import { getVariableInScopeChain } from "./scope-variable.js";
8
+ const getImportDeclarationParent = (node) => {
9
+ const nodeParent = node.parent;
10
+ if (nodeParent?.type !== "ImportDeclaration") {
11
+ return null;
12
+ }
13
+ return nodeParent;
14
+ };
15
+ const getFirstImportedAliasName = ({ importedName, imports, }) => {
16
+ const candidateNames = imports.get(importedName);
17
+ if (!candidateNames || candidateNames.size === 0) {
18
+ return null;
19
+ }
20
+ if (setHas(candidateNames, importedName)) {
21
+ return importedName;
22
+ }
23
+ const [firstCandidateName] = candidateNames;
24
+ return firstCandidateName ?? null;
25
+ };
26
+ const resolveReferenceScope = ({ context, referenceNode, }) => getScopeFromContextSourceCode(context, referenceNode);
27
+ /**
28
+ * Coordination decision used when import insertion is not required.
29
+ */
30
+ const NO_IMPORT_INSERTION_NEEDED_DECISION = {
31
+ allowReplacementWithoutImportInsertion: true,
32
+ shouldIncludeImportInsertionFix: false,
33
+ };
34
+ /**
35
+ * Collect direct named value imports from a specific module.
36
+ *
37
+ * @param sourceCode - Source code object for the current file.
38
+ * @param sourceModuleName - Module source string to match.
39
+ *
40
+ * @returns Readonly map of imported symbol names to local aliases.
41
+ */
42
+ export const collectDirectNamedValueImportsFromSource = (sourceCode, sourceModuleName) => collectNamedImportLocalNamesByImportedNameFromSource({
43
+ allowTypeImportDeclaration: false,
44
+ allowTypeImportSpecifier: false,
45
+ sourceCode,
46
+ sourceModuleName,
47
+ });
48
+ /**
49
+ * Verify that a local identifier resolves to an import binding from the
50
+ * expected module at a specific reference location.
51
+ *
52
+ * @param sourceCode - SourceCode instance for scope resolution.
53
+ * @param referenceNode - AST node where the identifier will be referenced.
54
+ * @param localName - Candidate local alias name.
55
+ * @param sourceModuleName - Expected source module for the import binding.
56
+ *
57
+ * @returns `true` when the resolved local name is a matching import binding
58
+ * from the expected module.
59
+ */
60
+ function isLocalNameBoundToExpectedImport(sourceScope, localName, sourceModuleName) {
61
+ const variable = getVariableInScopeChain(sourceScope, localName);
62
+ if (!variable) {
63
+ return false;
64
+ }
65
+ return variable.defs.some((definition) => {
66
+ if (definition.type !== "ImportBinding") {
67
+ return false;
68
+ }
69
+ const definitionNode = definition.node;
70
+ if (definitionNode.type !== "ImportSpecifier") {
71
+ return false;
72
+ }
73
+ const parentImportDeclaration = getImportDeclarationParent(definitionNode);
74
+ return (parentImportDeclaration !== null &&
75
+ isImportDeclarationFromSource(parentImportDeclaration, sourceModuleName));
76
+ });
77
+ }
78
+ /**
79
+ * Determine whether using the direct imported symbol name is safe at a
80
+ * reference node without colliding with non-import bindings.
81
+ *
82
+ * @param options - Resolution inputs used to test direct-name safety.
83
+ *
84
+ * @returns `true` when using the bare imported symbol name would resolve to the
85
+ * expected import binding at the reference location.
86
+ */
87
+ const canUseDirectImportedNameSafely = ({ importedName, sourceModuleName, sourceScope, }) => {
88
+ const variable = getVariableInScopeChain(sourceScope, importedName);
89
+ if (!variable) {
90
+ return true;
91
+ }
92
+ return variable.defs.some((definition) => {
93
+ if (definition.type !== "ImportBinding") {
94
+ return false;
95
+ }
96
+ const definitionNode = definition.node;
97
+ if (definitionNode.type !== "ImportSpecifier") {
98
+ return false;
99
+ }
100
+ if (definitionNode.local.name !== importedName) {
101
+ return false;
102
+ }
103
+ const parentImportDeclaration = getImportDeclarationParent(definitionNode);
104
+ return (parentImportDeclaration !== null &&
105
+ isImportDeclarationFromSource(parentImportDeclaration, sourceModuleName) &&
106
+ parentImportDeclaration.importKind !== "type" &&
107
+ definitionNode.importKind !== "type");
108
+ });
109
+ };
110
+ /**
111
+ * Create a fixer that inserts a missing named value import for the target
112
+ * module.
113
+ *
114
+ * @param options - Fixer context and import metadata.
115
+ *
116
+ * @returns Import insertion fix when a safe insertion point is found; otherwise
117
+ * `null`.
118
+ */
119
+ const createInsertNamedValueImportFix = ({ fixer, importedName, referenceNode, sourceModuleName, }) => {
120
+ const importDeclarationText = `import { ${importedName} } from "${sourceModuleName}";`;
121
+ return createImportInsertionFix({
122
+ fixer,
123
+ importDeclarationText,
124
+ moduleSpecifierHint: sourceModuleName,
125
+ referenceNode,
126
+ });
127
+ };
128
+ /**
129
+ * Resolve a local alias that is safely bound to the expected import at a
130
+ * reference node.
131
+ *
132
+ * @param options - Context and import metadata for local-name resolution.
133
+ *
134
+ * @returns Local alias when safely resolved; otherwise `null`.
135
+ */
136
+ function getSafeLocalNameForImportedValueInScope({ importedName, imports, sourceModuleName, sourceScope, }) {
137
+ const candidateNames = imports.get(importedName);
138
+ if (!candidateNames || candidateNames.size === 0) {
139
+ return null;
140
+ }
141
+ for (const candidateName of candidateNames) {
142
+ if (isLocalNameBoundToExpectedImport(sourceScope, candidateName, sourceModuleName)) {
143
+ return candidateName;
144
+ }
145
+ }
146
+ return null;
147
+ }
148
+ /**
149
+ * Resolve a safe local alias for a required imported value at one reference.
150
+ *
151
+ * @param options - Rule context, import alias map, and target reference
152
+ * metadata.
153
+ *
154
+ * @returns Local alias when the current scope binds it to the expected module;
155
+ * otherwise `null`.
156
+ */
157
+ export const getSafeLocalNameForImportedValue = ({ context, importedName, imports, referenceNode, sourceModuleName, }) => {
158
+ const sourceScope = resolveReferenceScope({
159
+ context,
160
+ referenceNode,
161
+ });
162
+ if (sourceScope === null) {
163
+ return getFirstImportedAliasName({
164
+ importedName,
165
+ imports,
166
+ });
167
+ }
168
+ return getSafeLocalNameForImportedValueInScope({
169
+ importedName,
170
+ imports,
171
+ sourceModuleName,
172
+ sourceScope,
173
+ });
174
+ };
175
+ /**
176
+ * Resolve a safe replacement symbol and corresponding optional import-insert
177
+ * factory for value replacements.
178
+ *
179
+ * @param options - Context and import metadata used to resolve a safe
180
+ * replacement name.
181
+ *
182
+ * @returns Replacement metadata with optional import-fix factory when safe;
183
+ * otherwise `null`.
184
+ */
185
+ const getSafeReplacementNameAndImportFixFactory = ({ context, importedName, imports, referenceNode, sourceModuleName, }) => {
186
+ const sourceScope = resolveReferenceScope({
187
+ context,
188
+ referenceNode,
189
+ });
190
+ if (sourceScope === null) {
191
+ const fallbackLocalName = getFirstImportedAliasName({
192
+ importedName,
193
+ imports,
194
+ });
195
+ if (fallbackLocalName === null) {
196
+ return null;
197
+ }
198
+ return {
199
+ createImportFix: () => null,
200
+ replacementName: fallbackLocalName,
201
+ requiresImportInsertion: false,
202
+ };
203
+ }
204
+ const existingReplacementName = getSafeLocalNameForImportedValueInScope({
205
+ importedName,
206
+ imports,
207
+ sourceModuleName,
208
+ sourceScope,
209
+ });
210
+ if (typeof existingReplacementName === "string" &&
211
+ existingReplacementName.length > 0) {
212
+ return {
213
+ createImportFix: () => null,
214
+ replacementName: existingReplacementName,
215
+ requiresImportInsertion: false,
216
+ };
217
+ }
218
+ if (!canUseDirectImportedNameSafely({
219
+ importedName,
220
+ sourceModuleName,
221
+ sourceScope,
222
+ })) {
223
+ return null;
224
+ }
225
+ return {
226
+ createImportFix: (fixer) => createInsertNamedValueImportFix({
227
+ fixer,
228
+ importedName,
229
+ referenceNode,
230
+ sourceModuleName,
231
+ }),
232
+ replacementName: importedName,
233
+ requiresImportInsertion: true,
234
+ };
235
+ };
236
+ /**
237
+ * Resolve and coordinate import planning for value replacement fixers.
238
+ */
239
+ const createValueReplacementPlan = ({ context, importedName, imports, referenceNode, reportFixIntent, sourceModuleName, }) => {
240
+ const replacementNameAndImportFixFactory = getSafeReplacementNameAndImportFixFactory({
241
+ context,
242
+ importedName,
243
+ imports,
244
+ referenceNode,
245
+ sourceModuleName,
246
+ });
247
+ if (replacementNameAndImportFixFactory === null) {
248
+ return null;
249
+ }
250
+ const importInsertionDecision = replacementNameAndImportFixFactory.requiresImportInsertion
251
+ ? resolveImportInsertionDecisionForReportFix({
252
+ importBindingKind: "value",
253
+ importedName,
254
+ referenceNode,
255
+ reportFixIntent,
256
+ sourceModuleName,
257
+ })
258
+ : NO_IMPORT_INSERTION_NEEDED_DECISION;
259
+ return {
260
+ importInsertionDecision,
261
+ replacementNameAndImportFixFactory,
262
+ reportFixIntent,
263
+ };
264
+ };
265
+ /**
266
+ * Build a report-fix callback from a resolved value replacement plan.
267
+ */
268
+ const createReportFixFromValueReplacementPlan = ({ autofixImportInsertionStrategy, createReplacementFix, valueReplacementPlan, }) => (fixer) => createImportAwareFixes({
269
+ autofixImportInsertionStrategy,
270
+ createImportFix: valueReplacementPlan.replacementNameAndImportFixFactory
271
+ .createImportFix,
272
+ createReplacementFix: (replacementFixer) => createReplacementFix(replacementFixer, valueReplacementPlan.replacementNameAndImportFixFactory
273
+ .replacementName),
274
+ fixer,
275
+ importInsertionDecision: valueReplacementPlan.importInsertionDecision,
276
+ reportFixIntent: valueReplacementPlan.reportFixIntent,
277
+ requiresImportInsertion: valueReplacementPlan.replacementNameAndImportFixFactory
278
+ .requiresImportInsertion,
279
+ });
280
+ /**
281
+ * Serialize a call argument node to text, preserving sequence-expression
282
+ * semantics with parentheses when required.
283
+ *
284
+ * @param options - Argument node and source-code accessor.
285
+ *
286
+ * @returns Trimmed argument text suitable for function-call insertion, or
287
+ * `null` when no text can be produced.
288
+ */
289
+ export const getFunctionCallArgumentText = ({ argumentNode, sourceCode, }) => {
290
+ const argumentText = sourceCode.getText(argumentNode).trim();
291
+ if (argumentText.length === 0) {
292
+ return null;
293
+ }
294
+ if (argumentNode.type !== "SequenceExpression") {
295
+ return argumentText;
296
+ }
297
+ if (argumentText.startsWith("(") && argumentText.endsWith(")")) {
298
+ return argumentText;
299
+ }
300
+ return `(${argumentText})`;
301
+ };
302
+ /**
303
+ * Create a fixer that safely replaces a target node with a resolved local
304
+ * import alias.
305
+ *
306
+ * @param options - Inputs used to resolve replacement/import insertion safety.
307
+ *
308
+ * @returns A report fixer when safe; otherwise `null`.
309
+ */
310
+ export const createSafeValueReferenceReplacementFix = ({ context, importedName, imports, reportFixIntent = "autofix", sourceModuleName, targetNode, }) => {
311
+ const valueReplacementPlan = createValueReplacementPlan({
312
+ context,
313
+ importedName,
314
+ imports,
315
+ referenceNode: targetNode,
316
+ reportFixIntent,
317
+ sourceModuleName,
318
+ });
319
+ if (valueReplacementPlan === null) {
320
+ return null;
321
+ }
322
+ return createReportFixFromValueReplacementPlan({
323
+ createReplacementFix: (replacementFixer, replacementName) => replacementFixer.replaceText(targetNode, replacementName),
324
+ valueReplacementPlan,
325
+ });
326
+ };
327
+ /**
328
+ * Create a fixer that safely rewrites a target node using custom replacement
329
+ * text derived from a resolved helper local name.
330
+ *
331
+ * @param options - Inputs for safe helper-name resolution and replacement-text
332
+ * generation.
333
+ *
334
+ * @returns A report fixer when safe; otherwise `null`.
335
+ */
336
+ export const createSafeValueNodeTextReplacementFix = ({ context, importedName, imports, replacementTextFactory, reportFixIntent = "autofix", sourceModuleName, targetNode, }) => {
337
+ const valueReplacementPlan = createValueReplacementPlan({
338
+ context,
339
+ importedName,
340
+ imports,
341
+ referenceNode: targetNode,
342
+ reportFixIntent,
343
+ sourceModuleName,
344
+ });
345
+ if (valueReplacementPlan === null) {
346
+ return null;
347
+ }
348
+ return createReportFixFromValueReplacementPlan({
349
+ createReplacementFix: (replacementFixer, replacementName) => replacementFixer.replaceText(targetNode, replacementTextFactory(replacementName)),
350
+ valueReplacementPlan,
351
+ });
352
+ };
353
+ /**
354
+ * Create a fixer that rewrites `receiver.method(args...)` to
355
+ * `importedFn(receiver, args...)`.
356
+ *
357
+ * @returns A report fixer when safe; otherwise `null`.
358
+ */
359
+ export const createMethodToFunctionCallFix = ({ callNode, context, importedName, imports, reportFixIntent = "autofix", sourceModuleName, }) => {
360
+ if (callNode.optional || callNode.callee.type !== "MemberExpression") {
361
+ return null;
362
+ }
363
+ if (callNode.callee.optional) {
364
+ return null;
365
+ }
366
+ if (callNode.callee.object.type === "Super") {
367
+ return null;
368
+ }
369
+ const valueReplacementPlan = createValueReplacementPlan({
370
+ context,
371
+ importedName,
372
+ imports,
373
+ referenceNode: callNode,
374
+ reportFixIntent,
375
+ sourceModuleName,
376
+ });
377
+ if (valueReplacementPlan === null) {
378
+ return null;
379
+ }
380
+ const { sourceCode } = context;
381
+ const receiverText = getFunctionCallArgumentText({
382
+ argumentNode: callNode.callee.object,
383
+ sourceCode,
384
+ });
385
+ if (receiverText === null) {
386
+ return null;
387
+ }
388
+ const argumentTexts = [];
389
+ for (const argument of callNode.arguments) {
390
+ const argumentText = getFunctionCallArgumentText({
391
+ argumentNode: argument,
392
+ sourceCode,
393
+ });
394
+ if (argumentText === null) {
395
+ return null;
396
+ }
397
+ argumentTexts.push(argumentText);
398
+ }
399
+ const argumentText = arrayJoin(argumentTexts, ", ");
400
+ const replacementText = argumentText.length > 0
401
+ ? `${valueReplacementPlan.replacementNameAndImportFixFactory.replacementName}(${receiverText}, ${argumentText})`
402
+ : `${valueReplacementPlan.replacementNameAndImportFixFactory.replacementName}(${receiverText})`;
403
+ return createReportFixFromValueReplacementPlan({
404
+ createReplacementFix: (replacementFixer) => replacementFixer.replaceText(callNode, replacementText),
405
+ valueReplacementPlan,
406
+ });
407
+ };
408
+ /**
409
+ * Create a fixer that rewrites `receiver[member]` to `importedFn(receiver)`.
410
+ *
411
+ * @returns A report fixer when safe; otherwise `null`.
412
+ */
413
+ export const createMemberToFunctionCallFix = ({ context, importedName, imports, memberNode, reportFixIntent = "autofix", sourceModuleName, }) => {
414
+ if (memberNode.optional) {
415
+ return null;
416
+ }
417
+ if (memberNode.object.type === "Super") {
418
+ return null;
419
+ }
420
+ const valueReplacementPlan = createValueReplacementPlan({
421
+ context,
422
+ importedName,
423
+ imports,
424
+ referenceNode: memberNode,
425
+ reportFixIntent,
426
+ sourceModuleName,
427
+ });
428
+ if (valueReplacementPlan === null) {
429
+ return null;
430
+ }
431
+ const receiverText = getFunctionCallArgumentText({
432
+ argumentNode: memberNode.object,
433
+ sourceCode: context.sourceCode,
434
+ });
435
+ if (receiverText === null) {
436
+ return null;
437
+ }
438
+ const replacementText = `${valueReplacementPlan.replacementNameAndImportFixFactory.replacementName}(${receiverText})`;
439
+ return createReportFixFromValueReplacementPlan({
440
+ createReplacementFix: (replacementFixer) => replacementFixer.replaceText(memberNode, replacementText),
441
+ valueReplacementPlan,
442
+ });
443
+ };
444
+ /**
445
+ * Create a fixer that rewrites a target node to an imported helper invocation.
446
+ *
447
+ * @param options - Target/argument nodes and import metadata for call
448
+ *
449
+ * @returns A report fixer when safe; otherwise `null`.
450
+ */
451
+ export const createSafeValueArgumentFunctionCallFix = ({ argumentNode, autofixImportInsertionStrategy, context, importedName, imports, negated, reportFixIntent = "autofix", sourceModuleName, targetNode, }) => {
452
+ const valueReplacementPlan = createValueReplacementPlan({
453
+ context,
454
+ importedName,
455
+ imports,
456
+ referenceNode: targetNode,
457
+ reportFixIntent,
458
+ sourceModuleName,
459
+ });
460
+ if (valueReplacementPlan === null) {
461
+ return null;
462
+ }
463
+ const argumentText = getFunctionCallArgumentText({
464
+ argumentNode,
465
+ sourceCode: context.sourceCode,
466
+ });
467
+ if (argumentText === null) {
468
+ return null;
469
+ }
470
+ const callText = `${valueReplacementPlan.replacementNameAndImportFixFactory.replacementName}(${argumentText})`;
471
+ const replacementText = negated === true ? `!${callText}` : callText;
472
+ return createReportFixFromValueReplacementPlan({
473
+ autofixImportInsertionStrategy,
474
+ createReplacementFix: (replacementFixer) => replacementFixer.replaceText(targetNode, replacementText),
475
+ valueReplacementPlan,
476
+ });
477
+ };
478
+ //# sourceMappingURL=imported-value-symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imported-value-symbols.js","sourceRoot":"","sources":["../../src/_internal/imported-value-symbols.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Shared call-expression helpers for matching method calls safely.
4
+ */
5
+ import type { TSESTree } from "@typescript-eslint/utils";
6
+ /**
7
+ * Strongly-typed shape for non-computed member calls with identifier receiver
8
+ * and property (e.g. `Object.keys`).
9
+ */
10
+ export type IdentifierMemberCallExpression = TSESTree.CallExpression & {
11
+ callee: TSESTree.MemberExpression & {
12
+ computed: false;
13
+ object: TSESTree.Identifier;
14
+ property: TSESTree.Identifier;
15
+ };
16
+ };
17
+ /**
18
+ * Strongly-typed shape for non-computed member calls with identifier property
19
+ * (e.g. `value.includes`).
20
+ */
21
+ export type IdentifierPropertyMemberCallExpression = TSESTree.CallExpression & {
22
+ callee: TSESTree.MemberExpression & {
23
+ computed: false;
24
+ object: Exclude<TSESTree.MemberExpression["object"], TSESTree.Super>;
25
+ property: TSESTree.Identifier;
26
+ };
27
+ };
28
+ /**
29
+ * Match `ObjectName.methodName(...)` style calls.
30
+ *
31
+ * @param options - Candidate call expression and expected receiver/member
32
+ * names.
33
+ *
34
+ * @returns Narrowed call expression when the shape matches; otherwise `null`.
35
+ */
36
+ export declare const getIdentifierMemberCall: ({ memberName, node, objectName, }: Readonly<{
37
+ memberName: string;
38
+ node: Readonly<TSESTree.CallExpression>;
39
+ objectName: string;
40
+ }>) => IdentifierMemberCallExpression | null;
41
+ /**
42
+ * Match `<expression>.memberName(...)` style calls where the property is a
43
+ * non-computed identifier.
44
+ *
45
+ * @param options - Candidate call expression and expected member name.
46
+ *
47
+ * @returns Narrowed call expression when matched; otherwise `null`.
48
+ */
49
+ export declare const getIdentifierPropertyMemberCall: ({ memberName, node, }: Readonly<{
50
+ memberName: string;
51
+ node: Readonly<TSESTree.CallExpression>;
52
+ }>) => IdentifierPropertyMemberCallExpression | null;
53
+ //# sourceMappingURL=member-call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member-call.d.ts","sourceRoot":"","sources":["../../src/_internal/member-call.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC,cAAc,GAAG;IACnE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,GAAG;QAChC,QAAQ,EAAE,KAAK,CAAC;QAChB,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACjC,CAAC;CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sCAAsC,GAAG,QAAQ,CAAC,cAAc,GAAG;IAC3E,MAAM,EAAE,QAAQ,CAAC,gBAAgB,GAAG;QAChC,QAAQ,EAAE,KAAK,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrE,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACjC,CAAC;CACL,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,mCAIrC,QAAQ,CAAC;IACR,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC,KAAG,8BAA8B,GAAG,IAoBrC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,GAAI,uBAG7C,QAAQ,CAAC;IACR,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;CAC3C,CAAC,KAAG,sCAAsC,GAAG,IAmB7C,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Match `ObjectName.methodName(...)` style calls.
3
+ *
4
+ * @param options - Candidate call expression and expected receiver/member
5
+ * names.
6
+ *
7
+ * @returns Narrowed call expression when the shape matches; otherwise `null`.
8
+ */
9
+ export const getIdentifierMemberCall = ({ memberName, node, objectName, }) => {
10
+ if (node.optional) {
11
+ return null;
12
+ }
13
+ const { callee } = node;
14
+ if (callee.type !== "MemberExpression" ||
15
+ callee.computed ||
16
+ callee.optional ||
17
+ callee.object.type !== "Identifier" ||
18
+ callee.object.name !== objectName ||
19
+ callee.property.type !== "Identifier" ||
20
+ callee.property.name !== memberName) {
21
+ return null;
22
+ }
23
+ return node;
24
+ };
25
+ /**
26
+ * Match `<expression>.memberName(...)` style calls where the property is a
27
+ * non-computed identifier.
28
+ *
29
+ * @param options - Candidate call expression and expected member name.
30
+ *
31
+ * @returns Narrowed call expression when matched; otherwise `null`.
32
+ */
33
+ export const getIdentifierPropertyMemberCall = ({ memberName, node, }) => {
34
+ if (node.optional) {
35
+ return null;
36
+ }
37
+ const { callee } = node;
38
+ if (callee.type !== "MemberExpression" ||
39
+ callee.computed ||
40
+ callee.optional ||
41
+ callee.object.type === "Super" ||
42
+ callee.property.type !== "Identifier" ||
43
+ callee.property.name !== memberName) {
44
+ return null;
45
+ }
46
+ return node;
47
+ };
48
+ //# sourceMappingURL=member-call.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member-call.js","sourceRoot":"","sources":["../../src/_internal/member-call.ts"],"names":[],"mappings":"AA8BA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACpC,UAAU,EACV,IAAI,EACJ,UAAU,GAKZ,EAAyC,EAAE;IACzC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,IACI,MAAM,CAAC,IAAI,KAAK,kBAAkB;QAClC,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;QACnC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU;QACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;QACrC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EACrC,CAAC;QACC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,IAAsC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,EAC5C,UAAU,EACV,IAAI,GAIN,EAAiD,EAAE;IACjD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,IACI,MAAM,CAAC,IAAI,KAAK,kBAAkB;QAClC,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO;QAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;QACrC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EACrC,CAAC;QACC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,IAA8C,CAAC;AAC1D,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Canonical module-source string constants used across rule internals.
4
+ */
5
+ /** Canonical source module string for `ts-extras` helpers. */
6
+ export declare const TS_EXTRAS_MODULE_SOURCE: "ts-extras";
7
+ /** Canonical source module string for `type-fest` type utilities. */
8
+ export declare const TYPE_FEST_MODULE_SOURCE: "type-fest";
9
+ /** Canonical source module string for `@typescript-eslint/utils`. */
10
+ export declare const TYPESCRIPT_ESLINT_UTILS_MODULE_SOURCE: "@typescript-eslint/utils";
11
+ //# sourceMappingURL=module-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-source.d.ts","sourceRoot":"","sources":["../../src/_internal/module-source.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB,EAAG,WAAoB,CAAC;AAE5D,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,EAAG,WAAoB,CAAC;AAE5D,qEAAqE;AACrE,eAAO,MAAM,qCAAqC,EAC9C,0BAAmC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Canonical module-source string constants used across rule internals.
4
+ */
5
+ /** Canonical source module string for `ts-extras` helpers. */
6
+ export const TS_EXTRAS_MODULE_SOURCE = "ts-extras";
7
+ /** Canonical source module string for `type-fest` type utilities. */
8
+ export const TYPE_FEST_MODULE_SOURCE = "type-fest";
9
+ /** Canonical source module string for `@typescript-eslint/utils`. */
10
+ export const TYPESCRIPT_ESLINT_UTILS_MODULE_SOURCE = "@typescript-eslint/utils";
11
+ //# sourceMappingURL=module-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-source.js","sourceRoot":"","sources":["../../src/_internal/module-source.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAoB,CAAC;AAE5D,qEAAqE;AACrE,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAoB,CAAC;AAE5D,qEAAqE;AACrE,MAAM,CAAC,MAAM,qCAAqC,GAC9C,0BAAmC,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Structural normalization and equivalence checks for expressions and type
4
+ * nodes used by safe-fix heuristics.
5
+ */
6
+ import type { TSESTree } from "@typescript-eslint/utils";
7
+ /**
8
+ * Compare two expressions for structural equivalence after unwrapping
9
+ * transparent TypeScript wrappers.
10
+ *
11
+ * @param left - Left-hand expression.
12
+ * @param right - Right-hand expression.
13
+ *
14
+ * @returns `true` when both expressions are structurally equivalent.
15
+ */
16
+ export declare const areEquivalentExpressions: (left: Readonly<TSESTree.Expression>, right: Readonly<TSESTree.Expression>) => boolean;
17
+ /**
18
+ * Compare two type nodes for structural equivalence.
19
+ *
20
+ * @param left - Left-hand type node.
21
+ * @param right - Right-hand type node.
22
+ *
23
+ * @returns `true` when both type nodes are structurally equivalent.
24
+ */
25
+ export declare const areEquivalentTypeNodes: (left: Readonly<TSESTree.TypeNode>, right: Readonly<TSESTree.TypeNode>) => boolean;
26
+ //# sourceMappingURL=normalize-expression-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-expression-text.d.ts","sourceRoot":"","sources":["../../src/_internal/normalize-expression-text.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAgPzD;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACjC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EACnC,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACrC,OAIE,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAC/B,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACjC,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KACnC,OAA+C,CAAC"}