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,316 @@
1
+ import { keyIn } from "ts-extras";
2
+ import { getParentNode } from "./ast-node.js";
3
+ import { isAnyLinkedStructureNodeMatching } from "./cycle-safe-linked-search.js";
4
+ import { collectNamedImportLocalNamesByImportedNameFromSource, collectNamedImportSpecifierBindingsFromSource, collectNamespaceImportLocalNamesFromSourceModule, } from "./import-analysis.js";
5
+ import { createImportAwareFixes } from "./import-aware-fixes.js";
6
+ import { resolveImportInsertionDecisionForReportFix, } from "./import-fix-coordinator.js";
7
+ import { createImportInsertionFix } from "./import-insertion.js";
8
+ import { TYPE_FEST_MODULE_SOURCE } from "./module-source.js";
9
+ import { setContainsValue } from "./set-membership.js";
10
+ /** Utility wrapper used to preserve explicit readonly semantics in fixes. */
11
+ const READONLY_UTILITY_TYPE_NAME = "Readonly";
12
+ /**
13
+ * Container type references that semantically encode readonly wrappers.
14
+ */
15
+ const READONLY_CONTAINER_TYPE_NAMES = new Set([
16
+ "ReadonlyArray",
17
+ "ReadonlyMap",
18
+ "ReadonlySet",
19
+ ]);
20
+ /**
21
+ * Determine whether a node exposes an optional `typeParameters` property.
22
+ */
23
+ const hasOptionalTypeParametersProperty = (node) => keyIn(node, "typeParameters");
24
+ /**
25
+ * Collects imported canonical type alias names that should be replaced by
26
+ * preferred type-fest utility names.
27
+ *
28
+ * @param sourceCode - Source code object for the current file.
29
+ * @param replacementsByImportedName - Mapping from imported symbol names to
30
+ * preferred replacement names.
31
+ *
32
+ * @returns Map keyed by canonical imported alias name with replacement
33
+ * metadata.
34
+ */
35
+ export const collectImportedTypeAliasMatches = (sourceCode, replacementsByImportedName) => {
36
+ const aliasMatches = new Map();
37
+ for (const binding of collectNamedImportSpecifierBindingsFromSource({
38
+ sourceCode,
39
+ })) {
40
+ if (binding.localName !== binding.importedName) {
41
+ continue;
42
+ }
43
+ const replacementName = replacementsByImportedName[binding.importedName];
44
+ if (typeof replacementName !== "string" ||
45
+ replacementName.length === 0) {
46
+ continue;
47
+ }
48
+ const sourceValue = typeof binding.declaration.source.value === "string"
49
+ ? binding.declaration.source.value
50
+ : "";
51
+ aliasMatches.set(binding.importedName, {
52
+ importedName: binding.importedName,
53
+ replacementName,
54
+ sourceValue,
55
+ });
56
+ }
57
+ return aliasMatches;
58
+ };
59
+ /**
60
+ * Collect direct (non-renamed) named imports for a specific source module.
61
+ *
62
+ * @param sourceCode - Source code object for the current file.
63
+ * @param expectedSourceValue - Module source string to match.
64
+ *
65
+ * @returns Set of imported identifier names.
66
+ */
67
+ export const collectDirectNamedImportsFromSource = (sourceCode, expectedSourceValue) => {
68
+ const localNamesByImportedName = collectNamedImportLocalNamesByImportedNameFromSource({
69
+ sourceCode,
70
+ sourceModuleName: expectedSourceValue,
71
+ });
72
+ const namedImports = new Set();
73
+ for (const [importedName, localNames] of localNamesByImportedName) {
74
+ if (!setContainsValue(localNames, importedName)) {
75
+ continue;
76
+ }
77
+ namedImports.add(importedName);
78
+ }
79
+ return namedImports;
80
+ };
81
+ /**
82
+ * Collect local identifier names for a specific named import from a selected
83
+ * module source.
84
+ *
85
+ * @param sourceCode - Source code object for the current file.
86
+ * @param expectedSourceValue - Module source string to match.
87
+ * @param expectedImportedName - Imported symbol name to match.
88
+ *
89
+ * @returns Set of local identifier names (including aliased locals).
90
+ */
91
+ export const collectNamedImportLocalNamesFromSource = (sourceCode, expectedSourceValue, expectedImportedName) => new Set(collectNamedImportLocalNamesByImportedNameFromSource({
92
+ sourceCode,
93
+ sourceModuleName: expectedSourceValue,
94
+ }).get(expectedImportedName));
95
+ /**
96
+ * Collect local identifier names for namespace imports from a selected module
97
+ * source.
98
+ *
99
+ * @param sourceCode - Source code object for the current file.
100
+ * @param expectedSourceValue - Module source string to match.
101
+ *
102
+ * @returns Set of namespace import local names.
103
+ */
104
+ export const collectNamespaceImportLocalNamesFromSource = (sourceCode, expectedSourceValue) => collectNamespaceImportLocalNamesFromSourceModule(sourceCode, expectedSourceValue);
105
+ /**
106
+ * Builds an import-insertion fix for missing named type replacements.
107
+ *
108
+ * @param options - Fixer context and replacement import metadata.
109
+ *
110
+ * @returns Import insertion fix when a safe insertion point is found; otherwise
111
+ * `null`.
112
+ */
113
+ const getInsertionFixForMissingNamedTypeImport = ({ fixer, node, replacementName, sourceModuleName, }) => {
114
+ const importDeclarationText = `import type { ${replacementName} } from "${sourceModuleName}";`;
115
+ return createImportInsertionFix({
116
+ fixer,
117
+ importDeclarationText,
118
+ moduleSpecifierHint: sourceModuleName,
119
+ referenceNode: node,
120
+ });
121
+ };
122
+ /**
123
+ * Checks whether an ancestor node declares a type parameter with a specific
124
+ * name.
125
+ *
126
+ * @param ancestor - Ancestor node to inspect.
127
+ * @param parameterName - Type parameter name to detect.
128
+ *
129
+ * @returns `true` when the ancestor declares a matching type parameter.
130
+ */
131
+ const ancestorDefinesTypeParameterNamed = (ancestor, parameterName) => {
132
+ if (!hasOptionalTypeParametersProperty(ancestor)) {
133
+ return false;
134
+ }
135
+ const typeParameterDeclaration = ancestor.typeParameters;
136
+ if (!typeParameterDeclaration) {
137
+ return false;
138
+ }
139
+ return typeParameterDeclaration.params.some((parameter) => parameter.name.name === parameterName);
140
+ };
141
+ /**
142
+ * Determine whether a type parameter name is shadowed by any enclosing generic
143
+ * declaration.
144
+ *
145
+ * @param node - Node used as the starting point for ancestor traversal.
146
+ * @param parameterName - Type parameter name to detect.
147
+ *
148
+ * @returns `true` when an ancestor declares a matching type parameter.
149
+ */
150
+ export function isTypeParameterNameShadowed(node, parameterName) {
151
+ return isAnyLinkedStructureNodeMatching({
152
+ getNextNode: (currentNode) => getParentNode(currentNode) ?? null,
153
+ isMatch: (currentNode) => ancestorDefinesTypeParameterNamed(currentNode, parameterName),
154
+ startNode: node,
155
+ });
156
+ }
157
+ /**
158
+ * Build a replacement fixer that optionally inserts a missing named type import
159
+ * before applying the replacement.
160
+ *
161
+ * @param options - Replacement strategy plus import/scope safety inputs.
162
+ *
163
+ * @returns Report fixer when replacement is scope-safe; otherwise `null`.
164
+ */
165
+ const createTypeReplacementFix = ({ applyReplacement, availableReplacementNames, node, replacementName, reportFixIntent, sourceModuleName, }) => {
166
+ if (isTypeParameterNameShadowed(node, replacementName)) {
167
+ return null;
168
+ }
169
+ const requiresImportInsertion = !setContainsValue(availableReplacementNames, replacementName);
170
+ if (!requiresImportInsertion) {
171
+ return (fixer) => applyReplacement(fixer);
172
+ }
173
+ const importInsertionDecision = resolveImportInsertionDecisionForReportFix({
174
+ importBindingKind: "type",
175
+ importedName: replacementName,
176
+ referenceNode: node,
177
+ reportFixIntent,
178
+ sourceModuleName,
179
+ });
180
+ return (fixer) => createImportAwareFixes({
181
+ createImportFix: (importFixer) => getInsertionFixForMissingNamedTypeImport({
182
+ fixer: importFixer,
183
+ node,
184
+ replacementName,
185
+ sourceModuleName,
186
+ }),
187
+ createReplacementFix: applyReplacement,
188
+ fixer,
189
+ importInsertionDecision,
190
+ requiresImportInsertion,
191
+ });
192
+ };
193
+ /**
194
+ * Build a safe type-reference replacement fixer.
195
+ *
196
+ * @param node - Type reference node to potentially fix.
197
+ * @param replacementName - Replacement identifier text.
198
+ * @param availableReplacementNames - Available direct imported replacement
199
+ * names.
200
+ * @param sourceModuleName - Module source used when validating/adding imports.
201
+ *
202
+ * @returns Fix function when replacement/import insertion is scope-safe;
203
+ * otherwise `null`.
204
+ */
205
+ export const createSafeTypeReferenceReplacementFix = (node, replacementName, availableReplacementNames, sourceModuleName = TYPE_FEST_MODULE_SOURCE, reportFixIntent = "autofix") => {
206
+ if (node.typeName.type !== "Identifier") {
207
+ return null;
208
+ }
209
+ return createTypeReplacementFix({
210
+ applyReplacement: (fixer) => fixer.replaceText(node.typeName, replacementName),
211
+ availableReplacementNames,
212
+ node,
213
+ replacementName,
214
+ reportFixIntent,
215
+ sourceModuleName,
216
+ });
217
+ };
218
+ /**
219
+ * Build a safe whole-type-node replacement fixer with custom replacement text.
220
+ *
221
+ * @param node - Type node to potentially replace.
222
+ * @param replacementName - Replacement symbol name used for import/scope safety
223
+ * checks.
224
+ * @param replacementText - Final replacement text to emit.
225
+ * @param availableReplacementNames - Available direct imported replacement
226
+ * names.
227
+ * @param sourceModuleName - Module source used when validating/adding imports.
228
+ *
229
+ * @returns Fix function when replacement/import insertion is scope-safe;
230
+ * otherwise `null`.
231
+ */
232
+ export const createSafeTypeNodeTextReplacementFix = (node, replacementName, replacementText, availableReplacementNames, sourceModuleName = TYPE_FEST_MODULE_SOURCE, reportFixIntent = "autofix") => createTypeReplacementFix({
233
+ applyReplacement: (fixer) => fixer.replaceText(node, replacementText),
234
+ availableReplacementNames,
235
+ node,
236
+ replacementName,
237
+ reportFixIntent,
238
+ sourceModuleName,
239
+ });
240
+ /**
241
+ * Build a safe whole-type-node replacement fixer.
242
+ *
243
+ * @param node - Type node to potentially replace.
244
+ * @param replacementName - Replacement identifier text.
245
+ * @param availableReplacementNames - Available direct imported replacement
246
+ * names.
247
+ * @param sourceModuleName - Module source used when validating/adding imports.
248
+ *
249
+ * @returns Fix function when replacement/import insertion is scope-safe;
250
+ * otherwise `null`.
251
+ */
252
+ export const createSafeTypeNodeReplacementFix = (node, replacementName, availableReplacementNames, sourceModuleName = TYPE_FEST_MODULE_SOURCE, reportFixIntent = "autofix") => createSafeTypeNodeTextReplacementFix(node, replacementName, replacementName, availableReplacementNames, sourceModuleName, reportFixIntent);
253
+ /**
254
+ * Detects type nodes that explicitly encode readonly semantics.
255
+ *
256
+ * @param node - Type node to inspect.
257
+ *
258
+ * @returns `true` for `readonly` type operators and known readonly container
259
+ * references.
260
+ */
261
+ const isExplicitReadonlyTypeNode = (node) => {
262
+ if (node.type === "TSTypeOperator") {
263
+ return node.operator === "readonly";
264
+ }
265
+ if (node.type !== "TSTypeReference" ||
266
+ node.typeName.type !== "Identifier") {
267
+ return false;
268
+ }
269
+ return setContainsValue(READONLY_CONTAINER_TYPE_NAMES, node.typeName.name);
270
+ };
271
+ /**
272
+ * Checks whether replacement text is already wrapped with `Readonly<...>`.
273
+ */
274
+ const isReadonlyUtilityWrappedText = (replacementText) => replacementText.trimStart().startsWith(`${READONLY_UTILITY_TYPE_NAME}<`);
275
+ /**
276
+ * Wraps replacement text in `Readonly<...>`.
277
+ */
278
+ const toReadonlyUtilityWrappedText = (replacementText) => `${READONLY_UTILITY_TYPE_NAME}<${replacementText}>`;
279
+ /**
280
+ * Build a safe whole-type-node replacement fixer that preserves explicit
281
+ * readonly wrappers/operators from the original node.
282
+ *
283
+ * @param node - Type node to potentially replace.
284
+ * @param replacementName - Replacement symbol name used for import/scope safety
285
+ * checks.
286
+ * @param replacementText - Final replacement text before readonly-preservation
287
+ * adjustment.
288
+ * @param availableReplacementNames - Available direct imported replacement
289
+ * names.
290
+ * @param sourceModuleName - Module source used when validating/adding imports.
291
+ *
292
+ * @returns Fix function when replacement/import insertion is scope-safe;
293
+ * otherwise `null`.
294
+ */
295
+ export const createSafeTypeNodeTextReplacementFixPreservingReadonly = (node, replacementName, replacementText, availableReplacementNames, sourceModuleName = TYPE_FEST_MODULE_SOURCE, reportFixIntent = "autofix") => {
296
+ const replacementTextWithReadonlyPreservation = isExplicitReadonlyTypeNode(node) &&
297
+ !isReadonlyUtilityWrappedText(replacementText)
298
+ ? toReadonlyUtilityWrappedText(replacementText)
299
+ : replacementText;
300
+ return createSafeTypeNodeTextReplacementFix(node, replacementName, replacementTextWithReadonlyPreservation, availableReplacementNames, sourceModuleName, reportFixIntent);
301
+ };
302
+ /**
303
+ * Build a safe whole-type-node replacement fixer that preserves explicit
304
+ * readonly wrappers/operators from the original node.
305
+ *
306
+ * @param node - Type node to potentially replace.
307
+ * @param replacementName - Replacement identifier text.
308
+ * @param availableReplacementNames - Available direct imported replacement
309
+ * names.
310
+ * @param sourceModuleName - Module source used when validating/adding imports.
311
+ *
312
+ * @returns Fix function when replacement/import insertion is scope-safe;
313
+ * otherwise `null`.
314
+ */
315
+ export const createSafeTypeNodeReplacementFixPreservingReadonly = (node, replacementName, availableReplacementNames, sourceModuleName = TYPE_FEST_MODULE_SOURCE, reportFixIntent = "autofix") => createSafeTypeNodeTextReplacementFixPreservingReadonly(node, replacementName, replacementName, availableReplacementNames, sourceModuleName, reportFixIntent);
316
+ //# sourceMappingURL=imported-type-aliases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imported-type-aliases.js","sourceRoot":"","sources":["../../src/_internal/imported-type-aliases.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Utilities for collecting and safely resolving direct named value imports.
4
+ */
5
+ import type { TSESLint, TSESTree } from "@typescript-eslint/utils";
6
+ import type { UnknownArray } from "type-fest";
7
+ import { type AutofixImportInsertionStrategy } from "./import-aware-fixes.js";
8
+ import { type ImportFixIntent } from "./import-fix-coordinator.js";
9
+ /**
10
+ * Immutable mapping of imported symbol names to directly imported local
11
+ * aliases.
12
+ */
13
+ export type ImportedValueAliasMap = ReadonlyMap<string, ReadonlySet<string>>;
14
+ /**
15
+ * Parameters for creating a safe member-expression to function-call fixer.
16
+ */
17
+ type MemberToFunctionCallFixParams = Readonly<{
18
+ context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
19
+ importedName: string;
20
+ imports: ImportedValueAliasMap;
21
+ memberNode: TSESTree.MemberExpression;
22
+ reportFixIntent?: ImportFixIntent;
23
+ sourceModuleName: string;
24
+ }>;
25
+ /**
26
+ * Parameters for creating a safe method-call to function-call fixer.
27
+ */
28
+ type MethodToFunctionCallFixParams = Readonly<{
29
+ callNode: TSESTree.CallExpression;
30
+ context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
31
+ importedName: string;
32
+ imports: ImportedValueAliasMap;
33
+ reportFixIntent?: ImportFixIntent;
34
+ sourceModuleName: string;
35
+ }>;
36
+ /**
37
+ * Parameters for resolving a safe local alias for an imported value symbol.
38
+ */
39
+ type SafeImportedValueNameParams = Readonly<{
40
+ context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
41
+ importedName: string;
42
+ imports: ImportedValueAliasMap;
43
+ referenceNode: TSESTree.Node;
44
+ sourceModuleName: string;
45
+ }>;
46
+ /**
47
+ * Parameters for creating a safe replacement fixer with custom replacement text
48
+ * derived from the resolved helper local name.
49
+ */
50
+ type SafeValueNodeTextReplacementFixParams = Readonly<{
51
+ context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
52
+ importedName: string;
53
+ imports: ImportedValueAliasMap;
54
+ replacementTextFactory: (replacementName: string) => string;
55
+ reportFixIntent?: ImportFixIntent;
56
+ sourceModuleName: string;
57
+ targetNode: TSESTree.Node;
58
+ }>;
59
+ /**
60
+ * Parameters for creating a safe replacement fixer for a value reference.
61
+ */
62
+ type SafeValueReplacementFixParams = Readonly<{
63
+ context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
64
+ importedName: string;
65
+ imports: ImportedValueAliasMap;
66
+ reportFixIntent?: ImportFixIntent;
67
+ sourceModuleName: string;
68
+ targetNode: TSESTree.Node;
69
+ }>;
70
+ /**
71
+ * Parameters for creating a safe function-call replacement fixer.
72
+ */
73
+ type ValueArgumentFunctionCallFixParams = Readonly<{
74
+ argumentNode: TSESTree.Node;
75
+ autofixImportInsertionStrategy?: AutofixImportInsertionStrategy;
76
+ context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
77
+ importedName: string;
78
+ imports: ImportedValueAliasMap;
79
+ negated?: boolean;
80
+ reportFixIntent?: ImportFixIntent;
81
+ sourceModuleName: string;
82
+ targetNode: TSESTree.Node;
83
+ }>;
84
+ /**
85
+ * Collect direct named value imports from a specific module.
86
+ *
87
+ * @param sourceCode - Source code object for the current file.
88
+ * @param sourceModuleName - Module source string to match.
89
+ *
90
+ * @returns Readonly map of imported symbol names to local aliases.
91
+ */
92
+ export declare const collectDirectNamedValueImportsFromSource: (sourceCode: Readonly<TSESLint.SourceCode>, sourceModuleName: string) => ImportedValueAliasMap;
93
+ /**
94
+ * Resolve a safe local alias for a required imported value at one reference.
95
+ *
96
+ * @param options - Rule context, import alias map, and target reference
97
+ * metadata.
98
+ *
99
+ * @returns Local alias when the current scope binds it to the expected module;
100
+ * otherwise `null`.
101
+ */
102
+ export declare const getSafeLocalNameForImportedValue: ({ context, importedName, imports, referenceNode, sourceModuleName, }: Readonly<SafeImportedValueNameParams>) => null | string;
103
+ /**
104
+ * Serialize a call argument node to text, preserving sequence-expression
105
+ * semantics with parentheses when required.
106
+ *
107
+ * @param options - Argument node and source-code accessor.
108
+ *
109
+ * @returns Trimmed argument text suitable for function-call insertion, or
110
+ * `null` when no text can be produced.
111
+ */
112
+ export declare const getFunctionCallArgumentText: ({ argumentNode, sourceCode, }: Readonly<{
113
+ argumentNode: Readonly<TSESTree.Node>;
114
+ sourceCode: Readonly<TSESLint.SourceCode>;
115
+ }>) => null | string;
116
+ /**
117
+ * Create a fixer that safely replaces a target node with a resolved local
118
+ * import alias.
119
+ *
120
+ * @param options - Inputs used to resolve replacement/import insertion safety.
121
+ *
122
+ * @returns A report fixer when safe; otherwise `null`.
123
+ */
124
+ export declare const createSafeValueReferenceReplacementFix: ({ context, importedName, imports, reportFixIntent, sourceModuleName, targetNode, }: Readonly<SafeValueReplacementFixParams>) => null | TSESLint.ReportFixFunction;
125
+ /**
126
+ * Create a fixer that safely rewrites a target node using custom replacement
127
+ * text derived from a resolved helper local name.
128
+ *
129
+ * @param options - Inputs for safe helper-name resolution and replacement-text
130
+ * generation.
131
+ *
132
+ * @returns A report fixer when safe; otherwise `null`.
133
+ */
134
+ export declare const createSafeValueNodeTextReplacementFix: ({ context, importedName, imports, replacementTextFactory, reportFixIntent, sourceModuleName, targetNode, }: Readonly<SafeValueNodeTextReplacementFixParams>) => null | TSESLint.ReportFixFunction;
135
+ /**
136
+ * Create a fixer that rewrites `receiver.method(args...)` to
137
+ * `importedFn(receiver, args...)`.
138
+ *
139
+ * @returns A report fixer when safe; otherwise `null`.
140
+ */
141
+ export declare const createMethodToFunctionCallFix: ({ callNode, context, importedName, imports, reportFixIntent, sourceModuleName, }: Readonly<MethodToFunctionCallFixParams>) => null | TSESLint.ReportFixFunction;
142
+ /**
143
+ * Create a fixer that rewrites `receiver[member]` to `importedFn(receiver)`.
144
+ *
145
+ * @returns A report fixer when safe; otherwise `null`.
146
+ */
147
+ export declare const createMemberToFunctionCallFix: ({ context, importedName, imports, memberNode, reportFixIntent, sourceModuleName, }: Readonly<MemberToFunctionCallFixParams>) => null | TSESLint.ReportFixFunction;
148
+ /**
149
+ * Create a fixer that rewrites a target node to an imported helper invocation.
150
+ *
151
+ * @param options - Target/argument nodes and import metadata for call
152
+ *
153
+ * @returns A report fixer when safe; otherwise `null`.
154
+ */
155
+ export declare const createSafeValueArgumentFunctionCallFix: ({ argumentNode, autofixImportInsertionStrategy, context, importedName, imports, negated, reportFixIntent, sourceModuleName, targetNode, }: Readonly<ValueArgumentFunctionCallFixParams>) => null | TSESLint.ReportFixFunction;
156
+ export {};
157
+ //# sourceMappingURL=imported-value-symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imported-value-symbols.d.ts","sourceRoot":"","sources":["../../src/_internal/imported-value-symbols.ts"],"names":[],"mappings":"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"}