@depup/typescript-eslint__eslint-plugin 8.57.1-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/changes.json +5 -0
  4. package/dist/configs/eslint-recommended-raw.d.ts +10 -0
  5. package/dist/configs/eslint-recommended-raw.js +46 -0
  6. package/dist/configs/eslintrc/all.d.ts +159 -0
  7. package/dist/configs/eslintrc/all.js +165 -0
  8. package/dist/configs/eslintrc/base.d.ts +8 -0
  9. package/dist/configs/eslintrc/base.js +6 -0
  10. package/dist/configs/eslintrc/disable-type-checked.d.ts +71 -0
  11. package/dist/configs/eslintrc/disable-type-checked.js +73 -0
  12. package/dist/configs/eslintrc/eslint-recommended.d.ts +12 -0
  13. package/dist/configs/eslintrc/eslint-recommended.js +13 -0
  14. package/dist/configs/eslintrc/recommended-type-checked-only.d.ts +33 -0
  15. package/dist/configs/eslintrc/recommended-type-checked-only.js +39 -0
  16. package/dist/configs/eslintrc/recommended-type-checked.d.ts +56 -0
  17. package/dist/configs/eslintrc/recommended-type-checked.js +62 -0
  18. package/dist/configs/eslintrc/recommended.d.ts +29 -0
  19. package/dist/configs/eslintrc/recommended.js +35 -0
  20. package/dist/configs/eslintrc/strict-type-checked-only.d.ts +64 -0
  21. package/dist/configs/eslintrc/strict-type-checked-only.js +79 -0
  22. package/dist/configs/eslintrc/strict-type-checked.d.ts +98 -0
  23. package/dist/configs/eslintrc/strict-type-checked.js +114 -0
  24. package/dist/configs/eslintrc/strict.d.ts +40 -0
  25. package/dist/configs/eslintrc/strict.js +47 -0
  26. package/dist/configs/eslintrc/stylistic-type-checked-only.d.ts +15 -0
  27. package/dist/configs/eslintrc/stylistic-type-checked-only.js +21 -0
  28. package/dist/configs/eslintrc/stylistic-type-checked.d.ts +29 -0
  29. package/dist/configs/eslintrc/stylistic-type-checked.js +35 -0
  30. package/dist/configs/eslintrc/stylistic.d.ts +20 -0
  31. package/dist/configs/eslintrc/stylistic.js +26 -0
  32. package/dist/configs/flat/all.d.ts +7 -0
  33. package/dist/configs/flat/all.js +179 -0
  34. package/dist/configs/flat/base.d.ts +8 -0
  35. package/dist/configs/flat/base.js +17 -0
  36. package/dist/configs/flat/disable-type-checked.d.ts +7 -0
  37. package/dist/configs/flat/disable-type-checked.js +81 -0
  38. package/dist/configs/flat/eslint-recommended.d.ts +9 -0
  39. package/dist/configs/flat/eslint-recommended.js +16 -0
  40. package/dist/configs/flat/recommended-type-checked-only.d.ts +7 -0
  41. package/dist/configs/flat/recommended-type-checked-only.js +53 -0
  42. package/dist/configs/flat/recommended-type-checked.d.ts +7 -0
  43. package/dist/configs/flat/recommended-type-checked.js +76 -0
  44. package/dist/configs/flat/recommended.d.ts +7 -0
  45. package/dist/configs/flat/recommended.js +49 -0
  46. package/dist/configs/flat/strict-type-checked-only.d.ts +7 -0
  47. package/dist/configs/flat/strict-type-checked-only.js +93 -0
  48. package/dist/configs/flat/strict-type-checked.d.ts +7 -0
  49. package/dist/configs/flat/strict-type-checked.js +128 -0
  50. package/dist/configs/flat/strict.d.ts +7 -0
  51. package/dist/configs/flat/strict.js +61 -0
  52. package/dist/configs/flat/stylistic-type-checked-only.d.ts +7 -0
  53. package/dist/configs/flat/stylistic-type-checked-only.js +35 -0
  54. package/dist/configs/flat/stylistic-type-checked.d.ts +7 -0
  55. package/dist/configs/flat/stylistic-type-checked.js +49 -0
  56. package/dist/configs/flat/stylistic.d.ts +7 -0
  57. package/dist/configs/flat/stylistic.js +40 -0
  58. package/dist/index.d.ts +1128 -0
  59. package/dist/index.js +6 -0
  60. package/dist/raw-plugin.d.ts +1152 -0
  61. package/dist/raw-plugin.js +122 -0
  62. package/dist/rules/adjacent-overload-signatures.d.ts +4 -0
  63. package/dist/rules/adjacent-overload-signatures.js +124 -0
  64. package/dist/rules/array-type.d.ts +12 -0
  65. package/dist/rules/array-type.js +232 -0
  66. package/dist/rules/await-thenable.d.ts +6 -0
  67. package/dist/rules/await-thenable.js +228 -0
  68. package/dist/rules/ban-ts-comment.d.ts +17 -0
  69. package/dist/rules/ban-ts-comment.js +195 -0
  70. package/dist/rules/ban-tslint-comment.d.ts +4 -0
  71. package/dist/rules/ban-tslint-comment.js +53 -0
  72. package/dist/rules/class-literal-property-style.d.ts +7 -0
  73. package/dist/rules/class-literal-property-style.js +160 -0
  74. package/dist/rules/class-methods-use-this.d.ts +13 -0
  75. package/dist/rules/class-methods-use-this.js +219 -0
  76. package/dist/rules/consistent-generic-constructors.d.ts +6 -0
  77. package/dist/rules/consistent-generic-constructors.js +126 -0
  78. package/dist/rules/consistent-indexed-object-style.d.ts +7 -0
  79. package/dist/rules/consistent-indexed-object-style.js +256 -0
  80. package/dist/rules/consistent-return.d.ts +18 -0
  81. package/dist/rules/consistent-return.js +135 -0
  82. package/dist/rules/consistent-type-assertions.d.ts +14 -0
  83. package/dist/rules/consistent-type-assertions.js +256 -0
  84. package/dist/rules/consistent-type-definitions.d.ts +5 -0
  85. package/dist/rules/consistent-type-definitions.js +100 -0
  86. package/dist/rules/consistent-type-exports.d.ts +11 -0
  87. package/dist/rules/consistent-type-exports.js +335 -0
  88. package/dist/rules/consistent-type-imports.d.ts +15 -0
  89. package/dist/rules/consistent-type-imports.js +608 -0
  90. package/dist/rules/default-param-last.d.ts +4 -0
  91. package/dist/rules/default-param-last.js +68 -0
  92. package/dist/rules/dot-notation.d.ts +23 -0
  93. package/dist/rules/dot-notation.js +139 -0
  94. package/dist/rules/enum-utils/shared.d.ts +36 -0
  95. package/dist/rules/enum-utils/shared.js +121 -0
  96. package/dist/rules/explicit-function-return-type.d.ts +17 -0
  97. package/dist/rules/explicit-function-return-type.js +179 -0
  98. package/dist/rules/explicit-member-accessibility.d.ts +19 -0
  99. package/dist/rules/explicit-member-accessibility.js +299 -0
  100. package/dist/rules/explicit-module-boundary-types.d.ts +15 -0
  101. package/dist/rules/explicit-module-boundary-types.js +386 -0
  102. package/dist/rules/index.d.ts +448 -0
  103. package/dist/rules/index.js +275 -0
  104. package/dist/rules/init-declarations.d.ts +15 -0
  105. package/dist/rules/init-declarations.js +105 -0
  106. package/dist/rules/max-params.d.ts +25 -0
  107. package/dist/rules/max-params.js +72 -0
  108. package/dist/rules/member-ordering.d.ts +33 -0
  109. package/dist/rules/member-ordering.js +833 -0
  110. package/dist/rules/method-signature-style.d.ts +6 -0
  111. package/dist/rules/method-signature-style.js +186 -0
  112. package/dist/rules/naming-convention-utils/enums.d.ts +79 -0
  113. package/dist/rules/naming-convention-utils/enums.js +102 -0
  114. package/dist/rules/naming-convention-utils/format.d.ts +2 -0
  115. package/dist/rules/naming-convention-utils/format.js +89 -0
  116. package/dist/rules/naming-convention-utils/index.d.ts +6 -0
  117. package/dist/rules/naming-convention-utils/index.js +11 -0
  118. package/dist/rules/naming-convention-utils/parse-options.d.ts +2 -0
  119. package/dist/rules/naming-convention-utils/parse-options.js +69 -0
  120. package/dist/rules/naming-convention-utils/schema.d.ts +2 -0
  121. package/dist/rules/naming-convention-utils/schema.js +305 -0
  122. package/dist/rules/naming-convention-utils/shared.d.ts +5 -0
  123. package/dist/rules/naming-convention-utils/shared.js +16 -0
  124. package/dist/rules/naming-convention-utils/types.d.ts +39 -0
  125. package/dist/rules/naming-convention-utils/types.js +2 -0
  126. package/dist/rules/naming-convention-utils/validator.d.ts +3 -0
  127. package/dist/rules/naming-convention-utils/validator.js +349 -0
  128. package/dist/rules/naming-convention.d.ts +8 -0
  129. package/dist/rules/naming-convention.js +505 -0
  130. package/dist/rules/no-array-constructor.d.ts +4 -0
  131. package/dist/rules/no-array-constructor.js +62 -0
  132. package/dist/rules/no-array-delete.d.ts +6 -0
  133. package/dist/rules/no-array-delete.js +80 -0
  134. package/dist/rules/no-base-to-string.d.ts +11 -0
  135. package/dist/rules/no-base-to-string.js +324 -0
  136. package/dist/rules/no-confusing-non-null-assertion.d.ts +6 -0
  137. package/dist/rules/no-confusing-non-null-assertion.js +142 -0
  138. package/dist/rules/no-confusing-void-expression.d.ts +13 -0
  139. package/dist/rules/no-confusing-void-expression.js +357 -0
  140. package/dist/rules/no-deprecated.d.ts +11 -0
  141. package/dist/rules/no-deprecated.js +402 -0
  142. package/dist/rules/no-dupe-class-members.d.ts +14 -0
  143. package/dist/rules/no-dupe-class-members.js +39 -0
  144. package/dist/rules/no-duplicate-enum-values.d.ts +4 -0
  145. package/dist/rules/no-duplicate-enum-values.js +83 -0
  146. package/dist/rules/no-duplicate-type-constituents.d.ts +11 -0
  147. package/dist/rules/no-duplicate-type-constituents.js +219 -0
  148. package/dist/rules/no-dynamic-delete.d.ts +4 -0
  149. package/dist/rules/no-dynamic-delete.js +42 -0
  150. package/dist/rules/no-empty-function.d.ts +16 -0
  151. package/dist/rules/no-empty-function.js +134 -0
  152. package/dist/rules/no-empty-interface.d.ts +11 -0
  153. package/dist/rules/no-empty-interface.js +102 -0
  154. package/dist/rules/no-empty-object-type.d.ts +15 -0
  155. package/dist/rules/no-empty-object-type.js +143 -0
  156. package/dist/rules/no-explicit-any.d.ts +12 -0
  157. package/dist/rules/no-explicit-any.js +197 -0
  158. package/dist/rules/no-extra-non-null-assertion.d.ts +4 -0
  159. package/dist/rules/no-extra-non-null-assertion.js +35 -0
  160. package/dist/rules/no-extraneous-class.d.ts +13 -0
  161. package/dist/rules/no-extraneous-class.js +120 -0
  162. package/dist/rules/no-floating-promises.d.ts +16 -0
  163. package/dist/rules/no-floating-promises.js +365 -0
  164. package/dist/rules/no-for-in-array.d.ts +4 -0
  165. package/dist/rules/no-for-in-array.js +86 -0
  166. package/dist/rules/no-implied-eval.d.ts +4 -0
  167. package/dist/rules/no-implied-eval.js +152 -0
  168. package/dist/rules/no-import-type-side-effects.d.ts +7 -0
  169. package/dist/rules/no-import-type-side-effects.js +53 -0
  170. package/dist/rules/no-inferrable-types.d.ts +11 -0
  171. package/dist/rules/no-inferrable-types.js +182 -0
  172. package/dist/rules/no-invalid-this.d.ts +15 -0
  173. package/dist/rules/no-invalid-this.js +75 -0
  174. package/dist/rules/no-invalid-void-type.d.ts +9 -0
  175. package/dist/rules/no-invalid-void-type.js +210 -0
  176. package/dist/rules/no-loop-func.d.ts +13 -0
  177. package/dist/rules/no-loop-func.js +187 -0
  178. package/dist/rules/no-loss-of-precision.d.ts +9 -0
  179. package/dist/rules/no-loss-of-precision.js +35 -0
  180. package/dist/rules/no-magic-numbers.d.ts +29 -0
  181. package/dist/rules/no-magic-numbers.js +248 -0
  182. package/dist/rules/no-meaningless-void-operator.d.ts +10 -0
  183. package/dist/rules/no-meaningless-void-operator.js +102 -0
  184. package/dist/rules/no-misused-new.d.ts +4 -0
  185. package/dist/rules/no-misused-new.js +81 -0
  186. package/dist/rules/no-misused-promises.d.ts +21 -0
  187. package/dist/rules/no-misused-promises.js +765 -0
  188. package/dist/rules/no-misused-spread.d.ts +12 -0
  189. package/dist/rules/no-misused-spread.js +260 -0
  190. package/dist/rules/no-mixed-enums.d.ts +4 -0
  191. package/dist/rules/no-mixed-enums.js +200 -0
  192. package/dist/rules/no-namespace.d.ts +11 -0
  193. package/dist/rules/no-namespace.js +60 -0
  194. package/dist/rules/no-non-null-asserted-nullish-coalescing.d.ts +5 -0
  195. package/dist/rules/no-non-null-asserted-nullish-coalescing.js +73 -0
  196. package/dist/rules/no-non-null-asserted-optional-chain.d.ts +5 -0
  197. package/dist/rules/no-non-null-asserted-optional-chain.js +65 -0
  198. package/dist/rules/no-non-null-assertion.d.ts +6 -0
  199. package/dist/rules/no-non-null-assertion.js +93 -0
  200. package/dist/rules/no-redeclare.d.ts +12 -0
  201. package/dist/rules/no-redeclare.js +199 -0
  202. package/dist/rules/no-redundant-type-constituents.d.ts +4 -0
  203. package/dist/rules/no-redundant-type-constituents.js +431 -0
  204. package/dist/rules/no-require-imports.d.ts +11 -0
  205. package/dist/rules/no-require-imports.js +115 -0
  206. package/dist/rules/no-restricted-imports.d.ts +9 -0
  207. package/dist/rules/no-restricted-imports.js +243 -0
  208. package/dist/rules/no-restricted-types.d.ts +16 -0
  209. package/dist/rules/no-restricted-types.js +165 -0
  210. package/dist/rules/no-shadow.d.ts +16 -0
  211. package/dist/rules/no-shadow.js +521 -0
  212. package/dist/rules/no-this-alias.d.ts +11 -0
  213. package/dist/rules/no-this-alias.js +66 -0
  214. package/dist/rules/no-type-alias.d.ts +18 -0
  215. package/dist/rules/no-type-alias.js +268 -0
  216. package/dist/rules/no-unnecessary-boolean-literal-compare.d.ts +12 -0
  217. package/dist/rules/no-unnecessary-boolean-literal-compare.js +263 -0
  218. package/dist/rules/no-unnecessary-condition.d.ts +14 -0
  219. package/dist/rules/no-unnecessary-condition.js +675 -0
  220. package/dist/rules/no-unnecessary-parameter-property-assignment.d.ts +4 -0
  221. package/dist/rules/no-unnecessary-parameter-property-assignment.js +148 -0
  222. package/dist/rules/no-unnecessary-qualifier.d.ts +4 -0
  223. package/dist/rules/no-unnecessary-qualifier.js +156 -0
  224. package/dist/rules/no-unnecessary-template-expression.d.ts +6 -0
  225. package/dist/rules/no-unnecessary-template-expression.js +361 -0
  226. package/dist/rules/no-unnecessary-type-arguments.d.ts +5 -0
  227. package/dist/rules/no-unnecessary-type-arguments.js +197 -0
  228. package/dist/rules/no-unnecessary-type-assertion.d.ts +11 -0
  229. package/dist/rules/no-unnecessary-type-assertion.js +353 -0
  230. package/dist/rules/no-unnecessary-type-constraint.d.ts +5 -0
  231. package/dist/rules/no-unnecessary-type-constraint.js +119 -0
  232. package/dist/rules/no-unnecessary-type-conversion.d.ts +5 -0
  233. package/dist/rules/no-unnecessary-type-conversion.js +356 -0
  234. package/dist/rules/no-unnecessary-type-parameters.d.ts +5 -0
  235. package/dist/rules/no-unnecessary-type-parameters.js +422 -0
  236. package/dist/rules/no-unsafe-argument.d.ts +5 -0
  237. package/dist/rules/no-unsafe-argument.js +272 -0
  238. package/dist/rules/no-unsafe-assignment.d.ts +4 -0
  239. package/dist/rules/no-unsafe-assignment.js +322 -0
  240. package/dist/rules/no-unsafe-call.d.ts +5 -0
  241. package/dist/rules/no-unsafe-call.js +136 -0
  242. package/dist/rules/no-unsafe-declaration-merging.d.ts +4 -0
  243. package/dist/rules/no-unsafe-declaration-merging.js +54 -0
  244. package/dist/rules/no-unsafe-enum-comparison.d.ts +5 -0
  245. package/dist/rules/no-unsafe-enum-comparison.js +192 -0
  246. package/dist/rules/no-unsafe-function-type.d.ts +4 -0
  247. package/dist/rules/no-unsafe-function-type.js +45 -0
  248. package/dist/rules/no-unsafe-member-access.d.ts +10 -0
  249. package/dist/rules/no-unsafe-member-access.js +183 -0
  250. package/dist/rules/no-unsafe-return.d.ts +4 -0
  251. package/dist/rules/no-unsafe-return.js +183 -0
  252. package/dist/rules/no-unsafe-type-assertion.d.ts +4 -0
  253. package/dist/rules/no-unsafe-type-assertion.js +158 -0
  254. package/dist/rules/no-unsafe-unary-minus.d.ts +6 -0
  255. package/dist/rules/no-unsafe-unary-minus.js +78 -0
  256. package/dist/rules/no-unused-expressions.d.ts +19 -0
  257. package/dist/rules/no-unused-expressions.js +64 -0
  258. package/dist/rules/no-unused-private-class-members.d.ts +6 -0
  259. package/dist/rules/no-unused-private-class-members.js +44 -0
  260. package/dist/rules/no-unused-vars.d.ts +24 -0
  261. package/dist/rules/no-unused-vars.js +1033 -0
  262. package/dist/rules/no-use-before-define.d.ts +16 -0
  263. package/dist/rules/no-use-before-define.js +303 -0
  264. package/dist/rules/no-useless-constructor.d.ts +11 -0
  265. package/dist/rules/no-useless-constructor.js +57 -0
  266. package/dist/rules/no-useless-default-assignment.d.ts +11 -0
  267. package/dist/rules/no-useless-default-assignment.js +318 -0
  268. package/dist/rules/no-useless-empty-export.d.ts +4 -0
  269. package/dist/rules/no-useless-empty-export.js +70 -0
  270. package/dist/rules/no-var-requires.d.ts +10 -0
  271. package/dist/rules/no-var-requires.js +83 -0
  272. package/dist/rules/no-wrapper-object-types.d.ts +5 -0
  273. package/dist/rules/no-wrapper-object-types.js +60 -0
  274. package/dist/rules/non-nullable-type-assertion-style.d.ts +4 -0
  275. package/dist/rules/non-nullable-type-assertion-style.js +132 -0
  276. package/dist/rules/only-throw-error.d.ts +14 -0
  277. package/dist/rules/only-throw-error.js +158 -0
  278. package/dist/rules/parameter-properties.d.ts +13 -0
  279. package/dist/rules/parameter-properties.js +164 -0
  280. package/dist/rules/prefer-as-const.d.ts +5 -0
  281. package/dist/rules/prefer-as-const.js +72 -0
  282. package/dist/rules/prefer-destructuring.d.ts +19 -0
  283. package/dist/rules/prefer-destructuring.js +216 -0
  284. package/dist/rules/prefer-enum-initializers.d.ts +6 -0
  285. package/dist/rules/prefer-enum-initializers.js +62 -0
  286. package/dist/rules/prefer-find.d.ts +5 -0
  287. package/dist/rules/prefer-find.js +247 -0
  288. package/dist/rules/prefer-for-of.d.ts +5 -0
  289. package/dist/rules/prefer-for-of.js +115 -0
  290. package/dist/rules/prefer-function-type.d.ts +9 -0
  291. package/dist/rules/prefer-function-type.js +186 -0
  292. package/dist/rules/prefer-includes.d.ts +5 -0
  293. package/dist/rules/prefer-includes.js +242 -0
  294. package/dist/rules/prefer-literal-enum-member.d.ts +6 -0
  295. package/dist/rules/prefer-literal-enum-member.js +116 -0
  296. package/dist/rules/prefer-namespace-keyword.d.ts +4 -0
  297. package/dist/rules/prefer-namespace-keyword.js +42 -0
  298. package/dist/rules/prefer-nullish-coalescing.d.ts +22 -0
  299. package/dist/rules/prefer-nullish-coalescing.js +647 -0
  300. package/dist/rules/prefer-optional-chain-utils/PreferOptionalChainOptions.d.ts +11 -0
  301. package/dist/rules/prefer-optional-chain-utils/PreferOptionalChainOptions.js +2 -0
  302. package/dist/rules/prefer-optional-chain-utils/analyzeChain.d.ts +7 -0
  303. package/dist/rules/prefer-optional-chain-utils/analyzeChain.js +569 -0
  304. package/dist/rules/prefer-optional-chain-utils/checkNullishAndReport.d.ts +6 -0
  305. package/dist/rules/prefer-optional-chain-utils/checkNullishAndReport.js +45 -0
  306. package/dist/rules/prefer-optional-chain-utils/compareNodes.d.ts +15 -0
  307. package/dist/rules/prefer-optional-chain-utils/compareNodes.js +326 -0
  308. package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.d.ts +61 -0
  309. package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.js +411 -0
  310. package/dist/rules/prefer-optional-chain.d.ts +5 -0
  311. package/dist/rules/prefer-optional-chain.js +150 -0
  312. package/dist/rules/prefer-promise-reject-errors.d.ts +14 -0
  313. package/dist/rules/prefer-promise-reject-errors.js +124 -0
  314. package/dist/rules/prefer-readonly-parameter-types.d.ts +14 -0
  315. package/dist/rules/prefer-readonly-parameter-types.js +89 -0
  316. package/dist/rules/prefer-readonly.d.ts +10 -0
  317. package/dist/rules/prefer-readonly.js +439 -0
  318. package/dist/rules/prefer-reduce-type-parameter.d.ts +4 -0
  319. package/dist/rules/prefer-reduce-type-parameter.js +114 -0
  320. package/dist/rules/prefer-regexp-exec.d.ts +4 -0
  321. package/dist/rules/prefer-regexp-exec.js +178 -0
  322. package/dist/rules/prefer-return-this-type.d.ts +4 -0
  323. package/dist/rules/prefer-return-this-type.js +154 -0
  324. package/dist/rules/prefer-string-starts-ends-with.d.ts +12 -0
  325. package/dist/rules/prefer-string-starts-ends-with.js +512 -0
  326. package/dist/rules/prefer-ts-expect-error.d.ts +5 -0
  327. package/dist/rules/prefer-ts-expect-error.js +71 -0
  328. package/dist/rules/promise-function-async.d.ts +15 -0
  329. package/dist/rules/promise-function-async.js +204 -0
  330. package/dist/rules/related-getter-setter-pairs.d.ts +4 -0
  331. package/dist/rules/related-getter-setter-pairs.js +71 -0
  332. package/dist/rules/require-array-sort-compare.d.ts +10 -0
  333. package/dist/rules/require-array-sort-compare.js +63 -0
  334. package/dist/rules/require-await.d.ts +4 -0
  335. package/dist/rules/require-await.js +263 -0
  336. package/dist/rules/restrict-plus-operands.d.ts +15 -0
  337. package/dist/rules/restrict-plus-operands.js +231 -0
  338. package/dist/rules/restrict-template-expressions.d.ts +19 -0
  339. package/dist/rules/restrict-template-expressions.js +119 -0
  340. package/dist/rules/return-await.d.ts +5 -0
  341. package/dist/rules/return-await.js +363 -0
  342. package/dist/rules/sort-type-constituents.d.ts +14 -0
  343. package/dist/rules/sort-type-constituents.js +272 -0
  344. package/dist/rules/strict-boolean-expressions.d.ts +19 -0
  345. package/dist/rules/strict-boolean-expressions.js +882 -0
  346. package/dist/rules/strict-void-return.d.ts +10 -0
  347. package/dist/rules/strict-void-return.js +374 -0
  348. package/dist/rules/switch-exhaustiveness-check.d.ts +33 -0
  349. package/dist/rules/switch-exhaustiveness-check.js +291 -0
  350. package/dist/rules/triple-slash-reference.d.ts +12 -0
  351. package/dist/rules/triple-slash-reference.js +110 -0
  352. package/dist/rules/typedef.d.ts +16 -0
  353. package/dist/rules/typedef.js +239 -0
  354. package/dist/rules/unbound-method.d.ts +9 -0
  355. package/dist/rules/unbound-method.js +334 -0
  356. package/dist/rules/unified-signatures.d.ts +11 -0
  357. package/dist/rules/unified-signatures.js +465 -0
  358. package/dist/rules/use-unknown-in-catch-callback-variable.d.ts +6 -0
  359. package/dist/rules/use-unknown-in-catch-callback-variable.js +261 -0
  360. package/dist/util/assertionFunctionUtils.d.ts +16 -0
  361. package/dist/util/assertionFunctionUtils.js +116 -0
  362. package/dist/util/astUtils.d.ts +17 -0
  363. package/dist/util/astUtils.js +143 -0
  364. package/dist/util/baseTypeUtils.d.ts +13 -0
  365. package/dist/util/baseTypeUtils.js +75 -0
  366. package/dist/util/class-scope-analyzer/classScopeAnalyzer.d.ts +52 -0
  367. package/dist/util/class-scope-analyzer/classScopeAnalyzer.js +566 -0
  368. package/dist/util/class-scope-analyzer/extractComputedName.d.ts +17 -0
  369. package/dist/util/class-scope-analyzer/extractComputedName.js +70 -0
  370. package/dist/util/class-scope-analyzer/types.d.ts +12 -0
  371. package/dist/util/class-scope-analyzer/types.js +10 -0
  372. package/dist/util/collectUnusedVariables.d.ts +15 -0
  373. package/dist/util/collectUnusedVariables.js +598 -0
  374. package/dist/util/createRule.d.ts +5 -0
  375. package/dist/util/createRule.js +5 -0
  376. package/dist/util/escapeRegExp.d.ts +1 -0
  377. package/dist/util/escapeRegExp.js +14 -0
  378. package/dist/util/explicitReturnTypeUtils.d.ts +47 -0
  379. package/dist/util/explicitReturnTypeUtils.js +238 -0
  380. package/dist/util/getBaseTypesOfClassMember.d.ts +11 -0
  381. package/dist/util/getBaseTypesOfClassMember.js +31 -0
  382. package/dist/util/getConstraintInfo.d.ts +35 -0
  383. package/dist/util/getConstraintInfo.js +70 -0
  384. package/dist/util/getESLintCoreRule.d.ts +27 -0
  385. package/dist/util/getESLintCoreRule.js +16 -0
  386. package/dist/util/getFixOrSuggest.d.ts +9 -0
  387. package/dist/util/getFixOrSuggest.js +13 -0
  388. package/dist/util/getForStatementHeadLoc.d.ts +17 -0
  389. package/dist/util/getForStatementHeadLoc.js +26 -0
  390. package/dist/util/getFunctionHeadLoc.d.ts +101 -0
  391. package/dist/util/getFunctionHeadLoc.js +161 -0
  392. package/dist/util/getMemberHeadLoc.d.ts +36 -0
  393. package/dist/util/getMemberHeadLoc.js +79 -0
  394. package/dist/util/getOperatorPrecedence.d.ts +39 -0
  395. package/dist/util/getOperatorPrecedence.js +421 -0
  396. package/dist/util/getParentFunctionNode.d.ts +2 -0
  397. package/dist/util/getParentFunctionNode.js +18 -0
  398. package/dist/util/getStaticStringValue.d.ts +11 -0
  399. package/dist/util/getStaticStringValue.js +44 -0
  400. package/dist/util/getStringLength.d.ts +1 -0
  401. package/dist/util/getStringLength.js +14 -0
  402. package/dist/util/getTextWithParentheses.d.ts +3 -0
  403. package/dist/util/getTextWithParentheses.js +16 -0
  404. package/dist/util/getThisExpression.d.ts +2 -0
  405. package/dist/util/getThisExpression.js +24 -0
  406. package/dist/util/getValueOfLiteralType.d.ts +2 -0
  407. package/dist/util/getValueOfLiteralType.js +16 -0
  408. package/dist/util/getWrappedCode.d.ts +2 -0
  409. package/dist/util/getWrappedCode.js +6 -0
  410. package/dist/util/getWrappingFixer.d.ts +42 -0
  411. package/dist/util/getWrappingFixer.js +184 -0
  412. package/dist/util/hasOverloadSignatures.d.ts +6 -0
  413. package/dist/util/hasOverloadSignatures.js +47 -0
  414. package/dist/util/index.d.ts +40 -0
  415. package/dist/util/index.js +53 -0
  416. package/dist/util/isArrayMethodCallWithPredicate.d.ts +3 -0
  417. package/dist/util/isArrayMethodCallWithPredicate.js +64 -0
  418. package/dist/util/isAssignee.d.ts +2 -0
  419. package/dist/util/isAssignee.js +50 -0
  420. package/dist/util/isHigherPrecedenceThanAwait.d.ts +2 -0
  421. package/dist/util/isHigherPrecedenceThanAwait.js +46 -0
  422. package/dist/util/isNodeEqual.d.ts +2 -0
  423. package/dist/util/isNodeEqual.js +25 -0
  424. package/dist/util/isNullLiteral.d.ts +2 -0
  425. package/dist/util/isNullLiteral.js +7 -0
  426. package/dist/util/isPromiseAggregatorMethod.d.ts +3 -0
  427. package/dist/util/isPromiseAggregatorMethod.js +22 -0
  428. package/dist/util/isStartOfExpressionStatement.d.ts +7 -0
  429. package/dist/util/isStartOfExpressionStatement.js +22 -0
  430. package/dist/util/isTypeImport.d.ts +12 -0
  431. package/dist/util/isTypeImport.js +21 -0
  432. package/dist/util/isUndefinedIdentifier.d.ts +2 -0
  433. package/dist/util/isUndefinedIdentifier.js +7 -0
  434. package/dist/util/misc.d.ts +115 -0
  435. package/dist/util/misc.js +270 -0
  436. package/dist/util/needsPrecedingSemiColon.d.ts +11 -0
  437. package/dist/util/needsPrecedingSemiColon.js +97 -0
  438. package/dist/util/needsToBeAwaited.d.ts +7 -0
  439. package/dist/util/needsToBeAwaited.js +63 -0
  440. package/dist/util/objectIterators.d.ts +3 -0
  441. package/dist/util/objectIterators.js +25 -0
  442. package/dist/util/promiseUtils.d.ts +27 -0
  443. package/dist/util/promiseUtils.js +98 -0
  444. package/dist/util/rangeToLoc.d.ts +2 -0
  445. package/dist/util/rangeToLoc.js +9 -0
  446. package/dist/util/referenceContainsTypeQuery.d.ts +5 -0
  447. package/dist/util/referenceContainsTypeQuery.js +19 -0
  448. package/dist/util/scopeUtils.d.ts +3 -0
  449. package/dist/util/scopeUtils.js +10 -0
  450. package/dist/util/skipChainExpression.d.ts +2 -0
  451. package/dist/util/skipChainExpression.js +7 -0
  452. package/dist/util/truthinessUtils.d.ts +3 -0
  453. package/dist/util/truthinessUtils.js +60 -0
  454. package/dist/util/types.d.ts +2 -0
  455. package/dist/util/types.js +2 -0
  456. package/dist/util/walkStatements.d.ts +7 -0
  457. package/dist/util/walkStatements.js +56 -0
  458. package/index.d.ts +13 -0
  459. package/package.json +137 -0
  460. package/raw-plugin.d.ts +25 -0
  461. package/rules.d.ts +87 -0
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeComparisonResult = void 0;
4
+ exports.compareNodes = compareNodes;
5
+ const utils_1 = require("@typescript-eslint/utils");
6
+ const visitor_keys_1 = require("@typescript-eslint/visitor-keys");
7
+ var NodeComparisonResult;
8
+ (function (NodeComparisonResult) {
9
+ /** the two nodes are comparably the same */
10
+ NodeComparisonResult["Equal"] = "Equal";
11
+ /** the left node is a subset of the right node */
12
+ NodeComparisonResult["Subset"] = "Subset";
13
+ /** the left node is not the same or is a superset of the right node */
14
+ NodeComparisonResult["Invalid"] = "Invalid";
15
+ })(NodeComparisonResult || (exports.NodeComparisonResult = NodeComparisonResult = {}));
16
+ function compareArrays(arrayA, arrayB) {
17
+ if (arrayA.length !== arrayB.length) {
18
+ return NodeComparisonResult.Invalid;
19
+ }
20
+ const result = arrayA.every((elA, idx) => {
21
+ const elB = arrayB[idx];
22
+ if (elA == null || elB == null) {
23
+ return elA === elB;
24
+ }
25
+ return compareUnknownValues(elA, elB) === NodeComparisonResult.Equal;
26
+ });
27
+ if (result) {
28
+ return NodeComparisonResult.Equal;
29
+ }
30
+ return NodeComparisonResult.Invalid;
31
+ }
32
+ function isValidNode(x) {
33
+ return (typeof x === 'object' &&
34
+ x != null &&
35
+ 'type' in x &&
36
+ typeof x.type === 'string');
37
+ }
38
+ function isValidChainExpressionToLookThrough(node) {
39
+ return (!(node.parent?.type === utils_1.AST_NODE_TYPES.MemberExpression &&
40
+ node.parent.object === node) &&
41
+ !(node.parent?.type === utils_1.AST_NODE_TYPES.CallExpression &&
42
+ node.parent.callee === node) &&
43
+ node.type === utils_1.AST_NODE_TYPES.ChainExpression);
44
+ }
45
+ function compareUnknownValues(valueA, valueB) {
46
+ /* istanbul ignore if -- not possible for us to test this - it's just a sanity safeguard */
47
+ if (valueA == null || valueB == null) {
48
+ if (valueA !== valueB) {
49
+ return NodeComparisonResult.Invalid;
50
+ }
51
+ return NodeComparisonResult.Equal;
52
+ }
53
+ /* istanbul ignore if -- not possible for us to test this - it's just a sanity safeguard */
54
+ if (!isValidNode(valueA) || !isValidNode(valueB)) {
55
+ return NodeComparisonResult.Invalid;
56
+ }
57
+ return compareNodes(valueA, valueB);
58
+ }
59
+ function compareByVisiting(nodeA, nodeB) {
60
+ const currentVisitorKeys = visitor_keys_1.visitorKeys[nodeA.type];
61
+ /* istanbul ignore if -- not possible for us to test this - it's just a sanity safeguard */
62
+ if (currentVisitorKeys == null) {
63
+ // we don't know how to visit this node, so assume it's invalid to avoid false-positives / broken fixers
64
+ return NodeComparisonResult.Invalid;
65
+ }
66
+ if (currentVisitorKeys.length === 0) {
67
+ // assume nodes with no keys are constant things like keywords
68
+ return NodeComparisonResult.Equal;
69
+ }
70
+ for (const key of currentVisitorKeys) {
71
+ // @ts-expect-error - dynamic access but it's safe
72
+ const nodeAChildOrChildren = nodeA[key];
73
+ // @ts-expect-error - dynamic access but it's safe
74
+ const nodeBChildOrChildren = nodeB[key];
75
+ if (Array.isArray(nodeAChildOrChildren)) {
76
+ const arrayA = nodeAChildOrChildren;
77
+ const arrayB = nodeBChildOrChildren;
78
+ const result = compareArrays(arrayA, arrayB);
79
+ if (result !== NodeComparisonResult.Equal) {
80
+ return NodeComparisonResult.Invalid;
81
+ }
82
+ // fallthrough to the next key as the key was "equal"
83
+ }
84
+ else {
85
+ const result = compareUnknownValues(nodeAChildOrChildren, nodeBChildOrChildren);
86
+ if (result !== NodeComparisonResult.Equal) {
87
+ return NodeComparisonResult.Invalid;
88
+ }
89
+ // fallthrough to the next key as the key was "equal"
90
+ }
91
+ }
92
+ return NodeComparisonResult.Equal;
93
+ }
94
+ function compareNodesUncached(nodeA, nodeB) {
95
+ if (nodeA.type !== nodeB.type) {
96
+ // special cases where nodes are allowed to be non-equal
97
+ // look through a chain expression node at the top-level because it only
98
+ // exists to delimit the end of an optional chain
99
+ //
100
+ // a?.b && a.b.c
101
+ // ^^^^ ChainExpression, MemberExpression
102
+ // ^^^^^ MemberExpression
103
+ //
104
+ // except for in this class of cases
105
+ // (a?.b).c && a.b.c
106
+ // because the parentheses have runtime meaning (sad face)
107
+ if (isValidChainExpressionToLookThrough(nodeA)) {
108
+ return compareNodes(nodeA.expression, nodeB);
109
+ }
110
+ if (isValidChainExpressionToLookThrough(nodeB)) {
111
+ return compareNodes(nodeA, nodeB.expression);
112
+ }
113
+ // look through the type-only non-null assertion because its existence could
114
+ // possibly be replaced by an optional chain instead
115
+ //
116
+ // a.b! && a.b.c
117
+ // ^^^^ TSNonNullExpression
118
+ if (nodeA.type === utils_1.AST_NODE_TYPES.TSNonNullExpression) {
119
+ return compareNodes(nodeA.expression, nodeB);
120
+ }
121
+ if (nodeB.type === utils_1.AST_NODE_TYPES.TSNonNullExpression) {
122
+ return compareNodes(nodeA, nodeB.expression);
123
+ }
124
+ // special case for subset optional chains where the node types don't match,
125
+ // but we want to try comparing by discarding the "extra" code
126
+ //
127
+ // a && a.b
128
+ // ^ compare this
129
+ // a && a()
130
+ // ^ compare this
131
+ // a.b && a.b()
132
+ // ^^^ compare this
133
+ // a() && a().b
134
+ // ^^^ compare this
135
+ // import.meta && import.meta.b
136
+ // ^^^^^^^^^^^ compare this
137
+ if (nodeA.type === utils_1.AST_NODE_TYPES.CallExpression ||
138
+ nodeA.type === utils_1.AST_NODE_TYPES.Identifier ||
139
+ nodeA.type === utils_1.AST_NODE_TYPES.MemberExpression ||
140
+ nodeA.type === utils_1.AST_NODE_TYPES.MetaProperty) {
141
+ switch (nodeB.type) {
142
+ case utils_1.AST_NODE_TYPES.MemberExpression:
143
+ if (nodeB.property.type === utils_1.AST_NODE_TYPES.PrivateIdentifier) {
144
+ // Private identifiers in optional chaining is not currently allowed
145
+ // TODO - handle this once TS supports it (https://github.com/microsoft/TypeScript/issues/42734)
146
+ return NodeComparisonResult.Invalid;
147
+ }
148
+ if (compareNodes(nodeA, nodeB.object) !== NodeComparisonResult.Invalid) {
149
+ return NodeComparisonResult.Subset;
150
+ }
151
+ return NodeComparisonResult.Invalid;
152
+ case utils_1.AST_NODE_TYPES.CallExpression:
153
+ if (compareNodes(nodeA, nodeB.callee) !== NodeComparisonResult.Invalid) {
154
+ return NodeComparisonResult.Subset;
155
+ }
156
+ return NodeComparisonResult.Invalid;
157
+ default:
158
+ return NodeComparisonResult.Invalid;
159
+ }
160
+ }
161
+ return NodeComparisonResult.Invalid;
162
+ }
163
+ switch (nodeA.type) {
164
+ // these expressions create a new instance each time - so it makes no sense to compare the chain
165
+ case utils_1.AST_NODE_TYPES.ArrayExpression:
166
+ case utils_1.AST_NODE_TYPES.ArrowFunctionExpression:
167
+ case utils_1.AST_NODE_TYPES.ClassExpression:
168
+ case utils_1.AST_NODE_TYPES.FunctionExpression:
169
+ case utils_1.AST_NODE_TYPES.JSXElement:
170
+ case utils_1.AST_NODE_TYPES.JSXFragment:
171
+ case utils_1.AST_NODE_TYPES.NewExpression:
172
+ case utils_1.AST_NODE_TYPES.ObjectExpression:
173
+ return NodeComparisonResult.Invalid;
174
+ // chaining from assignments could change the value irrevocably - so it makes no sense to compare the chain
175
+ case utils_1.AST_NODE_TYPES.AssignmentExpression:
176
+ return NodeComparisonResult.Invalid;
177
+ case utils_1.AST_NODE_TYPES.CallExpression: {
178
+ const nodeBCall = nodeB;
179
+ // check for cases like
180
+ // foo() && foo()(bar)
181
+ // ^^^^^ nodeA
182
+ // ^^^^^^^^^^ nodeB
183
+ // we don't want to check the arguments in this case
184
+ const aSubsetOfB = compareNodes(nodeA, nodeBCall.callee);
185
+ if (aSubsetOfB !== NodeComparisonResult.Invalid) {
186
+ return NodeComparisonResult.Subset;
187
+ }
188
+ const calleeCompare = compareNodes(nodeA.callee, nodeBCall.callee);
189
+ if (calleeCompare !== NodeComparisonResult.Equal) {
190
+ return NodeComparisonResult.Invalid;
191
+ }
192
+ // NOTE - we purposely ignore optional flag because for our purposes
193
+ // foo?.bar() && foo.bar?.()?.baz
194
+ // or
195
+ // foo.bar() && foo?.bar?.()?.baz
196
+ // are going to be exactly the same
197
+ const argumentCompare = compareArrays(nodeA.arguments, nodeBCall.arguments);
198
+ if (argumentCompare !== NodeComparisonResult.Equal) {
199
+ return NodeComparisonResult.Invalid;
200
+ }
201
+ const typeParamCompare = compareNodes(nodeA.typeArguments, nodeBCall.typeArguments);
202
+ if (typeParamCompare === NodeComparisonResult.Equal) {
203
+ return NodeComparisonResult.Equal;
204
+ }
205
+ return NodeComparisonResult.Invalid;
206
+ }
207
+ case utils_1.AST_NODE_TYPES.ChainExpression:
208
+ // special case handling for ChainExpression because it's allowed to be a subset
209
+ return compareNodes(nodeA, nodeB.expression);
210
+ case utils_1.AST_NODE_TYPES.Identifier:
211
+ case utils_1.AST_NODE_TYPES.PrivateIdentifier:
212
+ if (nodeA.name === nodeB.name) {
213
+ return NodeComparisonResult.Equal;
214
+ }
215
+ return NodeComparisonResult.Invalid;
216
+ case utils_1.AST_NODE_TYPES.Literal: {
217
+ const nodeBLiteral = nodeB;
218
+ if (nodeA.raw === nodeBLiteral.raw &&
219
+ nodeA.value === nodeBLiteral.value) {
220
+ return NodeComparisonResult.Equal;
221
+ }
222
+ return NodeComparisonResult.Invalid;
223
+ }
224
+ case utils_1.AST_NODE_TYPES.MemberExpression: {
225
+ const nodeBMember = nodeB;
226
+ if (nodeBMember.property.type === utils_1.AST_NODE_TYPES.PrivateIdentifier) {
227
+ // Private identifiers in optional chaining is not currently allowed
228
+ // TODO - handle this once TS supports it (https://github.com/microsoft/TypeScript/issues/42734)
229
+ return NodeComparisonResult.Invalid;
230
+ }
231
+ // check for cases like
232
+ // foo.bar && foo.bar.baz
233
+ // ^^^^^^^ nodeA
234
+ // ^^^^^^^^^^^ nodeB
235
+ // result === Equal
236
+ //
237
+ // foo.bar && foo.bar.baz.bam
238
+ // ^^^^^^^ nodeA
239
+ // ^^^^^^^^^^^^^^^ nodeB
240
+ // result === Subset
241
+ //
242
+ // we don't want to check the property in this case
243
+ const aSubsetOfB = compareNodes(nodeA, nodeBMember.object);
244
+ if (aSubsetOfB !== NodeComparisonResult.Invalid) {
245
+ return NodeComparisonResult.Subset;
246
+ }
247
+ if (nodeA.computed !== nodeBMember.computed) {
248
+ return NodeComparisonResult.Invalid;
249
+ }
250
+ // NOTE - we purposely ignore optional flag because for our purposes
251
+ // foo?.bar && foo.bar?.baz
252
+ // or
253
+ // foo.bar && foo?.bar?.baz
254
+ // are going to be exactly the same
255
+ const objectCompare = compareNodes(nodeA.object, nodeBMember.object);
256
+ if (objectCompare !== NodeComparisonResult.Equal) {
257
+ return NodeComparisonResult.Invalid;
258
+ }
259
+ return compareNodes(nodeA.property, nodeBMember.property);
260
+ }
261
+ case utils_1.AST_NODE_TYPES.TSTemplateLiteralType:
262
+ case utils_1.AST_NODE_TYPES.TemplateLiteral: {
263
+ const nodeBTemplate = nodeB;
264
+ const areQuasisEqual = nodeA.quasis.length === nodeBTemplate.quasis.length &&
265
+ nodeA.quasis.every((elA, idx) => {
266
+ const elB = nodeBTemplate.quasis[idx];
267
+ return elA.value.cooked === elB.value.cooked;
268
+ });
269
+ if (!areQuasisEqual) {
270
+ return NodeComparisonResult.Invalid;
271
+ }
272
+ return NodeComparisonResult.Equal;
273
+ }
274
+ case utils_1.AST_NODE_TYPES.TemplateElement: {
275
+ const nodeBElement = nodeB;
276
+ if (nodeA.value.cooked === nodeBElement.value.cooked) {
277
+ return NodeComparisonResult.Equal;
278
+ }
279
+ return NodeComparisonResult.Invalid;
280
+ }
281
+ // these aren't actually valid expressions.
282
+ // https://github.com/typescript-eslint/typescript-eslint/blob/20d7caee35ab84ae6381fdf04338c9e2b9e2bc48/packages/ast-spec/src/unions/Expression.ts#L37-L43
283
+ case utils_1.AST_NODE_TYPES.ArrayPattern:
284
+ case utils_1.AST_NODE_TYPES.ObjectPattern:
285
+ /* istanbul ignore next */
286
+ return NodeComparisonResult.Invalid;
287
+ // update expression returns a number and also changes the value each time - so it makes no sense to compare the chain
288
+ case utils_1.AST_NODE_TYPES.UpdateExpression:
289
+ return NodeComparisonResult.Invalid;
290
+ // yield returns the value passed to the `next` function, so it may not be the same each time - so it makes no sense to compare the chain
291
+ case utils_1.AST_NODE_TYPES.YieldExpression:
292
+ return NodeComparisonResult.Invalid;
293
+ // general-case automatic handling of nodes to save us implementing every
294
+ // single case by hand. This just iterates the visitor keys to recursively
295
+ // check the children.
296
+ //
297
+ // Any specific logic cases or short-circuits should be listed as separate
298
+ // cases so that they don't fall into this generic handling
299
+ default:
300
+ return compareByVisiting(nodeA, nodeB);
301
+ }
302
+ }
303
+ const COMPARE_NODES_CACHE = new WeakMap();
304
+ /**
305
+ * Compares two nodes' ASTs to determine if the A is equal to or a subset of B
306
+ */
307
+ function compareNodes(nodeA, nodeB) {
308
+ if (nodeA == null || nodeB == null) {
309
+ if (nodeA !== nodeB) {
310
+ return NodeComparisonResult.Invalid;
311
+ }
312
+ return NodeComparisonResult.Equal;
313
+ }
314
+ const cached = COMPARE_NODES_CACHE.get(nodeA)?.get(nodeB);
315
+ if (cached) {
316
+ return cached;
317
+ }
318
+ const result = compareNodesUncached(nodeA, nodeB);
319
+ let mapA = COMPARE_NODES_CACHE.get(nodeA);
320
+ if (mapA == null) {
321
+ mapA = new WeakMap();
322
+ COMPARE_NODES_CACHE.set(nodeA, mapA);
323
+ }
324
+ mapA.set(nodeB, result);
325
+ return result;
326
+ }
@@ -0,0 +1,61 @@
1
+ import type { ParserServicesWithTypeInformation, TSESTree } from '@typescript-eslint/utils';
2
+ import type { SourceCode } from '@typescript-eslint/utils/ts-eslint';
3
+ import type { PreferOptionalChainOptions } from './PreferOptionalChainOptions';
4
+ export declare const enum Yoda {
5
+ Yes = 0,
6
+ No = 1,
7
+ Unknown = 2
8
+ }
9
+ export declare const enum OperandValidity {
10
+ Valid = "Valid",
11
+ Last = "Last",
12
+ Invalid = "Invalid"
13
+ }
14
+ export declare const enum NullishComparisonType {
15
+ /** `x != null`, `x != undefined` */
16
+ NotEqualNullOrUndefined = "NotEqualNullOrUndefined",
17
+ /** `x == null`, `x == undefined` */
18
+ EqualNullOrUndefined = "EqualNullOrUndefined",
19
+ /** `x !== null` */
20
+ NotStrictEqualNull = "NotStrictEqualNull",
21
+ /** `x === null` */
22
+ StrictEqualNull = "StrictEqualNull",
23
+ /** `x !== undefined`, `typeof x !== 'undefined'` */
24
+ NotStrictEqualUndefined = "NotStrictEqualUndefined",
25
+ /** `x === undefined`, `typeof x === 'undefined'` */
26
+ StrictEqualUndefined = "StrictEqualUndefined",
27
+ /** `!x` */
28
+ NotBoolean = "NotBoolean",
29
+ /** `x` */
30
+ Boolean = "Boolean"
31
+ }
32
+ export declare const enum ComparisonType {
33
+ NotEqual = "NotEqual",
34
+ Equal = "Equal",
35
+ NotStrictEqual = "NotStrictEqual",
36
+ StrictEqual = "StrictEqual"
37
+ }
38
+ export interface ValidOperand {
39
+ comparedName: TSESTree.Node;
40
+ comparisonType: NullishComparisonType;
41
+ isYoda: boolean;
42
+ node: TSESTree.Expression;
43
+ type: OperandValidity.Valid;
44
+ }
45
+ export interface LastChainOperand {
46
+ comparedName: TSESTree.Node;
47
+ comparisonType: ComparisonType;
48
+ comparisonValue: TSESTree.Node;
49
+ yoda: Yoda;
50
+ node: TSESTree.BinaryExpression;
51
+ type: OperandValidity.Last;
52
+ }
53
+ export interface InvalidOperand {
54
+ type: OperandValidity.Invalid;
55
+ }
56
+ type Operand = InvalidOperand | LastChainOperand | ValidOperand;
57
+ export declare function gatherLogicalOperands(node: TSESTree.LogicalExpression, parserServices: ParserServicesWithTypeInformation, sourceCode: Readonly<SourceCode>, options: PreferOptionalChainOptions): {
58
+ newlySeenLogicals: Set<TSESTree.LogicalExpression>;
59
+ operands: Operand[];
60
+ };
61
+ export {};