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,27 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Shared utilities for safely inserting import declarations in fixer output.
4
+ */
5
+ import type { TSESLint, TSESTree } from "@typescript-eslint/utils";
6
+ /**
7
+ * Create a fixer that inserts an import declaration in a safe location: after
8
+ * existing imports, after directive prologue, before first statement, or at
9
+ * file end for empty programs.
10
+ *
11
+ * @param options - Fix-planning options.
12
+ *
13
+ * - `fixer`: Rule fixer from ESLint.
14
+ * - `referenceNode`: Node used to discover the enclosing Program.
15
+ * - `importDeclarationText`: Full import declaration text to insert.
16
+ * - `moduleSpecifierHint`: Optional known module specifier that skips import-text
17
+ * parsing when provided.
18
+ *
19
+ * @returns Rule fix when insertion is possible; otherwise `null`.
20
+ */
21
+ export declare const createImportInsertionFix: (options: Readonly<{
22
+ fixer: TSESLint.RuleFixer;
23
+ importDeclarationText: string;
24
+ moduleSpecifierHint?: string;
25
+ referenceNode: Readonly<TSESTree.Node>;
26
+ }>) => null | TSESLint.RuleFix;
27
+ //# sourceMappingURL=import-insertion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-insertion.d.ts","sourceRoot":"","sources":["../../src/_internal/import-insertion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAkWnE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,wBAAwB,GACjC,SAAS,QAAQ,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC1C,CAAC,KACH,IAAI,GAAG,QAAQ,CAAC,OAiFlB,CAAC"}
@@ -0,0 +1,295 @@
1
+ import parser from "@typescript-eslint/parser";
2
+ import { arrayAt, isInteger } from "ts-extras";
3
+ import { getProgramNode } from "./ast-node.js";
4
+ import { getBoundedCacheValue, setBoundedCacheValue } from "./bounded-cache.js";
5
+ import { safeTypeOperation } from "./safe-type-operation.js";
6
+ import { isKnownWhitespaceCharacter } from "./text-character.js";
7
+ /**
8
+ * Program-scoped insertion-layout cache reused across repeated fixer planning.
9
+ */
10
+ const programInsertionLayoutCache = new WeakMap();
11
+ const IMPORT_KEYWORD = "import";
12
+ /**
13
+ * Upper bound for import-text snippets parsed to recover module specifiers.
14
+ *
15
+ * @remarks
16
+ * Fix suggestions can include large synthetic text. Capping parser input keeps
17
+ * this helper predictable on pathological inputs.
18
+ */
19
+ const MAX_IMPORT_DECLARATION_TEXT_PARSE_LENGTH = 2048;
20
+ const skipLeadingWhitespace = ({ startIndex, text, }) => {
21
+ let index = startIndex;
22
+ while (index < text.length &&
23
+ isKnownWhitespaceCharacter(text[index] ?? "")) {
24
+ index += 1;
25
+ }
26
+ return index;
27
+ };
28
+ const MAX_PARSED_MODULE_SPECIFIER_CACHE_ENTRIES = 256;
29
+ const parsedModuleSpecifierByImportText = new Map();
30
+ const isTrailingImportText = (text) => {
31
+ const trailingText = text.trim();
32
+ return trailingText === "" || trailingText === ";";
33
+ };
34
+ const parseModuleSpecifierFromImportDeclarationText = (importDeclarationText) => {
35
+ const parsedResult = safeTypeOperation({
36
+ operation: () => parser.parseForESLint(importDeclarationText, {
37
+ ecmaVersion: "latest",
38
+ loc: false,
39
+ range: false,
40
+ sourceType: "module",
41
+ }),
42
+ reason: "import-insertion-module-specifier-parse-failed",
43
+ });
44
+ if (!parsedResult.ok) {
45
+ return null;
46
+ }
47
+ const [firstStatement] = parsedResult.value.ast.body;
48
+ if (parsedResult.value.ast.body.length !== 1 ||
49
+ firstStatement?.type !== "ImportDeclaration") {
50
+ return null;
51
+ }
52
+ const moduleSpecifier = firstStatement.source.value;
53
+ return typeof moduleSpecifier === "string" ? moduleSpecifier : null;
54
+ };
55
+ /**
56
+ * Extract the module specifier from an import declaration text snippet.
57
+ */
58
+ const getModuleSpecifierFromImportDeclarationText = (importDeclarationText) => {
59
+ const trimmedImportText = importDeclarationText.trim();
60
+ if (trimmedImportText.length > MAX_IMPORT_DECLARATION_TEXT_PARSE_LENGTH) {
61
+ setBoundedCacheValue({
62
+ cache: parsedModuleSpecifierByImportText,
63
+ key: trimmedImportText,
64
+ maxEntries: MAX_PARSED_MODULE_SPECIFIER_CACHE_ENTRIES,
65
+ value: null,
66
+ });
67
+ return null;
68
+ }
69
+ const cachedModuleSpecifierLookup = getBoundedCacheValue(parsedModuleSpecifierByImportText, trimmedImportText);
70
+ if (cachedModuleSpecifierLookup.found) {
71
+ return cachedModuleSpecifierLookup.value ?? null;
72
+ }
73
+ if (!trimmedImportText.startsWith(IMPORT_KEYWORD)) {
74
+ setBoundedCacheValue({
75
+ cache: parsedModuleSpecifierByImportText,
76
+ key: trimmedImportText,
77
+ maxEntries: MAX_PARSED_MODULE_SPECIFIER_CACHE_ENTRIES,
78
+ value: null,
79
+ });
80
+ return null;
81
+ }
82
+ const importClauseStart = skipLeadingWhitespace({
83
+ startIndex: IMPORT_KEYWORD.length,
84
+ text: trimmedImportText,
85
+ });
86
+ if (importClauseStart >= trimmedImportText.length) {
87
+ setBoundedCacheValue({
88
+ cache: parsedModuleSpecifierByImportText,
89
+ key: trimmedImportText,
90
+ maxEntries: MAX_PARSED_MODULE_SPECIFIER_CACHE_ENTRIES,
91
+ value: null,
92
+ });
93
+ return null;
94
+ }
95
+ const moduleSpecifier = parseModuleSpecifierFromImportDeclarationText(trimmedImportText);
96
+ if (moduleSpecifier !== null) {
97
+ setBoundedCacheValue({
98
+ cache: parsedModuleSpecifierByImportText,
99
+ key: trimmedImportText,
100
+ maxEntries: MAX_PARSED_MODULE_SPECIFIER_CACHE_ENTRIES,
101
+ value: moduleSpecifier,
102
+ });
103
+ return moduleSpecifier;
104
+ }
105
+ const semicolonIndex = trimmedImportText.lastIndexOf(";");
106
+ const trailingImportText = semicolonIndex === -1
107
+ ? ""
108
+ : trimmedImportText.slice(semicolonIndex + 1);
109
+ if (!isTrailingImportText(trailingImportText)) {
110
+ setBoundedCacheValue({
111
+ cache: parsedModuleSpecifierByImportText,
112
+ key: trimmedImportText,
113
+ maxEntries: MAX_PARSED_MODULE_SPECIFIER_CACHE_ENTRIES,
114
+ value: null,
115
+ });
116
+ return null;
117
+ }
118
+ setBoundedCacheValue({
119
+ cache: parsedModuleSpecifierByImportText,
120
+ key: trimmedImportText,
121
+ maxEntries: MAX_PARSED_MODULE_SPECIFIER_CACHE_ENTRIES,
122
+ value: null,
123
+ });
124
+ return null;
125
+ };
126
+ /**
127
+ * Determine whether a module specifier is relative (`./` or `../`) or rooted.
128
+ */
129
+ const isRelativeModuleSpecifier = (moduleSpecifier) => moduleSpecifier.startsWith(".") || moduleSpecifier.startsWith("/");
130
+ /**
131
+ * Read a string-valued module specifier from an import declaration node.
132
+ */
133
+ const getImportDeclarationModuleSpecifier = (importDeclaration) => {
134
+ const sourceValue = importDeclaration.source.value;
135
+ return typeof sourceValue === "string" ? sourceValue : null;
136
+ };
137
+ /**
138
+ * Check whether a Program statement is part of the directive prologue (for
139
+ * example, `"use strict"`).
140
+ */
141
+ const isDirectiveExpressionStatement = (statement) => statement.type === "ExpressionStatement" &&
142
+ typeof statement.directive === "string";
143
+ /**
144
+ * Read and validate a node range tuple.
145
+ *
146
+ * @param node - Node whose range should be extracted.
147
+ *
148
+ * @returns `[start, end]` tuple when available and valid; otherwise `null`.
149
+ */
150
+ const getNodeRange = (node) => {
151
+ const nodeRange = node.range;
152
+ if (!Array.isArray(nodeRange)) {
153
+ return null;
154
+ }
155
+ const [start, end] = nodeRange;
156
+ if (!isInteger(start) || !isInteger(end)) {
157
+ return null;
158
+ }
159
+ if (start < 0 || end < start) {
160
+ return null;
161
+ }
162
+ return [start, end];
163
+ };
164
+ /**
165
+ * Read the numeric start offset from an ESTree node range tuple.
166
+ *
167
+ * @param node - Node whose start offset should be extracted.
168
+ *
169
+ * @returns Numeric start offset when available; otherwise `null`.
170
+ */
171
+ const getNodeRangeStart = (node) => {
172
+ const nodeRange = getNodeRange(node);
173
+ if (nodeRange === null) {
174
+ return null;
175
+ }
176
+ return arrayAt(nodeRange, 0) ?? null;
177
+ };
178
+ /**
179
+ * Read and validate the Program end offset from its range tuple.
180
+ *
181
+ * @param programNode - Program node whose range end should be read.
182
+ *
183
+ * @returns Valid end offset when available; otherwise `null`.
184
+ */
185
+ const getProgramRangeEnd = (programNode) => {
186
+ const programRange = getNodeRange(programNode);
187
+ return programRange?.[1] ?? null;
188
+ };
189
+ /**
190
+ * Build and cache insertion-layout metadata for one Program.
191
+ */
192
+ const getProgramInsertionLayout = (programNode) => {
193
+ const existingLayout = programInsertionLayoutCache.get(programNode);
194
+ if (existingLayout) {
195
+ return existingLayout;
196
+ }
197
+ const importDeclarations = [];
198
+ let firstRelativeImportDeclaration = null;
199
+ let lastNonRelativeImportDeclaration = null;
200
+ let lastDirectiveStatement = null;
201
+ let inDirectivePrologue = true;
202
+ for (const statement of programNode.body) {
203
+ if (inDirectivePrologue && isDirectiveExpressionStatement(statement)) {
204
+ lastDirectiveStatement = statement;
205
+ }
206
+ else {
207
+ inDirectivePrologue = false;
208
+ }
209
+ if (statement.type !== "ImportDeclaration") {
210
+ continue;
211
+ }
212
+ importDeclarations.push(statement);
213
+ const existingModuleSpecifier = getImportDeclarationModuleSpecifier(statement);
214
+ if (typeof existingModuleSpecifier === "string" &&
215
+ isRelativeModuleSpecifier(existingModuleSpecifier)) {
216
+ firstRelativeImportDeclaration ??= statement;
217
+ continue;
218
+ }
219
+ lastNonRelativeImportDeclaration = statement;
220
+ }
221
+ const [firstStatement] = programNode.body;
222
+ const layout = Object.freeze({
223
+ firstRelativeImportDeclaration,
224
+ firstStatementStart: firstStatement === undefined
225
+ ? null
226
+ : getNodeRangeStart(firstStatement),
227
+ importDeclarations: Object.freeze(importDeclarations),
228
+ lastDirectiveStatement,
229
+ lastImportDeclaration: arrayAt(importDeclarations, -1) ?? null,
230
+ lastNonRelativeImportDeclaration,
231
+ programEnd: getProgramRangeEnd(programNode),
232
+ });
233
+ programInsertionLayoutCache.set(programNode, layout);
234
+ return layout;
235
+ };
236
+ /**
237
+ * Create a fixer that inserts an import declaration in a safe location: after
238
+ * existing imports, after directive prologue, before first statement, or at
239
+ * file end for empty programs.
240
+ *
241
+ * @param options - Fix-planning options.
242
+ *
243
+ * - `fixer`: Rule fixer from ESLint.
244
+ * - `referenceNode`: Node used to discover the enclosing Program.
245
+ * - `importDeclarationText`: Full import declaration text to insert.
246
+ * - `moduleSpecifierHint`: Optional known module specifier that skips import-text
247
+ * parsing when provided.
248
+ *
249
+ * @returns Rule fix when insertion is possible; otherwise `null`.
250
+ */
251
+ export const createImportInsertionFix = (options) => {
252
+ const { fixer, importDeclarationText, moduleSpecifierHint, referenceNode } = options;
253
+ const normalizedImportDeclarationText = importDeclarationText.trim();
254
+ if (normalizedImportDeclarationText.length === 0) {
255
+ return null;
256
+ }
257
+ const programNode = getProgramNode(referenceNode);
258
+ if (!programNode) {
259
+ return null;
260
+ }
261
+ const insertionLayout = getProgramInsertionLayout(programNode);
262
+ if (insertionLayout.importDeclarations.length > 0) {
263
+ const moduleSpecifier = moduleSpecifierHint ??
264
+ getModuleSpecifierFromImportDeclarationText(normalizedImportDeclarationText);
265
+ if (typeof moduleSpecifier === "string" &&
266
+ !isRelativeModuleSpecifier(moduleSpecifier)) {
267
+ if (insertionLayout.lastNonRelativeImportDeclaration !== null) {
268
+ return fixer.insertTextAfter(insertionLayout.lastNonRelativeImportDeclaration, `\n${normalizedImportDeclarationText}`);
269
+ }
270
+ if (insertionLayout.firstRelativeImportDeclaration !== null) {
271
+ const firstRelativeImportStart = getNodeRangeStart(insertionLayout.firstRelativeImportDeclaration);
272
+ if (firstRelativeImportStart !== null) {
273
+ return fixer.insertTextBeforeRange([firstRelativeImportStart, firstRelativeImportStart], `${normalizedImportDeclarationText}\n`);
274
+ }
275
+ }
276
+ }
277
+ }
278
+ if (insertionLayout.lastImportDeclaration !== null) {
279
+ return fixer.insertTextAfter(insertionLayout.lastImportDeclaration, `\n${normalizedImportDeclarationText}`);
280
+ }
281
+ if (insertionLayout.lastDirectiveStatement !== null) {
282
+ return fixer.insertTextAfter(insertionLayout.lastDirectiveStatement, `\n${normalizedImportDeclarationText}`);
283
+ }
284
+ if (insertionLayout.firstStatementStart !== null) {
285
+ return fixer.insertTextBeforeRange([
286
+ insertionLayout.firstStatementStart,
287
+ insertionLayout.firstStatementStart,
288
+ ], `${normalizedImportDeclarationText}\n`);
289
+ }
290
+ if (insertionLayout.programEnd === null) {
291
+ return null;
292
+ }
293
+ return fixer.insertTextBeforeRange([insertionLayout.programEnd, insertionLayout.programEnd], `${insertionLayout.programEnd === 0 ? "" : "\n"}${normalizedImportDeclarationText}\n`);
294
+ };
295
+ //# sourceMappingURL=import-insertion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-insertion.js","sourceRoot":"","sources":["../../src/_internal/import-insertion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Internal shared utilities used by eslint-plugin-typefest rule modules and plugin wiring.
4
+ */
5
+ import type { TSESLint, TSESTree } from "@typescript-eslint/utils";
6
+ import { type ImportFixIntent } from "./import-fix-coordinator.js";
7
+ /**
8
+ * Matched imported type alias that can be replaced with a canonical name.
9
+ */
10
+ type ImportedTypeAliasMatch = {
11
+ importedName: string;
12
+ replacementName: string;
13
+ sourceValue: string;
14
+ };
15
+ /**
16
+ * Collects imported canonical type alias names that should be replaced by
17
+ * preferred type-fest utility names.
18
+ *
19
+ * @param sourceCode - Source code object for the current file.
20
+ * @param replacementsByImportedName - Mapping from imported symbol names to
21
+ * preferred replacement names.
22
+ *
23
+ * @returns Map keyed by canonical imported alias name with replacement
24
+ * metadata.
25
+ */
26
+ export declare const collectImportedTypeAliasMatches: (sourceCode: Readonly<TSESLint.SourceCode>, replacementsByImportedName: Readonly<Record<string, string>>) => ReadonlyMap<string, ImportedTypeAliasMatch>;
27
+ /**
28
+ * Collect direct (non-renamed) named imports for a specific source module.
29
+ *
30
+ * @param sourceCode - Source code object for the current file.
31
+ * @param expectedSourceValue - Module source string to match.
32
+ *
33
+ * @returns Set of imported identifier names.
34
+ */
35
+ export declare const collectDirectNamedImportsFromSource: (sourceCode: Readonly<TSESLint.SourceCode>, expectedSourceValue: string) => ReadonlySet<string>;
36
+ /**
37
+ * Collect local identifier names for a specific named import from a selected
38
+ * module source.
39
+ *
40
+ * @param sourceCode - Source code object for the current file.
41
+ * @param expectedSourceValue - Module source string to match.
42
+ * @param expectedImportedName - Imported symbol name to match.
43
+ *
44
+ * @returns Set of local identifier names (including aliased locals).
45
+ */
46
+ export declare const collectNamedImportLocalNamesFromSource: (sourceCode: Readonly<TSESLint.SourceCode>, expectedSourceValue: string, expectedImportedName: string) => ReadonlySet<string>;
47
+ /**
48
+ * Collect local identifier names for namespace imports from a selected module
49
+ * source.
50
+ *
51
+ * @param sourceCode - Source code object for the current file.
52
+ * @param expectedSourceValue - Module source string to match.
53
+ *
54
+ * @returns Set of namespace import local names.
55
+ */
56
+ export declare const collectNamespaceImportLocalNamesFromSource: (sourceCode: Readonly<TSESLint.SourceCode>, expectedSourceValue: string) => ReadonlySet<string>;
57
+ /**
58
+ * Determine whether a type parameter name is shadowed by any enclosing generic
59
+ * declaration.
60
+ *
61
+ * @param node - Node used as the starting point for ancestor traversal.
62
+ * @param parameterName - Type parameter name to detect.
63
+ *
64
+ * @returns `true` when an ancestor declares a matching type parameter.
65
+ */
66
+ export declare function isTypeParameterNameShadowed(node: Readonly<TSESTree.Node>, parameterName: string): boolean;
67
+ /**
68
+ * Build a safe type-reference replacement fixer.
69
+ *
70
+ * @param node - Type reference node to potentially fix.
71
+ * @param replacementName - Replacement identifier text.
72
+ * @param availableReplacementNames - Available direct imported replacement
73
+ * names.
74
+ * @param sourceModuleName - Module source used when validating/adding imports.
75
+ *
76
+ * @returns Fix function when replacement/import insertion is scope-safe;
77
+ * otherwise `null`.
78
+ */
79
+ export declare const createSafeTypeReferenceReplacementFix: (node: Readonly<TSESTree.TSTypeReference>, replacementName: string, availableReplacementNames: Readonly<ReadonlySet<string>>, sourceModuleName?: string, reportFixIntent?: ImportFixIntent) => null | TSESLint.ReportFixFunction;
80
+ /**
81
+ * Build a safe whole-type-node replacement fixer with custom replacement text.
82
+ *
83
+ * @param node - Type node to potentially replace.
84
+ * @param replacementName - Replacement symbol name used for import/scope safety
85
+ * checks.
86
+ * @param replacementText - Final replacement text to emit.
87
+ * @param availableReplacementNames - Available direct imported replacement
88
+ * names.
89
+ * @param sourceModuleName - Module source used when validating/adding imports.
90
+ *
91
+ * @returns Fix function when replacement/import insertion is scope-safe;
92
+ * otherwise `null`.
93
+ */
94
+ export declare const createSafeTypeNodeTextReplacementFix: (node: Readonly<TSESTree.Node>, replacementName: string, replacementText: string, availableReplacementNames: Readonly<ReadonlySet<string>>, sourceModuleName?: string, reportFixIntent?: ImportFixIntent) => null | TSESLint.ReportFixFunction;
95
+ /**
96
+ * Build a safe whole-type-node replacement fixer.
97
+ *
98
+ * @param node - Type node to potentially replace.
99
+ * @param replacementName - Replacement identifier text.
100
+ * @param availableReplacementNames - Available direct imported replacement
101
+ * names.
102
+ * @param sourceModuleName - Module source used when validating/adding imports.
103
+ *
104
+ * @returns Fix function when replacement/import insertion is scope-safe;
105
+ * otherwise `null`.
106
+ */
107
+ export declare const createSafeTypeNodeReplacementFix: (node: Readonly<TSESTree.Node>, replacementName: string, availableReplacementNames: Readonly<ReadonlySet<string>>, sourceModuleName?: string, reportFixIntent?: ImportFixIntent) => null | TSESLint.ReportFixFunction;
108
+ /**
109
+ * Build a safe whole-type-node replacement fixer that preserves explicit
110
+ * readonly wrappers/operators from the original node.
111
+ *
112
+ * @param node - Type node to potentially replace.
113
+ * @param replacementName - Replacement symbol name used for import/scope safety
114
+ * checks.
115
+ * @param replacementText - Final replacement text before readonly-preservation
116
+ * adjustment.
117
+ * @param availableReplacementNames - Available direct imported replacement
118
+ * names.
119
+ * @param sourceModuleName - Module source used when validating/adding imports.
120
+ *
121
+ * @returns Fix function when replacement/import insertion is scope-safe;
122
+ * otherwise `null`.
123
+ */
124
+ export declare const createSafeTypeNodeTextReplacementFixPreservingReadonly: (node: Readonly<TSESTree.Node>, replacementName: string, replacementText: string, availableReplacementNames: Readonly<ReadonlySet<string>>, sourceModuleName?: string, reportFixIntent?: ImportFixIntent) => null | TSESLint.ReportFixFunction;
125
+ /**
126
+ * Build a safe whole-type-node replacement fixer that preserves explicit
127
+ * readonly wrappers/operators from the original node.
128
+ *
129
+ * @param node - Type node to potentially replace.
130
+ * @param replacementName - Replacement identifier text.
131
+ * @param availableReplacementNames - Available direct imported replacement
132
+ * names.
133
+ * @param sourceModuleName - Module source used when validating/adding imports.
134
+ *
135
+ * @returns Fix function when replacement/import insertion is scope-safe;
136
+ * otherwise `null`.
137
+ */
138
+ export declare const createSafeTypeNodeReplacementFixPreservingReadonly: (node: Readonly<TSESTree.Node>, replacementName: string, availableReplacementNames: Readonly<ReadonlySet<string>>, sourceModuleName?: string, reportFixIntent?: ImportFixIntent) => null | TSESLint.ReportFixFunction;
139
+ export {};
140
+ //# sourceMappingURL=imported-type-aliases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imported-type-aliases.d.ts","sourceRoot":"","sources":["../../src/_internal/imported-type-aliases.ts"],"names":[],"mappings":"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"}