@flint.fyi/ts 0.14.6 → 0.18.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 (930) hide show
  1. package/lib/index.d.ts +2 -7
  2. package/lib/index.js +2 -7
  3. package/lib/plugin.d.ts +2160 -204
  4. package/lib/plugin.js +610 -107
  5. package/lib/rules/accessorPairGroups.d.ts +10 -0
  6. package/lib/rules/accessorPairGroups.js +48 -0
  7. package/lib/rules/accessorPairTypes.d.ts +10 -0
  8. package/lib/rules/accessorPairTypes.js +72 -0
  9. package/lib/rules/accessorThisRecursion.d.ts +10 -0
  10. package/lib/rules/accessorThisRecursion.js +65 -0
  11. package/lib/rules/anyArguments.d.ts +10 -0
  12. package/lib/rules/anyArguments.js +234 -0
  13. package/lib/rules/anyAssignments.d.ts +10 -0
  14. package/lib/rules/anyAssignments.js +266 -0
  15. package/lib/rules/anyCalls.d.ts +10 -0
  16. package/lib/rules/anyCalls.js +68 -0
  17. package/lib/rules/anyMemberAccess.d.ts +10 -0
  18. package/lib/rules/anyMemberAccess.js +85 -0
  19. package/lib/rules/anyReturns.d.ts +6 -2
  20. package/lib/rules/anyReturns.js +98 -183
  21. package/lib/rules/arguments.d.ts +10 -0
  22. package/lib/rules/arguments.js +38 -0
  23. package/lib/rules/arrayCallbackReturns.d.ts +10 -0
  24. package/lib/rules/arrayCallbackReturns.js +73 -0
  25. package/lib/rules/arrayConstructors.d.ts +10 -0
  26. package/lib/rules/arrayConstructors.js +47 -0
  27. package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +10 -0
  28. package/lib/rules/arrayDeleteUnnecessaryCounts.js +54 -0
  29. package/lib/rules/arrayElementDeletions.d.ts +10 -0
  30. package/lib/rules/arrayElementDeletions.js +43 -0
  31. package/lib/rules/arrayEmptyCallbackSlots.d.ts +10 -0
  32. package/lib/rules/arrayEmptyCallbackSlots.js +45 -0
  33. package/lib/rules/arrayExistenceChecksConsistency.d.ts +10 -0
  34. package/lib/rules/arrayExistenceChecksConsistency.js +86 -0
  35. package/lib/rules/arrayFilteredFinds.d.ts +10 -0
  36. package/lib/rules/arrayFilteredFinds.js +80 -0
  37. package/lib/rules/arrayFinds.d.ts +10 -0
  38. package/lib/rules/arrayFinds.js +41 -0
  39. package/lib/rules/arrayFlatMapMethods.d.ts +10 -0
  40. package/lib/rules/arrayFlatMapMethods.js +47 -0
  41. package/lib/rules/arrayFlatMethods.d.ts +10 -0
  42. package/lib/rules/arrayFlatMethods.js +83 -0
  43. package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +10 -0
  44. package/lib/rules/arrayFlatUnnecessaryDepths.js +33 -0
  45. package/lib/rules/arrayIncludes.d.ts +10 -0
  46. package/lib/rules/arrayIncludes.js +59 -0
  47. package/lib/rules/arrayIncludesMethods.d.ts +10 -0
  48. package/lib/rules/arrayIncludesMethods.js +37 -0
  49. package/lib/rules/arrayIndexOfMethods.d.ts +10 -0
  50. package/lib/rules/arrayIndexOfMethods.js +51 -0
  51. package/lib/rules/arrayLoops.d.ts +10 -0
  52. package/lib/rules/arrayLoops.js +36 -0
  53. package/lib/rules/arrayMapIdentities.d.ts +10 -0
  54. package/lib/rules/arrayMapIdentities.js +74 -0
  55. package/lib/rules/arrayMutableReverses.d.ts +10 -0
  56. package/lib/rules/arrayMutableReverses.js +39 -0
  57. package/lib/rules/arrayMutableSorts.d.ts +10 -0
  58. package/lib/rules/arrayMutableSorts.js +72 -0
  59. package/lib/rules/arrayReduceTypeArguments.d.ts +10 -0
  60. package/lib/rules/arrayReduceTypeArguments.js +64 -0
  61. package/lib/rules/arraySliceUnnecessaryEnd.d.ts +10 -0
  62. package/lib/rules/arraySliceUnnecessaryEnd.js +51 -0
  63. package/lib/rules/arraySomeMethods.d.ts +10 -0
  64. package/lib/rules/arraySomeMethods.js +77 -0
  65. package/lib/rules/arrayTernarySpreadingConsistency.d.ts +10 -0
  66. package/lib/rules/arrayTernarySpreadingConsistency.js +74 -0
  67. package/lib/rules/arrayTypes.d.ts +17 -0
  68. package/lib/rules/arrayTypes.js +111 -0
  69. package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +10 -0
  70. package/lib/rules/arrayUnnecessaryLengthChecks.js +97 -0
  71. package/lib/rules/asConstAssertions.d.ts +10 -0
  72. package/lib/rules/asConstAssertions.js +57 -0
  73. package/lib/rules/assignmentOperatorShorthands.d.ts +10 -0
  74. package/lib/rules/assignmentOperatorShorthands.js +47 -0
  75. package/lib/rules/asyncPromiseExecutors.d.ts +6 -2
  76. package/lib/rules/asyncPromiseExecutors.js +40 -50
  77. package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +10 -0
  78. package/lib/rules/asyncUnnecessaryPromiseWrappers.js +52 -0
  79. package/lib/rules/atAccesses.d.ts +10 -0
  80. package/lib/rules/atAccesses.js +52 -0
  81. package/lib/rules/builtinCoercions.d.ts +10 -0
  82. package/lib/rules/builtinCoercions.js +117 -0
  83. package/lib/rules/builtinConstructorNews.d.ts +10 -0
  84. package/lib/rules/builtinConstructorNews.js +89 -0
  85. package/lib/rules/caseDeclarations.d.ts +6 -2
  86. package/lib/rules/caseDeclarations.js +38 -51
  87. package/lib/rules/caseDuplicates.d.ts +6 -2
  88. package/lib/rules/caseDuplicates.js +35 -48
  89. package/lib/rules/caseFallthroughs.d.ts +10 -0
  90. package/lib/rules/caseFallthroughs.js +76 -0
  91. package/lib/rules/catchCallbackTypes.d.ts +10 -0
  92. package/lib/rules/catchCallbackTypes.js +67 -0
  93. package/lib/rules/caughtVariableNames.d.ts +10 -0
  94. package/lib/rules/caughtVariableNames.js +40 -0
  95. package/lib/rules/chainedAssignments.d.ts +6 -2
  96. package/lib/rules/chainedAssignments.js +31 -47
  97. package/lib/rules/charAtComparisons.d.ts +10 -0
  98. package/lib/rules/charAtComparisons.js +58 -0
  99. package/lib/rules/classAssignments.d.ts +6 -2
  100. package/lib/rules/classAssignments.js +31 -41
  101. package/lib/rules/classFieldDeclarations.d.ts +10 -0
  102. package/lib/rules/classFieldDeclarations.js +40 -0
  103. package/lib/rules/classLiteralProperties.d.ts +10 -0
  104. package/lib/rules/classLiteralProperties.js +45 -0
  105. package/lib/rules/classMemberDuplicates.d.ts +10 -0
  106. package/lib/rules/classMemberDuplicates.js +71 -0
  107. package/lib/rules/classMethodsThis.d.ts +14 -0
  108. package/lib/rules/classMethodsThis.js +124 -0
  109. package/lib/rules/combinedPushes.d.ts +10 -0
  110. package/lib/rules/combinedPushes.js +56 -0
  111. package/lib/rules/consecutiveNonNullAssertions.d.ts +6 -2
  112. package/lib/rules/consecutiveNonNullAssertions.js +38 -41
  113. package/lib/rules/consoleCalls.d.ts +9 -0
  114. package/lib/rules/consoleCalls.js +28 -0
  115. package/lib/rules/constantAssignments.d.ts +6 -2
  116. package/lib/rules/constantAssignments.js +43 -60
  117. package/lib/rules/constructorGenericCalls.d.ts +16 -0
  118. package/lib/rules/constructorGenericCalls.js +138 -0
  119. package/lib/rules/constructorReturns.d.ts +6 -2
  120. package/lib/rules/constructorReturns.js +39 -50
  121. package/lib/rules/constructorSupers.d.ts +10 -0
  122. package/lib/rules/constructorSupers.js +77 -0
  123. package/lib/rules/dateConstructorClones.d.ts +10 -0
  124. package/lib/rules/dateConstructorClones.js +37 -0
  125. package/lib/rules/dateNowTimestamps.d.ts +10 -0
  126. package/lib/rules/dateNowTimestamps.js +57 -0
  127. package/lib/rules/debuggerStatements.d.ts +6 -2
  128. package/lib/rules/debuggerStatements.js +32 -42
  129. package/lib/rules/defaultCaseLast.d.ts +6 -2
  130. package/lib/rules/defaultCaseLast.js +35 -42
  131. package/lib/rules/defaultParameterLast.d.ts +10 -0
  132. package/lib/rules/defaultParameterLast.js +42 -0
  133. package/lib/rules/deprecated.d.ts +10 -0
  134. package/lib/rules/deprecated.js +243 -0
  135. package/lib/rules/destructuringConsistency.d.ts +10 -0
  136. package/lib/rules/destructuringConsistency.js +112 -0
  137. package/lib/rules/duplicateArguments.d.ts +6 -2
  138. package/lib/rules/duplicateArguments.js +44 -50
  139. package/lib/rules/dynamicDeletes.d.ts +10 -0
  140. package/lib/rules/dynamicDeletes.js +37 -0
  141. package/lib/rules/elseIfDuplicates.d.ts +6 -2
  142. package/lib/rules/elseIfDuplicates.js +37 -52
  143. package/lib/rules/elseReturns.d.ts +10 -0
  144. package/lib/rules/elseReturns.js +67 -0
  145. package/lib/rules/emptyBlocks.d.ts +6 -2
  146. package/lib/rules/emptyBlocks.js +53 -63
  147. package/lib/rules/emptyDestructures.d.ts +6 -2
  148. package/lib/rules/emptyDestructures.js +33 -39
  149. package/lib/rules/emptyEnums.d.ts +10 -0
  150. package/lib/rules/emptyEnums.js +30 -0
  151. package/lib/rules/emptyExports.d.ts +10 -0
  152. package/lib/rules/emptyExports.js +60 -0
  153. package/lib/rules/emptyFiles.d.ts +10 -0
  154. package/lib/rules/emptyFiles.js +44 -0
  155. package/lib/rules/emptyFunctions.d.ts +10 -0
  156. package/lib/rules/emptyFunctions.js +61 -0
  157. package/lib/rules/emptyModuleAttributes.d.ts +10 -0
  158. package/lib/rules/emptyModuleAttributes.js +35 -0
  159. package/lib/rules/emptyObjectTypes.d.ts +10 -0
  160. package/lib/rules/emptyObjectTypes.js +47 -0
  161. package/lib/rules/emptyStaticBlocks.d.ts +6 -2
  162. package/lib/rules/emptyStaticBlocks.js +41 -53
  163. package/lib/rules/emptyTypeParameterLists.d.ts +10 -0
  164. package/lib/rules/emptyTypeParameterLists.js +31 -0
  165. package/lib/rules/enumInitializers.d.ts +10 -0
  166. package/lib/rules/enumInitializers.js +54 -0
  167. package/lib/rules/enumMemberLiterals.d.ts +10 -0
  168. package/lib/rules/enumMemberLiterals.js +39 -0
  169. package/lib/rules/enumValueConsistency.d.ts +10 -0
  170. package/lib/rules/enumValueConsistency.js +56 -0
  171. package/lib/rules/enumValueDuplicates.d.ts +10 -0
  172. package/lib/rules/enumValueDuplicates.js +60 -0
  173. package/lib/rules/equalityOperatorNegations.d.ts +9 -0
  174. package/lib/rules/equalityOperatorNegations.js +60 -0
  175. package/lib/rules/equalityOperators.d.ts +10 -0
  176. package/lib/rules/equalityOperators.js +44 -0
  177. package/lib/rules/errorMessages.d.ts +10 -0
  178. package/lib/rules/errorMessages.js +60 -0
  179. package/lib/rules/errorSubclassProperties.d.ts +10 -0
  180. package/lib/rules/errorSubclassProperties.js +144 -0
  181. package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +10 -0
  182. package/lib/rules/errorUnnecessaryCaptureStackTraces.js +55 -0
  183. package/lib/rules/escapeSequenceCasing.d.ts +10 -0
  184. package/lib/rules/escapeSequenceCasing.js +75 -0
  185. package/lib/rules/evals.d.ts +10 -0
  186. package/lib/rules/evals.js +31 -0
  187. package/lib/rules/evolvingVariableTypes.d.ts +10 -0
  188. package/lib/rules/evolvingVariableTypes.js +33 -0
  189. package/lib/rules/exceptionAssignments.d.ts +6 -2
  190. package/lib/rules/exceptionAssignments.js +41 -60
  191. package/lib/rules/explicitAnys.d.ts +10 -0
  192. package/lib/rules/explicitAnys.js +55 -0
  193. package/lib/rules/exponentiationOperators.d.ts +10 -0
  194. package/lib/rules/exponentiationOperators.js +34 -0
  195. package/lib/rules/exportFromImports.d.ts +10 -0
  196. package/lib/rules/exportFromImports.js +119 -0
  197. package/lib/rules/exportMutables.d.ts +10 -0
  198. package/lib/rules/exportMutables.js +33 -0
  199. package/lib/rules/exportUniqueNames.d.ts +10 -0
  200. package/lib/rules/exportUniqueNames.js +65 -0
  201. package/lib/rules/extraneousClasses.d.ts +16 -0
  202. package/lib/rules/extraneousClasses.js +111 -0
  203. package/lib/rules/fetchMethodBodies.d.ts +10 -0
  204. package/lib/rules/fetchMethodBodies.js +72 -0
  205. package/lib/rules/finallyStatementSafety.d.ts +10 -0
  206. package/lib/rules/finallyStatementSafety.js +47 -0
  207. package/lib/rules/forDirections.d.ts +6 -2
  208. package/lib/rules/forDirections.js +68 -124
  209. package/lib/rules/forInArrays.d.ts +6 -2
  210. package/lib/rules/forInArrays.js +43 -50
  211. package/lib/rules/forInGuards.d.ts +9 -0
  212. package/lib/rules/forInGuards.js +44 -0
  213. package/lib/rules/functionApplySpreads.d.ts +10 -0
  214. package/lib/rules/functionApplySpreads.js +63 -0
  215. package/lib/rules/functionAssignments.d.ts +6 -2
  216. package/lib/rules/functionAssignments.js +31 -41
  217. package/lib/rules/functionCurryingRedundancy.d.ts +10 -0
  218. package/lib/rules/functionCurryingRedundancy.js +53 -0
  219. package/lib/rules/functionDeclarationStyles.d.ts +16 -0
  220. package/lib/rules/functionDeclarationStyles.js +67 -0
  221. package/lib/rules/functionNameMatches.d.ts +10 -0
  222. package/lib/rules/functionNameMatches.js +74 -0
  223. package/lib/rules/functionNewCalls.d.ts +6 -2
  224. package/lib/rules/functionNewCalls.js +41 -59
  225. package/lib/rules/generatorFunctionYields.d.ts +6 -2
  226. package/lib/rules/generatorFunctionYields.js +46 -53
  227. package/lib/rules/getterReturns.d.ts +10 -0
  228. package/lib/rules/getterReturns.js +65 -0
  229. package/lib/rules/globalAssignments.d.ts +6 -2
  230. package/lib/rules/globalAssignments.js +45 -57
  231. package/lib/rules/globalObjectCalls.d.ts +6 -2
  232. package/lib/rules/globalObjectCalls.js +41 -42
  233. package/lib/rules/globalThisAliases.d.ts +10 -0
  234. package/lib/rules/globalThisAliases.js +47 -0
  235. package/lib/rules/impliedEvals.d.ts +10 -0
  236. package/lib/rules/impliedEvals.js +130 -0
  237. package/lib/rules/importEmptyBlocks.d.ts +10 -0
  238. package/lib/rules/importEmptyBlocks.js +53 -0
  239. package/lib/rules/importTypeSideEffects.d.ts +10 -0
  240. package/lib/rules/importTypeSideEffects.js +31 -0
  241. package/lib/rules/indexedObjectTypes.d.ts +16 -0
  242. package/lib/rules/indexedObjectTypes.js +83 -0
  243. package/lib/rules/instanceOfArrays.d.ts +10 -0
  244. package/lib/rules/instanceOfArrays.js +31 -0
  245. package/lib/rules/irregularWhitespaces.d.ts +16 -0
  246. package/lib/rules/irregularWhitespaces.js +97 -0
  247. package/lib/rules/isNaNComparisons.d.ts +10 -0
  248. package/lib/rules/isNaNComparisons.js +43 -0
  249. package/lib/rules/literalConstructorWrappers.d.ts +10 -0
  250. package/lib/rules/literalConstructorWrappers.js +64 -0
  251. package/lib/rules/mathMethods.d.ts +10 -0
  252. package/lib/rules/mathMethods.js +128 -0
  253. package/lib/rules/meaninglessVoidOperators.d.ts +10 -0
  254. package/lib/rules/meaninglessVoidOperators.js +39 -0
  255. package/lib/rules/misleadingVoidExpressions.d.ts +10 -0
  256. package/lib/rules/misleadingVoidExpressions.js +128 -0
  257. package/lib/rules/moduleSpecifierLists.d.ts +10 -0
  258. package/lib/rules/moduleSpecifierLists.js +92 -0
  259. package/lib/rules/multilineAmbiguities.d.ts +10 -0
  260. package/lib/rules/multilineAmbiguities.js +64 -0
  261. package/lib/rules/namedDefaultExports.d.ts +10 -0
  262. package/lib/rules/namedDefaultExports.js +60 -0
  263. package/lib/rules/namespaceDeclarations.d.ts +7 -3
  264. package/lib/rules/namespaceDeclarations.js +35 -55
  265. package/lib/rules/namespaceImplicitAmbientImports.d.ts +10 -0
  266. package/lib/rules/namespaceImplicitAmbientImports.js +40 -0
  267. package/lib/rules/namespaceKeywords.d.ts +10 -0
  268. package/lib/rules/namespaceKeywords.js +40 -0
  269. package/lib/rules/nativeObjectExtensions.d.ts +10 -0
  270. package/lib/rules/nativeObjectExtensions.js +114 -0
  271. package/lib/rules/negativeIndexLengthMethods.d.ts +10 -0
  272. package/lib/rules/negativeIndexLengthMethods.js +180 -0
  273. package/lib/rules/negativeZeroComparisons.d.ts +6 -2
  274. package/lib/rules/negativeZeroComparisons.js +45 -62
  275. package/lib/rules/nestedStandaloneIfs.d.ts +10 -0
  276. package/lib/rules/nestedStandaloneIfs.js +105 -0
  277. package/lib/rules/newDefinitions.d.ts +10 -0
  278. package/lib/rules/newDefinitions.js +84 -0
  279. package/lib/rules/newExpressions.d.ts +6 -2
  280. package/lib/rules/newExpressions.js +37 -53
  281. package/lib/rules/newNativeNonConstructors.d.ts +6 -2
  282. package/lib/rules/newNativeNonConstructors.js +38 -48
  283. package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +10 -0
  284. package/lib/rules/nonNullAssertedNullishCoalesces.js +63 -0
  285. package/lib/rules/nonNullAssertedOptionalChains.d.ts +10 -0
  286. package/lib/rules/nonNullAssertedOptionalChains.js +69 -0
  287. package/lib/rules/nonNullAssertionPlacement.d.ts +10 -0
  288. package/lib/rules/nonNullAssertionPlacement.js +94 -0
  289. package/lib/rules/nonNullableTypeAssertions.d.ts +10 -0
  290. package/lib/rules/nonNullableTypeAssertions.js +78 -0
  291. package/lib/rules/nonOctalDecimalEscapes.d.ts +6 -2
  292. package/lib/rules/nonOctalDecimalEscapes.js +46 -55
  293. package/lib/rules/nullishCheckStyle.d.ts +21 -0
  294. package/lib/rules/nullishCheckStyle.js +144 -0
  295. package/lib/rules/nullishCoalescingOperators.d.ts +22 -0
  296. package/lib/rules/nullishCoalescingOperators.js +311 -0
  297. package/lib/rules/numberMethodRanges.d.ts +10 -0
  298. package/lib/rules/numberMethodRanges.js +74 -0
  299. package/lib/rules/numberStaticMethods.d.ts +10 -0
  300. package/lib/rules/numberStaticMethods.js +53 -0
  301. package/lib/rules/numericErasingOperations.d.ts +10 -0
  302. package/lib/rules/numericErasingOperations.js +46 -0
  303. package/lib/rules/numericLiteralParsing.d.ts +6 -2
  304. package/lib/rules/numericLiteralParsing.js +59 -90
  305. package/lib/rules/numericPrecision.d.ts +10 -0
  306. package/lib/rules/numericPrecision.js +102 -0
  307. package/lib/rules/numericSeparatorGroups.d.ts +10 -0
  308. package/lib/rules/numericSeparatorGroups.js +101 -0
  309. package/lib/rules/objectAssignSpreads.d.ts +10 -0
  310. package/lib/rules/objectAssignSpreads.js +53 -0
  311. package/lib/rules/objectCalls.d.ts +10 -0
  312. package/lib/rules/objectCalls.js +38 -0
  313. package/lib/rules/objectEntriesMethods.d.ts +10 -0
  314. package/lib/rules/objectEntriesMethods.js +82 -0
  315. package/lib/rules/objectHasOwns.d.ts +10 -0
  316. package/lib/rules/objectHasOwns.js +50 -0
  317. package/lib/rules/objectKeyDuplicates.d.ts +10 -0
  318. package/lib/rules/objectKeyDuplicates.js +63 -0
  319. package/lib/rules/objectProto.d.ts +6 -2
  320. package/lib/rules/objectProto.js +49 -53
  321. package/lib/rules/objectPrototypeBuiltIns.d.ts +10 -0
  322. package/lib/rules/objectPrototypeBuiltIns.js +54 -0
  323. package/lib/rules/objectShorthand.d.ts +10 -0
  324. package/lib/rules/objectShorthand.js +84 -0
  325. package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +10 -0
  326. package/lib/rules/objectSpreadUnnecessaryFallbacks.js +43 -0
  327. package/lib/rules/objectTypeDefinitions.d.ts +10 -0
  328. package/lib/rules/objectTypeDefinitions.js +34 -0
  329. package/lib/rules/octalEscapes.d.ts +6 -2
  330. package/lib/rules/octalEscapes.js +54 -67
  331. package/lib/rules/octalNumbers.d.ts +6 -2
  332. package/lib/rules/octalNumbers.js +54 -67
  333. package/lib/rules/operatorAssignmentShorthand.d.ts +10 -0
  334. package/lib/rules/operatorAssignmentShorthand.js +77 -0
  335. package/lib/rules/overloadSignaturesAdjacent.d.ts +10 -0
  336. package/lib/rules/overloadSignaturesAdjacent.js +140 -0
  337. package/lib/rules/parameterReassignments.d.ts +10 -0
  338. package/lib/rules/parameterReassignments.js +76 -0
  339. package/lib/rules/parseIntRadixes.d.ts +10 -0
  340. package/lib/rules/parseIntRadixes.js +62 -0
  341. package/lib/rules/propertyAccessNotation.d.ts +13 -0
  342. package/lib/rules/propertyAccessNotation.js +119 -0
  343. package/lib/rules/recursionOnlyArguments.d.ts +10 -0
  344. package/lib/rules/recursionOnlyArguments.js +71 -0
  345. package/lib/rules/redundantTypeConstituents.d.ts +10 -0
  346. package/lib/rules/redundantTypeConstituents.js +277 -0
  347. package/lib/rules/regexAllGlobalFlags.d.ts +10 -0
  348. package/lib/rules/regexAllGlobalFlags.js +56 -0
  349. package/lib/rules/regexAmbiguousInvalidity.d.ts +10 -0
  350. package/lib/rules/regexAmbiguousInvalidity.js +297 -0
  351. package/lib/rules/regexCharacterClassRanges.d.ts +10 -0
  352. package/lib/rules/regexCharacterClassRanges.js +137 -0
  353. package/lib/rules/regexCharacterClassSetOperations.d.ts +10 -0
  354. package/lib/rules/regexCharacterClassSetOperations.js +81 -0
  355. package/lib/rules/regexCharacterClasses.d.ts +10 -0
  356. package/lib/rules/regexCharacterClasses.js +234 -0
  357. package/lib/rules/regexConciseCharacterClassNegations.d.ts +10 -0
  358. package/lib/rules/regexConciseCharacterClassNegations.js +52 -0
  359. package/lib/rules/regexContradictoryAssertions.d.ts +10 -0
  360. package/lib/rules/regexContradictoryAssertions.js +210 -0
  361. package/lib/rules/regexControlCharacterEscapes.d.ts +10 -0
  362. package/lib/rules/regexControlCharacterEscapes.js +130 -0
  363. package/lib/rules/regexControlCharacters.d.ts +10 -0
  364. package/lib/rules/regexControlCharacters.js +95 -0
  365. package/lib/rules/regexDigitMatchers.d.ts +10 -0
  366. package/lib/rules/regexDigitMatchers.js +180 -0
  367. package/lib/rules/regexDollarEscapes.d.ts +10 -0
  368. package/lib/rules/regexDollarEscapes.js +91 -0
  369. package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +10 -0
  370. package/lib/rules/regexDuplicateCharacterClassCharacters.js +128 -0
  371. package/lib/rules/regexEmptyAlternatives.d.ts +10 -0
  372. package/lib/rules/regexEmptyAlternatives.js +140 -0
  373. package/lib/rules/regexEmptyCapturingGroups.d.ts +10 -0
  374. package/lib/rules/regexEmptyCapturingGroups.js +67 -0
  375. package/lib/rules/regexEmptyCharacterClasses.d.ts +10 -0
  376. package/lib/rules/regexEmptyCharacterClasses.js +68 -0
  377. package/lib/rules/regexEmptyGroups.d.ts +10 -0
  378. package/lib/rules/regexEmptyGroups.js +66 -0
  379. package/lib/rules/regexEmptyLazyQuantifiers.d.ts +10 -0
  380. package/lib/rules/regexEmptyLazyQuantifiers.js +92 -0
  381. package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +10 -0
  382. package/lib/rules/regexEmptyLookaroundsAssertions.js +68 -0
  383. package/lib/rules/regexEmptyStringLiterals.d.ts +10 -0
  384. package/lib/rules/regexEmptyStringLiterals.js +66 -0
  385. package/lib/rules/regexEscapeBackspaces.d.ts +10 -0
  386. package/lib/rules/regexEscapeBackspaces.js +69 -0
  387. package/lib/rules/regexExecutors.d.ts +10 -0
  388. package/lib/rules/regexExecutors.js +58 -0
  389. package/lib/rules/regexGraphemeStringLiterals.d.ts +10 -0
  390. package/lib/rules/regexGraphemeStringLiterals.js +51 -0
  391. package/lib/rules/regexHexadecimalEscapes.d.ts +10 -0
  392. package/lib/rules/regexHexadecimalEscapes.js +71 -0
  393. package/lib/rules/regexIgnoreCaseFlags.d.ts +10 -0
  394. package/lib/rules/regexIgnoreCaseFlags.js +145 -0
  395. package/lib/rules/regexInvisibleCharacters.d.ts +10 -0
  396. package/lib/rules/regexInvisibleCharacters.js +90 -0
  397. package/lib/rules/regexLetterCasing.d.ts +10 -0
  398. package/lib/rules/regexLetterCasing.js +186 -0
  399. package/lib/rules/regexLiterals.d.ts +10 -0
  400. package/lib/rules/regexLiterals.js +92 -0
  401. package/lib/rules/regexLookaroundAssertions.d.ts +10 -0
  402. package/lib/rules/regexLookaroundAssertions.js +163 -0
  403. package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +10 -0
  404. package/lib/rules/regexLookaroundQuantifierOptimizations.js +94 -0
  405. package/lib/rules/regexMatchNotation.d.ts +10 -0
  406. package/lib/rules/regexMatchNotation.js +139 -0
  407. package/lib/rules/regexMisleadingCapturingGroups.d.ts +10 -0
  408. package/lib/rules/regexMisleadingCapturingGroups.js +229 -0
  409. package/lib/rules/regexMisleadingQuantifiers.d.ts +10 -0
  410. package/lib/rules/regexMisleadingQuantifiers.js +78 -0
  411. package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +10 -0
  412. package/lib/rules/regexMisleadingUnicodeCharacters.js +203 -0
  413. package/lib/rules/regexNamedBackreferences.d.ts +10 -0
  414. package/lib/rules/regexNamedBackreferences.js +48 -0
  415. package/lib/rules/regexNamedCaptureGroups.d.ts +9 -0
  416. package/lib/rules/regexNamedCaptureGroups.js +67 -0
  417. package/lib/rules/regexNamedReplacements.d.ts +10 -0
  418. package/lib/rules/regexNamedReplacements.js +93 -0
  419. package/lib/rules/regexNonStandardFlags.d.ts +10 -0
  420. package/lib/rules/regexNonStandardFlags.js +66 -0
  421. package/lib/rules/regexObscureRanges.d.ts +10 -0
  422. package/lib/rules/regexObscureRanges.js +93 -0
  423. package/lib/rules/regexOctalEscapes.d.ts +10 -0
  424. package/lib/rules/regexOctalEscapes.js +70 -0
  425. package/lib/rules/regexPlusQuantifiers.d.ts +10 -0
  426. package/lib/rules/regexPlusQuantifiers.js +68 -0
  427. package/lib/rules/regexPredefinedAssertions.d.ts +10 -0
  428. package/lib/rules/regexPredefinedAssertions.js +127 -0
  429. package/lib/rules/regexQuestionQuantifiers.d.ts +10 -0
  430. package/lib/rules/regexQuestionQuantifiers.js +104 -0
  431. package/lib/rules/regexRepeatQuantifiers.d.ts +10 -0
  432. package/lib/rules/regexRepeatQuantifiers.js +96 -0
  433. package/lib/rules/regexResultArrayGroups.d.ts +10 -0
  434. package/lib/rules/regexResultArrayGroups.js +187 -0
  435. package/lib/rules/regexSetOperationOptimizations.d.ts +10 -0
  436. package/lib/rules/regexSetOperationOptimizations.js +177 -0
  437. package/lib/rules/regexStandaloneBackslashes.d.ts +10 -0
  438. package/lib/rules/regexStandaloneBackslashes.js +59 -0
  439. package/lib/rules/regexStarQuantifiers.d.ts +10 -0
  440. package/lib/rules/regexStarQuantifiers.js +68 -0
  441. package/lib/rules/regexSuperLinearBacktracking.d.ts +10 -0
  442. package/lib/rules/regexSuperLinearBacktracking.js +98 -0
  443. package/lib/rules/regexSuperLinearMoves.d.ts +10 -0
  444. package/lib/rules/regexSuperLinearMoves.js +142 -0
  445. package/lib/rules/regexTestMethods.d.ts +10 -0
  446. package/lib/rules/regexTestMethods.js +83 -0
  447. package/lib/rules/regexUnicodeCodepointEscapes.d.ts +10 -0
  448. package/lib/rules/regexUnicodeCodepointEscapes.js +107 -0
  449. package/lib/rules/regexUnicodeEscapes.d.ts +9 -0
  450. package/lib/rules/regexUnicodeEscapes.js +97 -0
  451. package/lib/rules/regexUnicodeFlag.d.ts +9 -0
  452. package/lib/rules/regexUnicodeFlag.js +97 -0
  453. package/lib/rules/regexUnicodeProperties.d.ts +10 -0
  454. package/lib/rules/regexUnicodeProperties.js +133 -0
  455. package/lib/rules/regexUnnecessaryAssertions.d.ts +10 -0
  456. package/lib/rules/regexUnnecessaryAssertions.js +223 -0
  457. package/lib/rules/regexUnnecessaryBackreferences.d.ts +10 -0
  458. package/lib/rules/regexUnnecessaryBackreferences.js +125 -0
  459. package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +10 -0
  460. package/lib/rules/regexUnnecessaryCharacterClasses.js +74 -0
  461. package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +10 -0
  462. package/lib/rules/regexUnnecessaryCharacterRanges.js +108 -0
  463. package/lib/rules/regexUnnecessaryDisjunctions.d.ts +10 -0
  464. package/lib/rules/regexUnnecessaryDisjunctions.js +118 -0
  465. package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +10 -0
  466. package/lib/rules/regexUnnecessaryDollarReplacements.js +144 -0
  467. package/lib/rules/regexUnnecessaryEscapes.d.ts +10 -0
  468. package/lib/rules/regexUnnecessaryEscapes.js +136 -0
  469. package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +10 -0
  470. package/lib/rules/regexUnnecessaryLookaroundAssertions.js +80 -0
  471. package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +10 -0
  472. package/lib/rules/regexUnnecessaryNestedAssertions.js +198 -0
  473. package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +10 -0
  474. package/lib/rules/regexUnnecessaryNestedQuantifiers.js +93 -0
  475. package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +10 -0
  476. package/lib/rules/regexUnnecessaryNonCapturingGroups.js +104 -0
  477. package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +10 -0
  478. package/lib/rules/regexUnnecessaryNumericQuantifiers.js +69 -0
  479. package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +10 -0
  480. package/lib/rules/regexUnnecessaryOptionalAssertions.js +137 -0
  481. package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +10 -0
  482. package/lib/rules/regexUnnecessaryReferentialBackreferences.js +123 -0
  483. package/lib/rules/regexUnnecessarySetOperands.d.ts +10 -0
  484. package/lib/rules/regexUnnecessarySetOperands.js +136 -0
  485. package/lib/rules/regexUnusedCapturingGroups.d.ts +10 -0
  486. package/lib/rules/regexUnusedCapturingGroups.js +69 -0
  487. package/lib/rules/regexUnusedFlags.d.ts +10 -0
  488. package/lib/rules/regexUnusedFlags.js +116 -0
  489. package/lib/rules/regexUnusedLazyQuantifiers.d.ts +10 -0
  490. package/lib/rules/regexUnusedLazyQuantifiers.js +63 -0
  491. package/lib/rules/regexUnusedQuantifiers.d.ts +10 -0
  492. package/lib/rules/regexUnusedQuantifiers.js +63 -0
  493. package/lib/rules/regexValidity.d.ts +10 -0
  494. package/lib/rules/regexValidity.js +146 -0
  495. package/lib/rules/regexWordMatchers.d.ts +10 -0
  496. package/lib/rules/regexWordMatchers.js +146 -0
  497. package/lib/rules/regexZeroQuantifiers.d.ts +10 -0
  498. package/lib/rules/regexZeroQuantifiers.js +60 -0
  499. package/lib/rules/responseJsonMethods.d.ts +10 -0
  500. package/lib/rules/responseJsonMethods.js +51 -0
  501. package/lib/rules/restrictedIdentifiers.d.ts +13 -0
  502. package/lib/rules/restrictedIdentifiers.js +41 -0
  503. package/lib/rules/returnAssignments.d.ts +6 -2
  504. package/lib/rules/returnAssignments.js +36 -48
  505. package/lib/rules/returnThisTypes.d.ts +10 -0
  506. package/lib/rules/returnThisTypes.js +94 -0
  507. package/lib/rules/ruleCreator.d.ts +3 -0
  508. package/lib/rules/ruleCreator.js +17 -0
  509. package/lib/rules/selfAssignments.d.ts +6 -2
  510. package/lib/rules/selfAssignments.js +28 -43
  511. package/lib/rules/sequences.d.ts +6 -2
  512. package/lib/rules/sequences.js +27 -33
  513. package/lib/rules/setSizeLengthChecks.d.ts +10 -0
  514. package/lib/rules/setSizeLengthChecks.js +48 -0
  515. package/lib/rules/setterReturns.d.ts +10 -0
  516. package/lib/rules/setterReturns.js +41 -0
  517. package/lib/rules/shadowedRestrictedNames.d.ts +6 -2
  518. package/lib/rules/shadowedRestrictedNames.js +65 -92
  519. package/lib/rules/singleVariableDeclarations.d.ts +10 -0
  520. package/lib/rules/singleVariableDeclarations.js +36 -0
  521. package/lib/rules/sizeComparisonOperators.d.ts +16 -0
  522. package/lib/rules/sizeComparisonOperators.js +148 -0
  523. package/lib/rules/sparseArrays.d.ts +6 -2
  524. package/lib/rules/sparseArrays.js +42 -53
  525. package/lib/rules/staticMemberOnlyClasses.d.ts +10 -0
  526. package/lib/rules/staticMemberOnlyClasses.js +77 -0
  527. package/lib/rules/stringCaseMismatches.d.ts +10 -0
  528. package/lib/rules/stringCaseMismatches.js +58 -0
  529. package/lib/rules/stringCodePoints.d.ts +10 -0
  530. package/lib/rules/stringCodePoints.js +50 -0
  531. package/lib/rules/stringSliceMethods.d.ts +10 -0
  532. package/lib/rules/stringSliceMethods.js +47 -0
  533. package/lib/rules/stringStartsEndsWith.d.ts +10 -0
  534. package/lib/rules/stringStartsEndsWith.js +79 -0
  535. package/lib/rules/structuredCloneMethods.d.ts +10 -0
  536. package/lib/rules/structuredCloneMethods.js +39 -0
  537. package/lib/rules/symbolDescriptions.d.ts +6 -2
  538. package/lib/rules/symbolDescriptions.js +31 -40
  539. package/lib/rules/thisAliases.d.ts +10 -0
  540. package/lib/rules/thisAliases.js +44 -0
  541. package/lib/rules/thisBeforeSuper.d.ts +10 -0
  542. package/lib/rules/thisBeforeSuper.js +86 -0
  543. package/lib/rules/throwErrors.d.ts +10 -0
  544. package/lib/rules/throwErrors.js +61 -0
  545. package/lib/rules/topLevelAwaits.d.ts +10 -0
  546. package/lib/rules/topLevelAwaits.js +49 -0
  547. package/lib/rules/tripleSlashReferenceValidity.d.ts +10 -0
  548. package/lib/rules/tripleSlashReferenceValidity.js +54 -0
  549. package/lib/rules/tripleSlashReferences.d.ts +10 -0
  550. package/lib/rules/tripleSlashReferences.js +34 -0
  551. package/lib/rules/tsComments.d.ts +22 -0
  552. package/lib/rules/tsComments.js +130 -0
  553. package/lib/rules/tslintComments.d.ts +10 -0
  554. package/lib/rules/tslintComments.js +36 -0
  555. package/lib/rules/typeAssertionStyles.d.ts +10 -0
  556. package/lib/rules/typeAssertionStyles.js +32 -0
  557. package/lib/rules/typeofComparisons.d.ts +6 -2
  558. package/lib/rules/typeofComparisons.js +51 -71
  559. package/lib/rules/unassignedVariables.d.ts +6 -2
  560. package/lib/rules/unassignedVariables.js +36 -54
  561. package/lib/rules/undefinedTypeofChecks.d.ts +10 -0
  562. package/lib/rules/undefinedTypeofChecks.js +41 -0
  563. package/lib/rules/undefinedVariables.d.ts +6 -2
  564. package/lib/rules/undefinedVariables.js +38 -75
  565. package/lib/rules/unicodeBOMs.d.ts +6 -2
  566. package/lib/rules/unicodeBOMs.js +38 -40
  567. package/lib/rules/unnecessaryBinds.d.ts +10 -0
  568. package/lib/rules/unnecessaryBinds.js +78 -0
  569. package/lib/rules/unnecessaryBlocks.d.ts +6 -2
  570. package/lib/rules/unnecessaryBlocks.js +59 -74
  571. package/lib/rules/unnecessaryBooleanCasts.d.ts +10 -0
  572. package/lib/rules/unnecessaryBooleanCasts.js +58 -0
  573. package/lib/rules/unnecessaryCatches.d.ts +6 -2
  574. package/lib/rules/unnecessaryCatches.js +47 -67
  575. package/lib/rules/unnecessaryComparisons.d.ts +10 -0
  576. package/lib/rules/unnecessaryComparisons.js +300 -0
  577. package/lib/rules/unnecessaryConcatenation.d.ts +6 -2
  578. package/lib/rules/unnecessaryConcatenation.js +27 -37
  579. package/lib/rules/unnecessaryEscapes.d.ts +10 -0
  580. package/lib/rules/unnecessaryEscapes.js +134 -0
  581. package/lib/rules/unnecessaryMathClamps.d.ts +10 -0
  582. package/lib/rules/unnecessaryMathClamps.js +114 -0
  583. package/lib/rules/unnecessaryNumericFractions.d.ts +10 -0
  584. package/lib/rules/unnecessaryNumericFractions.js +50 -0
  585. package/lib/rules/unnecessaryRenames.d.ts +10 -0
  586. package/lib/rules/unnecessaryRenames.js +92 -0
  587. package/lib/rules/unnecessaryTernaries.d.ts +10 -0
  588. package/lib/rules/unnecessaryTernaries.js +88 -0
  589. package/lib/rules/unnecessaryUseStricts.d.ts +10 -0
  590. package/lib/rules/unnecessaryUseStricts.js +40 -0
  591. package/lib/rules/unsafeNegations.d.ts +6 -2
  592. package/lib/rules/unsafeNegations.js +37 -49
  593. package/lib/rules/utils/collectAccessorPairs.d.ts +12 -0
  594. package/lib/rules/utils/collectAccessorPairs.js +29 -0
  595. package/lib/rules/utils/countCommentsInRange.d.ts +3 -0
  596. package/lib/rules/utils/countCommentsInRange.js +12 -0
  597. package/lib/rules/utils/discriminateAnyType.d.ts +13 -9
  598. package/lib/rules/utils/discriminateAnyType.js +34 -37
  599. package/lib/rules/utils/equalityOperators.d.ts +9 -0
  600. package/lib/rules/utils/equalityOperators.js +36 -0
  601. package/lib/rules/utils/forEachReturnStatement.d.ts +3 -0
  602. package/lib/rules/utils/forEachReturnStatement.js +29 -0
  603. package/lib/rules/utils/formatReportedType.d.ts +4 -0
  604. package/lib/rules/utils/formatReportedType.js +9 -0
  605. package/lib/rules/utils/getConstrainedType.d.ts +3 -2
  606. package/lib/rules/utils/getConstrainedType.js +8 -3
  607. package/lib/rules/utils/getFunctionName.d.ts +3 -0
  608. package/lib/rules/utils/getFunctionName.js +16 -0
  609. package/lib/rules/utils/getRegExpConstruction.d.ts +10 -0
  610. package/lib/rules/utils/getRegExpConstruction.js +26 -0
  611. package/lib/rules/utils/getRegExpLiteralDetails.d.ts +7 -0
  612. package/lib/rules/utils/getRegExpLiteralDetails.js +13 -0
  613. package/lib/rules/utils/getThisExpression.d.ts +3 -2
  614. package/lib/rules/utils/getThisExpression.js +15 -22
  615. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +3 -0
  616. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +13 -0
  617. package/lib/rules/utils/isBuiltinSymbolLike.d.ts +3 -0
  618. package/lib/rules/utils/isBuiltinSymbolLike.js +33 -0
  619. package/lib/rules/utils/isDirectEqualityCheck.d.ts +4 -0
  620. package/lib/rules/utils/isDirectEqualityCheck.js +29 -0
  621. package/lib/rules/utils/isErrorSubclass.d.ts +3 -0
  622. package/lib/rules/utils/isErrorSubclass.js +27 -0
  623. package/lib/rules/utils/isInBooleanContext.d.ts +3 -0
  624. package/lib/rules/utils/isInBooleanContext.js +22 -0
  625. package/lib/rules/utils/isTypeRecursive.d.ts +2 -1
  626. package/lib/rules/utils/isTypeRecursive.js +7 -4
  627. package/lib/rules/utils/isUnsafeAssignment.d.ts +4 -2
  628. package/lib/rules/utils/isUnsafeAssignment.js +41 -72
  629. package/lib/rules/utils/operators.d.ts +5 -4
  630. package/lib/rules/utils/operators.js +32 -33
  631. package/lib/rules/utils/parseRegexpAst.d.ts +2 -0
  632. package/lib/rules/utils/parseRegexpAst.js +17 -0
  633. package/lib/rules/utils/parseRegexpAstFull.d.ts +3 -0
  634. package/lib/rules/utils/parseRegexpAstFull.js +18 -0
  635. package/lib/rules/utils/skipParentheses.d.ts +3 -0
  636. package/lib/rules/utils/skipParentheses.js +10 -0
  637. package/lib/rules/variableDeletions.d.ts +6 -2
  638. package/lib/rules/variableDeletions.js +34 -38
  639. package/lib/rules/voidOperator.d.ts +6 -2
  640. package/lib/rules/voidOperator.js +33 -35
  641. package/lib/rules/withStatements.d.ts +10 -0
  642. package/lib/rules/withStatements.js +30 -0
  643. package/lib/rules/wrapperObjects.d.ts +10 -0
  644. package/lib/rules/wrapperObjects.js +36 -0
  645. package/package.json +29 -13
  646. package/CHANGELOG.md +0 -91
  647. package/lib/collectReferencedFilePaths.d.ts +0 -2
  648. package/lib/collectReferencedFilePaths.js +0 -21
  649. package/lib/createTypeScriptFileFromProgram.d.ts +0 -3
  650. package/lib/createTypeScriptFileFromProgram.js +0 -63
  651. package/lib/createTypeScriptFileFromProjectService.d.ts +0 -10
  652. package/lib/createTypeScriptFileFromProjectService.js +0 -20
  653. package/lib/directives/parseDirectivesFromTypeScriptFile.d.ts +0 -5
  654. package/lib/directives/parseDirectivesFromTypeScriptFile.js +0 -21
  655. package/lib/directives/parseDirectivesFromTypeScriptFile.test.d.ts +0 -1
  656. package/lib/directives/parseDirectivesFromTypeScriptFile.test.js +0 -91
  657. package/lib/formatDiagnostic.d.ts +0 -10
  658. package/lib/formatDiagnostic.js +0 -121
  659. package/lib/getFirstEnumValues.d.ts +0 -35
  660. package/lib/getFirstEnumValues.js +0 -51
  661. package/lib/getFirstEnumValues.test.d.ts +0 -1
  662. package/lib/getFirstEnumValues.test.js +0 -45
  663. package/lib/getTSNodeRange.d.ts +0 -3
  664. package/lib/getTSNodeRange.js +0 -6
  665. package/lib/language.d.ts +0 -8
  666. package/lib/language.js +0 -65
  667. package/lib/nodes.d.ts +0 -142
  668. package/lib/nodes.js +0 -1
  669. package/lib/normalizeRange.d.ts +0 -3
  670. package/lib/normalizeRange.js +0 -13
  671. package/lib/prepareTypeScriptFile.d.ts +0 -7
  672. package/lib/prepareTypeScriptFile.js +0 -7
  673. package/lib/rules/anyReturns.test.d.ts +0 -1
  674. package/lib/rules/anyReturns.test.js +0 -647
  675. package/lib/rules/asyncPromiseExecutors.test.d.ts +0 -1
  676. package/lib/rules/asyncPromiseExecutors.test.js +0 -71
  677. package/lib/rules/caseDeclarations.test.d.ts +0 -1
  678. package/lib/rules/caseDeclarations.test.js +0 -227
  679. package/lib/rules/caseDuplicates.test.d.ts +0 -1
  680. package/lib/rules/caseDuplicates.test.js +0 -307
  681. package/lib/rules/chainedAssignments.test.d.ts +0 -1
  682. package/lib/rules/chainedAssignments.test.js +0 -262
  683. package/lib/rules/classAssignments.test.d.ts +0 -1
  684. package/lib/rules/classAssignments.test.js +0 -156
  685. package/lib/rules/consecutiveNonNullAssertions.test.d.ts +0 -1
  686. package/lib/rules/consecutiveNonNullAssertions.test.js +0 -32
  687. package/lib/rules/constantAssignments.test.d.ts +0 -1
  688. package/lib/rules/constantAssignments.test.js +0 -221
  689. package/lib/rules/constructorReturns.test.d.ts +0 -1
  690. package/lib/rules/constructorReturns.test.js +0 -96
  691. package/lib/rules/debuggerStatements.test.d.ts +0 -1
  692. package/lib/rules/debuggerStatements.test.js +0 -80
  693. package/lib/rules/defaultCaseLast.test.d.ts +0 -1
  694. package/lib/rules/defaultCaseLast.test.js +0 -195
  695. package/lib/rules/duplicateArguments.test.d.ts +0 -1
  696. package/lib/rules/duplicateArguments.test.js +0 -139
  697. package/lib/rules/elseIfDuplicates.test.d.ts +0 -1
  698. package/lib/rules/elseIfDuplicates.test.js +0 -176
  699. package/lib/rules/emptyBlocks.test.d.ts +0 -1
  700. package/lib/rules/emptyBlocks.test.js +0 -135
  701. package/lib/rules/emptyDestructures.test.d.ts +0 -1
  702. package/lib/rules/emptyDestructures.test.js +0 -186
  703. package/lib/rules/emptyStaticBlocks.test.d.ts +0 -1
  704. package/lib/rules/emptyStaticBlocks.test.js +0 -167
  705. package/lib/rules/exceptionAssignments.test.d.ts +0 -1
  706. package/lib/rules/exceptionAssignments.test.js +0 -264
  707. package/lib/rules/forDirections.test.d.ts +0 -1
  708. package/lib/rules/forDirections.test.js +0 -124
  709. package/lib/rules/forInArrays.test.d.ts +0 -1
  710. package/lib/rules/forInArrays.test.js +0 -24
  711. package/lib/rules/functionAssignments.test.d.ts +0 -1
  712. package/lib/rules/functionAssignments.test.js +0 -209
  713. package/lib/rules/functionNewCalls.test.d.ts +0 -1
  714. package/lib/rules/functionNewCalls.test.js +0 -115
  715. package/lib/rules/generatorFunctionYields.test.d.ts +0 -1
  716. package/lib/rules/generatorFunctionYields.test.js +0 -151
  717. package/lib/rules/globalAssignments.test.d.ts +0 -1
  718. package/lib/rules/globalAssignments.test.js +0 -215
  719. package/lib/rules/globalObjectCalls.test.d.ts +0 -1
  720. package/lib/rules/globalObjectCalls.test.js +0 -93
  721. package/lib/rules/namespaceDeclarations.test.d.ts +0 -1
  722. package/lib/rules/namespaceDeclarations.test.js +0 -40
  723. package/lib/rules/negativeZeroComparisons.test.d.ts +0 -1
  724. package/lib/rules/negativeZeroComparisons.test.js +0 -209
  725. package/lib/rules/newExpressions.test.d.ts +0 -1
  726. package/lib/rules/newExpressions.test.js +0 -79
  727. package/lib/rules/newNativeNonConstructors.test.d.ts +0 -1
  728. package/lib/rules/newNativeNonConstructors.test.js +0 -94
  729. package/lib/rules/nonOctalDecimalEscapes.test.d.ts +0 -1
  730. package/lib/rules/nonOctalDecimalEscapes.test.js +0 -69
  731. package/lib/rules/numericLiteralParsing.test.d.ts +0 -1
  732. package/lib/rules/numericLiteralParsing.test.js +0 -99
  733. package/lib/rules/objectProto.test.d.ts +0 -1
  734. package/lib/rules/objectProto.test.js +0 -96
  735. package/lib/rules/octalEscapes.test.d.ts +0 -1
  736. package/lib/rules/octalEscapes.test.js +0 -213
  737. package/lib/rules/octalNumbers.test.d.ts +0 -1
  738. package/lib/rules/octalNumbers.test.js +0 -245
  739. package/lib/rules/returnAssignments.test.d.ts +0 -1
  740. package/lib/rules/returnAssignments.test.js +0 -185
  741. package/lib/rules/ruleTester.d.ts +0 -2
  742. package/lib/rules/ruleTester.js +0 -3
  743. package/lib/rules/selfAssignments.test.d.ts +0 -1
  744. package/lib/rules/selfAssignments.test.js +0 -66
  745. package/lib/rules/selfComparisons.d.ts +0 -6
  746. package/lib/rules/selfComparisons.js +0 -41
  747. package/lib/rules/selfComparisons.test.d.ts +0 -1
  748. package/lib/rules/selfComparisons.test.js +0 -297
  749. package/lib/rules/sequences.test.d.ts +0 -1
  750. package/lib/rules/sequences.test.js +0 -48
  751. package/lib/rules/shadowedRestrictedNames.test.d.ts +0 -1
  752. package/lib/rules/shadowedRestrictedNames.test.js +0 -147
  753. package/lib/rules/sparseArrays.test.d.ts +0 -1
  754. package/lib/rules/sparseArrays.test.js +0 -110
  755. package/lib/rules/symbolDescriptions.test.d.ts +0 -1
  756. package/lib/rules/symbolDescriptions.test.js +0 -89
  757. package/lib/rules/typeofComparisons.test.d.ts +0 -1
  758. package/lib/rules/typeofComparisons.test.js +0 -85
  759. package/lib/rules/unassignedVariables.test.d.ts +0 -1
  760. package/lib/rules/unassignedVariables.test.js +0 -72
  761. package/lib/rules/undefinedVariables.test.d.ts +0 -1
  762. package/lib/rules/undefinedVariables.test.js +0 -80
  763. package/lib/rules/unicodeBOMs.test.d.ts +0 -1
  764. package/lib/rules/unicodeBOMs.test.js +0 -66
  765. package/lib/rules/unnecessaryBlocks.test.d.ts +0 -1
  766. package/lib/rules/unnecessaryBlocks.test.js +0 -147
  767. package/lib/rules/unnecessaryCatches.test.d.ts +0 -1
  768. package/lib/rules/unnecessaryCatches.test.js +0 -210
  769. package/lib/rules/unnecessaryConcatenation.test.d.ts +0 -1
  770. package/lib/rules/unnecessaryConcatenation.test.js +0 -87
  771. package/lib/rules/unsafeNegations.test.d.ts +0 -1
  772. package/lib/rules/unsafeNegations.test.js +0 -63
  773. package/lib/rules/variableDeletions.test.d.ts +0 -1
  774. package/lib/rules/variableDeletions.test.js +0 -75
  775. package/lib/rules/voidOperator.test.d.ts +0 -1
  776. package/lib/rules/voidOperator.test.js +0 -98
  777. package/lib/utils/declarationIncludesGlobal.d.ts +0 -2
  778. package/lib/utils/declarationIncludesGlobal.js +0 -5
  779. package/lib/utils/declarationsIncludeGlobal.d.ts +0 -2
  780. package/lib/utils/declarationsIncludeGlobal.js +0 -4
  781. package/lib/utils/getDeclarationsIfGlobal.d.ts +0 -2
  782. package/lib/utils/getDeclarationsIfGlobal.js +0 -7
  783. package/lib/utils/getModifyingReferences.d.ts +0 -8
  784. package/lib/utils/getModifyingReferences.js +0 -42
  785. package/lib/utils/hasSameTokens.d.ts +0 -2
  786. package/lib/utils/hasSameTokens.js +0 -30
  787. package/lib/utils/isGlobalDeclaration.d.ts +0 -2
  788. package/lib/utils/isGlobalDeclaration.js +0 -4
  789. package/lib/utils/isGlobalDeclarationOfName.d.ts +0 -5
  790. package/lib/utils/isGlobalDeclarationOfName.js +0 -35
  791. package/lib/utils/isGlobalVariable.d.ts +0 -8
  792. package/lib/utils/isGlobalVariable.js +0 -21
  793. package/lib/utils/unwrapParentParenthesizedExpressions.d.ts +0 -2
  794. package/lib/utils/unwrapParentParenthesizedExpressions.js +0 -6
  795. package/lib/utils/unwrapParenthesizedExpression.d.ts +0 -2
  796. package/lib/utils/unwrapParenthesizedExpression.js +0 -6
  797. package/src/collectReferencedFilePaths.ts +0 -37
  798. package/src/createTypeScriptFileFromProgram.ts +0 -86
  799. package/src/createTypeScriptFileFromProjectService.ts +0 -31
  800. package/src/directives/parseDirectivesFromTypeScriptFile.test.ts +0 -108
  801. package/src/directives/parseDirectivesFromTypeScriptFile.ts +0 -31
  802. package/src/formatDiagnostic.ts +0 -166
  803. package/src/getFirstEnumValues.test.ts +0 -51
  804. package/src/getFirstEnumValues.ts +0 -59
  805. package/src/getTSNodeRange.ts +0 -13
  806. package/src/index.ts +0 -7
  807. package/src/language.ts +0 -122
  808. package/src/nodes.ts +0 -146
  809. package/src/normalizeRange.ts +0 -25
  810. package/src/plugin.ts +0 -111
  811. package/src/prepareTypeScriptFile.ts +0 -14
  812. package/src/rules/anyReturns.test.ts +0 -649
  813. package/src/rules/anyReturns.ts +0 -263
  814. package/src/rules/asyncPromiseExecutors.test.ts +0 -72
  815. package/src/rules/asyncPromiseExecutors.ts +0 -61
  816. package/src/rules/caseDeclarations.test.ts +0 -228
  817. package/src/rules/caseDeclarations.ts +0 -70
  818. package/src/rules/caseDuplicates.test.ts +0 -308
  819. package/src/rules/caseDuplicates.ts +0 -57
  820. package/src/rules/chainedAssignments.test.ts +0 -263
  821. package/src/rules/chainedAssignments.ts +0 -58
  822. package/src/rules/classAssignments.test.ts +0 -157
  823. package/src/rules/classAssignments.ts +0 -50
  824. package/src/rules/consecutiveNonNullAssertions.test.ts +0 -33
  825. package/src/rules/consecutiveNonNullAssertions.ts +0 -46
  826. package/src/rules/constantAssignments.test.ts +0 -222
  827. package/src/rules/constantAssignments.ts +0 -78
  828. package/src/rules/constructorReturns.test.ts +0 -97
  829. package/src/rules/constructorReturns.ts +0 -59
  830. package/src/rules/debuggerStatements.test.ts +0 -81
  831. package/src/rules/debuggerStatements.ts +0 -45
  832. package/src/rules/defaultCaseLast.test.ts +0 -196
  833. package/src/rules/defaultCaseLast.ts +0 -54
  834. package/src/rules/duplicateArguments.test.ts +0 -140
  835. package/src/rules/duplicateArguments.ts +0 -58
  836. package/src/rules/elseIfDuplicates.test.ts +0 -177
  837. package/src/rules/elseIfDuplicates.ts +0 -69
  838. package/src/rules/emptyBlocks.test.ts +0 -136
  839. package/src/rules/emptyBlocks.ts +0 -73
  840. package/src/rules/emptyDestructures.test.ts +0 -187
  841. package/src/rules/emptyDestructures.ts +0 -48
  842. package/src/rules/emptyStaticBlocks.test.ts +0 -168
  843. package/src/rules/emptyStaticBlocks.ts +0 -60
  844. package/src/rules/exceptionAssignments.test.ts +0 -265
  845. package/src/rules/exceptionAssignments.ts +0 -77
  846. package/src/rules/forDirections.test.ts +0 -125
  847. package/src/rules/forDirections.ts +0 -174
  848. package/src/rules/forInArrays.test.ts +0 -25
  849. package/src/rules/forInArrays.ts +0 -70
  850. package/src/rules/functionAssignments.test.ts +0 -210
  851. package/src/rules/functionAssignments.ts +0 -51
  852. package/src/rules/functionNewCalls.test.ts +0 -116
  853. package/src/rules/functionNewCalls.ts +0 -75
  854. package/src/rules/generatorFunctionYields.test.ts +0 -152
  855. package/src/rules/generatorFunctionYields.ts +0 -71
  856. package/src/rules/globalAssignments.test.ts +0 -216
  857. package/src/rules/globalAssignments.ts +0 -67
  858. package/src/rules/globalObjectCalls.test.ts +0 -94
  859. package/src/rules/globalObjectCalls.ts +0 -52
  860. package/src/rules/namespaceDeclarations.test.ts +0 -41
  861. package/src/rules/namespaceDeclarations.ts +0 -74
  862. package/src/rules/negativeZeroComparisons.test.ts +0 -210
  863. package/src/rules/negativeZeroComparisons.ts +0 -87
  864. package/src/rules/newExpressions.test.ts +0 -80
  865. package/src/rules/newExpressions.ts +0 -67
  866. package/src/rules/newNativeNonConstructors.test.ts +0 -95
  867. package/src/rules/newNativeNonConstructors.ts +0 -59
  868. package/src/rules/nonOctalDecimalEscapes.test.ts +0 -70
  869. package/src/rules/nonOctalDecimalEscapes.ts +0 -70
  870. package/src/rules/numericLiteralParsing.test.ts +0 -100
  871. package/src/rules/numericLiteralParsing.ts +0 -116
  872. package/src/rules/objectProto.test.ts +0 -97
  873. package/src/rules/objectProto.ts +0 -62
  874. package/src/rules/octalEscapes.test.ts +0 -214
  875. package/src/rules/octalEscapes.ts +0 -85
  876. package/src/rules/octalNumbers.test.ts +0 -246
  877. package/src/rules/octalNumbers.ts +0 -75
  878. package/src/rules/returnAssignments.test.ts +0 -186
  879. package/src/rules/returnAssignments.ts +0 -57
  880. package/src/rules/ruleTester.ts +0 -4
  881. package/src/rules/selfAssignments.test.ts +0 -67
  882. package/src/rules/selfAssignments.ts +0 -50
  883. package/src/rules/selfComparisons.test.ts +0 -298
  884. package/src/rules/selfComparisons.ts +0 -45
  885. package/src/rules/sequences.test.ts +0 -49
  886. package/src/rules/sequences.ts +0 -37
  887. package/src/rules/shadowedRestrictedNames.test.ts +0 -148
  888. package/src/rules/shadowedRestrictedNames.ts +0 -105
  889. package/src/rules/sparseArrays.test.ts +0 -111
  890. package/src/rules/sparseArrays.ts +0 -61
  891. package/src/rules/symbolDescriptions.test.ts +0 -90
  892. package/src/rules/symbolDescriptions.ts +0 -47
  893. package/src/rules/typeofComparisons.test.ts +0 -86
  894. package/src/rules/typeofComparisons.ts +0 -88
  895. package/src/rules/unassignedVariables.test.ts +0 -73
  896. package/src/rules/unassignedVariables.ts +0 -69
  897. package/src/rules/undefinedVariables.test.ts +0 -81
  898. package/src/rules/undefinedVariables.ts +0 -97
  899. package/src/rules/unicodeBOMs.test.ts +0 -67
  900. package/src/rules/unicodeBOMs.ts +0 -44
  901. package/src/rules/unnecessaryBlocks.test.ts +0 -148
  902. package/src/rules/unnecessaryBlocks.ts +0 -89
  903. package/src/rules/unnecessaryCatches.test.ts +0 -211
  904. package/src/rules/unnecessaryCatches.ts +0 -84
  905. package/src/rules/unnecessaryConcatenation.test.ts +0 -88
  906. package/src/rules/unnecessaryConcatenation.ts +0 -44
  907. package/src/rules/unsafeNegations.test.ts +0 -64
  908. package/src/rules/unsafeNegations.ts +0 -59
  909. package/src/rules/utils/discriminateAnyType.ts +0 -66
  910. package/src/rules/utils/getConstrainedType.ts +0 -9
  911. package/src/rules/utils/getThisExpression.ts +0 -24
  912. package/src/rules/utils/isTypeRecursive.ts +0 -10
  913. package/src/rules/utils/isUnsafeAssignment.ts +0 -113
  914. package/src/rules/utils/operators.ts +0 -39
  915. package/src/rules/variableDeletions.test.ts +0 -76
  916. package/src/rules/variableDeletions.ts +0 -43
  917. package/src/rules/voidOperator.test.ts +0 -99
  918. package/src/rules/voidOperator.ts +0 -38
  919. package/src/utils/declarationIncludesGlobal.ts +0 -9
  920. package/src/utils/declarationsIncludeGlobal.ts +0 -7
  921. package/src/utils/getDeclarationsIfGlobal.ts +0 -14
  922. package/src/utils/getModifyingReferences.ts +0 -58
  923. package/src/utils/hasSameTokens.ts +0 -45
  924. package/src/utils/isGlobalDeclaration.ts +0 -10
  925. package/src/utils/isGlobalDeclarationOfName.ts +0 -56
  926. package/src/utils/isGlobalVariable.ts +0 -30
  927. package/src/utils/unwrapParentParenthesizedExpressions.ts +0 -7
  928. package/src/utils/unwrapParenthesizedExpression.ts +0 -9
  929. package/tsconfig.json +0 -9
  930. package/tsconfig.tsbuildinfo +0 -1
@@ -1,6 +1,10 @@
1
1
  declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports using chained assignment expressions (e.g., a = b = c).";
3
3
  readonly id: "chainedAssignments";
4
- readonly preset: "stylistic";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "noChainedAssignment", undefined>;
4
+ readonly presets: ["stylistic", "stylisticStrict"];
5
+ } & {
6
+ presets?: ("javascript" | "logical" | "logicalStrict" | "stylistic" | "stylisticStrict")[];
7
+ url: string;
8
+ }, object, object, "noChainedAssignment", import("@flint.fyi/core").AnyOptionalSchema>;
6
9
  export default _default;
10
+ //# sourceMappingURL=chainedAssignments.d.ts.map
@@ -1,49 +1,33 @@
1
+ import { ruleCreator } from "./ruleCreator.js";
2
+ import { getTSNodeRange, typescriptLanguage, unwrapParentParenthesizedExpressions, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
3
+ import { SyntaxKind } from "typescript";
1
4
  import * as tsutils from "ts-api-utils";
2
- import * as ts from "typescript";
3
- import { getTSNodeRange } from "../getTSNodeRange.js";
4
- import { typescriptLanguage } from "../language.js";
5
- import { unwrapParenthesizedExpression } from "../utils/unwrapParenthesizedExpression.js";
6
- import { unwrapParenthesizedExpressionsParent } from "../utils/unwrapParentParenthesizedExpressions.js";
7
- export default typescriptLanguage.createRule({
8
- about: {
9
- description: "Reports using chained assignment expressions (e.g., a = b = c).",
10
- id: "chainedAssignments",
11
- preset: "stylistic",
12
- },
13
- messages: {
14
- noChainedAssignment: {
15
- primary: "Prefer separate assignment statements for readability instead of chaining assignments.",
16
- secondary: [
17
- "Chained assignments can be hard to read and can lead to unexpected behavior with variable scoping and type inference.",
18
- "Each assignment creates a reference to the same value, which may cause confusion when dealing with mutable values.",
19
- ],
20
- suggestions: [
21
- "Break the chained assignment into separate assignment statements, one for each variable.",
22
- ],
23
- },
24
- },
25
- setup(context) {
26
- return {
27
- visitors: {
28
- BinaryExpression: (node) => {
29
- if (!tsutils.isAssignmentKind(node.operatorToken.kind)) {
30
- return;
31
- }
32
- const rightSide = unwrapParenthesizedExpression(node.right);
33
- if (!ts.isBinaryExpression(rightSide) ||
34
- !tsutils.isAssignmentKind(rightSide.operatorToken.kind)) {
35
- return;
36
- }
37
- const parent = unwrapParenthesizedExpressionsParent(node);
38
- if (ts.isBinaryExpression(parent)) {
39
- return;
40
- }
41
- context.report({
42
- message: "noChainedAssignment",
43
- range: getTSNodeRange(node.operatorToken, context.sourceFile),
44
- });
45
- },
46
- },
47
- };
48
- },
5
+ //#region src/rules/chainedAssignments.ts
6
+ var chainedAssignments_default = ruleCreator.createRule(typescriptLanguage, {
7
+ about: {
8
+ description: "Reports using chained assignment expressions (e.g., a = b = c).",
9
+ id: "chainedAssignments",
10
+ presets: ["stylistic", "stylisticStrict"]
11
+ },
12
+ messages: { noChainedAssignment: {
13
+ primary: "Prefer separate assignment statements for readability instead of chaining assignments.",
14
+ secondary: ["Chained assignments can be hard to read and can lead to unexpected behavior with variable scoping and type inference.", "Each assignment creates a reference to the same value, which may cause confusion when dealing with mutable values."],
15
+ suggestions: ["Break the chained assignment into separate assignment statements, one for each variable."]
16
+ } },
17
+ setup(context) {
18
+ return { visitors: { BinaryExpression: (node, { sourceFile }) => {
19
+ if (!tsutils.isAssignmentKind(node.operatorToken.kind)) return;
20
+ const rightSide = unwrapParenthesizedNode(node.right);
21
+ if (rightSide.kind !== SyntaxKind.BinaryExpression || !tsutils.isAssignmentKind(rightSide.operatorToken.kind)) return;
22
+ if (unwrapParentParenthesizedExpressions(node).kind === SyntaxKind.BinaryExpression) return;
23
+ context.report({
24
+ message: "noChainedAssignment",
25
+ range: getTSNodeRange(node.operatorToken, sourceFile)
26
+ });
27
+ } } };
28
+ }
49
29
  });
30
+ //#endregion
31
+ export { chainedAssignments_default as default };
32
+
33
+ //# sourceMappingURL=chainedAssignments.js.map
@@ -0,0 +1,10 @@
1
+ declare const _default: import("@flint.fyi/core").Rule<{
2
+ readonly description: "Reports comparing charAt() results with strings longer than one character.";
3
+ readonly id: "charAtComparisons";
4
+ readonly presets: ["logical", "logicalStrict"];
5
+ } & {
6
+ presets?: ("javascript" | "logical" | "logicalStrict" | "stylistic" | "stylisticStrict")[];
7
+ url: string;
8
+ }, object, object, "invalidComparison", import("@flint.fyi/core").AnyOptionalSchema>;
9
+ export default _default;
10
+ //# sourceMappingURL=charAtComparisons.d.ts.map
@@ -0,0 +1,58 @@
1
+ import { ruleCreator } from "./ruleCreator.js";
2
+ import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
+ import * as ts$1 from "typescript";
4
+ //#region src/rules/charAtComparisons.ts
5
+ const comparisonOperators = new Set([
6
+ ts$1.SyntaxKind.EqualsEqualsEqualsToken,
7
+ ts$1.SyntaxKind.EqualsEqualsToken,
8
+ ts$1.SyntaxKind.ExclamationEqualsEqualsToken,
9
+ ts$1.SyntaxKind.ExclamationEqualsToken
10
+ ]);
11
+ function getStringLiteralLength(node) {
12
+ return ts$1.isStringLiteral(node) || ts$1.isNoSubstitutionTemplateLiteral(node) ? node.text.length : void 0;
13
+ }
14
+ function isStringCharAtCall(node, typeChecker) {
15
+ return ts$1.isCallExpression(node) && ts$1.isPropertyAccessExpression(node.expression) && node.expression.name.text === "charAt" && isStringType(typeChecker.getTypeAtLocation(node.expression.expression));
16
+ }
17
+ function isStringType(type) {
18
+ return (type.flags & ts$1.TypeFlags.StringLike) !== 0;
19
+ }
20
+ var charAtComparisons_default = ruleCreator.createRule(typescriptLanguage, {
21
+ about: {
22
+ description: "Reports comparing charAt() results with strings longer than one character.",
23
+ id: "charAtComparisons",
24
+ presets: ["logical", "logicalStrict"]
25
+ },
26
+ messages: { invalidComparison: {
27
+ primary: "Comparing charAt() result with a string of length {{ length }} is always {{ result }}.",
28
+ secondary: ["The `charAt` method returns a string of exactly one character.", "Comparing it with a multi-character string will always evaluate to the same result."],
29
+ suggestions: ["Use a single-character string for the comparison.", "Consider using `startsWith()`, `includes()`, or `slice()` for multi-character comparisons."]
30
+ } },
31
+ setup(context) {
32
+ return { visitors: { BinaryExpression: (node, { sourceFile, typeChecker }) => {
33
+ if (!comparisonOperators.has(node.operatorToken.kind)) return;
34
+ let literal;
35
+ if (isStringCharAtCall(node.left, typeChecker)) literal = node.right;
36
+ else if (isStringCharAtCall(node.right, typeChecker)) literal = node.left;
37
+ else return;
38
+ const length = getStringLiteralLength(literal);
39
+ if (length === void 0 || length <= 1) return;
40
+ const isEquality = node.operatorToken.kind === ts$1.SyntaxKind.EqualsEqualsEqualsToken || node.operatorToken.kind === ts$1.SyntaxKind.EqualsEqualsToken;
41
+ context.report({
42
+ data: {
43
+ length,
44
+ result: isEquality ? "false" : "true"
45
+ },
46
+ message: "invalidComparison",
47
+ range: {
48
+ begin: node.getStart(sourceFile),
49
+ end: node.getEnd()
50
+ }
51
+ });
52
+ } } };
53
+ }
54
+ });
55
+ //#endregion
56
+ export { charAtComparisons_default as default };
57
+
58
+ //# sourceMappingURL=charAtComparisons.js.map
@@ -1,6 +1,10 @@
1
1
  declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports reassigning class declarations.";
3
3
  readonly id: "classAssignments";
4
- readonly preset: "untyped";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "noClassAssign", undefined>;
4
+ readonly presets: ["javascript"];
5
+ } & {
6
+ presets?: ("javascript" | "logical" | "logicalStrict" | "stylistic" | "stylisticStrict")[];
7
+ url: string;
8
+ }, object, object, "noClassAssign", import("@flint.fyi/core").AnyOptionalSchema>;
6
9
  export default _default;
10
+ //# sourceMappingURL=classAssignments.d.ts.map
@@ -1,42 +1,32 @@
1
- import { typescriptLanguage } from "../language.js";
2
- import { getModifyingReferences } from "../utils/getModifyingReferences.js";
3
- export default typescriptLanguage.createRule({
4
- about: {
5
- description: "Reports reassigning class declarations.",
6
- id: "classAssignments",
7
- preset: "untyped",
8
- },
9
- messages: {
10
- noClassAssign: {
11
- primary: "Reassigning a class declaration is misleading and makes the class harder to use.",
12
- secondary: [
13
- "Reassigning a class declaration can lead to unexpected behavior and makes code harder to understand.",
14
- "Class declarations are typically intended to be immutable references, and reassigning them can cause confusion about which class is being used.",
15
- ],
16
- suggestions: [
17
- "Use a different variable name if you need to store a modified reference to a class.",
18
- ],
19
- },
20
- },
21
- setup(context) {
22
- return {
23
- visitors: {
24
- ClassDeclaration: (node) => {
25
- if (!node.name) {
26
- return;
27
- }
28
- const modifyingReferences = getModifyingReferences(node.name, context.sourceFile, context.typeChecker);
29
- for (const reference of modifyingReferences) {
30
- context.report({
31
- message: "noClassAssign",
32
- range: {
33
- begin: reference.getStart(context.sourceFile),
34
- end: reference.getEnd(),
35
- },
36
- });
37
- }
38
- },
39
- },
40
- };
41
- },
1
+ import { ruleCreator } from "./ruleCreator.js";
2
+ import { getModifyingReferences, typescriptLanguage } from "@flint.fyi/typescript-language";
3
+ //#region src/rules/classAssignments.ts
4
+ var classAssignments_default = ruleCreator.createRule(typescriptLanguage, {
5
+ about: {
6
+ description: "Reports reassigning class declarations.",
7
+ id: "classAssignments",
8
+ presets: ["javascript"]
9
+ },
10
+ messages: { noClassAssign: {
11
+ primary: "Reassigning a class declaration is misleading and makes the class harder to use.",
12
+ secondary: ["Reassigning a class declaration can lead to unexpected behavior and makes code harder to understand.", "Class declarations are typically intended to be immutable references, and reassigning them can cause confusion about which class is being used."],
13
+ suggestions: ["Use a different variable name if you need to store a modified reference to a class."]
14
+ } },
15
+ setup(context) {
16
+ return { visitors: { ClassDeclaration: (node, { sourceFile, typeChecker }) => {
17
+ if (!node.name) return;
18
+ const modifyingReferences = getModifyingReferences(node.name, sourceFile, typeChecker);
19
+ for (const reference of modifyingReferences) context.report({
20
+ message: "noClassAssign",
21
+ range: {
22
+ begin: reference.getStart(sourceFile),
23
+ end: reference.getEnd()
24
+ }
25
+ });
26
+ } } };
27
+ }
42
28
  });
29
+ //#endregion
30
+ export { classAssignments_default as default };
31
+
32
+ //# sourceMappingURL=classAssignments.js.map
@@ -0,0 +1,10 @@
1
+ declare const _default: import("@flint.fyi/core").Rule<{
2
+ readonly description: "Reports assigning literal values to `this` in constructors instead of using class field declarations.";
3
+ readonly id: "classFieldDeclarations";
4
+ readonly presets: ["javascript"];
5
+ } & {
6
+ presets?: ("javascript" | "logical" | "logicalStrict" | "stylistic" | "stylisticStrict")[];
7
+ url: string;
8
+ }, object, object, "preferClassField", import("@flint.fyi/core").AnyOptionalSchema>;
9
+ export default _default;
10
+ //# sourceMappingURL=classFieldDeclarations.d.ts.map
@@ -0,0 +1,40 @@
1
+ import { ruleCreator } from "./ruleCreator.js";
2
+ import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
+ import ts from "typescript";
4
+ //#region src/rules/classFieldDeclarations.ts
5
+ function isLiteralValue(node) {
6
+ if (ts.isPrefixUnaryExpression(node)) return isLiteralValue(node.operand);
7
+ return node.kind === ts.SyntaxKind.TrueKeyword || node.kind === ts.SyntaxKind.FalseKeyword || node.kind === ts.SyntaxKind.NullKeyword || ts.isLiteralExpression(node);
8
+ }
9
+ function isThisLiteralAssignment(node) {
10
+ return (ts.isElementAccessExpression(node.left) || ts.isPropertyAccessExpression(node.left)) && ts.isPropertyAccessExpression(node.left) && node.left.expression.kind === ts.SyntaxKind.ThisKeyword && isLiteralValue(node.right);
11
+ }
12
+ var classFieldDeclarations_default = ruleCreator.createRule(typescriptLanguage, {
13
+ about: {
14
+ description: "Reports assigning literal values to `this` in constructors instead of using class field declarations.",
15
+ id: "classFieldDeclarations",
16
+ presets: ["javascript"]
17
+ },
18
+ messages: { preferClassField: {
19
+ primary: "Prefer class field declaration over `this` assignment in constructor for static values.",
20
+ secondary: ["Class field declarations are more concise and clearly express the intent of initializing properties.", "Moving property initialization to class fields keeps the constructor focused on dynamic initialization logic."],
21
+ suggestions: ["Move this property assignment to a class field declaration."]
22
+ } },
23
+ setup(context) {
24
+ function checkStatement(node, sourceFile) {
25
+ if (!ts.isExpressionStatement(node) || !ts.isBinaryExpression(node.expression) || node.expression.operatorToken.kind !== ts.SyntaxKind.EqualsToken || !isThisLiteralAssignment(node.expression)) return;
26
+ context.report({
27
+ message: "preferClassField",
28
+ range: getTSNodeRange(node, sourceFile)
29
+ });
30
+ }
31
+ return { visitors: { Constructor: (node, { sourceFile }) => {
32
+ if (!node.body || !ts.isClassDeclaration(node.parent) && !ts.isClassExpression(node.parent)) return;
33
+ for (const statement of node.body.statements) checkStatement(statement, sourceFile);
34
+ } } };
35
+ }
36
+ });
37
+ //#endregion
38
+ export { classFieldDeclarations_default as default };
39
+
40
+ //# sourceMappingURL=classFieldDeclarations.js.map
@@ -0,0 +1,10 @@
1
+ declare const _default: import("@flint.fyi/core").Rule<{
2
+ readonly description: "Reports getters that return literal values instead of using readonly class fields.";
3
+ readonly id: "classLiteralProperties";
4
+ readonly presets: ["stylistic", "stylisticStrict"];
5
+ } & {
6
+ presets?: ("javascript" | "logical" | "logicalStrict" | "stylistic" | "stylisticStrict")[];
7
+ url: string;
8
+ }, object, object, "preferField", import("@flint.fyi/core").AnyOptionalSchema>;
9
+ export default _default;
10
+ //# sourceMappingURL=classLiteralProperties.d.ts.map
@@ -0,0 +1,45 @@
1
+ import { ruleCreator } from "./ruleCreator.js";
2
+ import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
+ import ts from "typescript";
4
+ //#region src/rules/classLiteralProperties.ts
5
+ var classLiteralProperties_default = ruleCreator.createRule(typescriptLanguage, {
6
+ about: {
7
+ description: "Reports getters that return literal values instead of using readonly class fields.",
8
+ id: "classLiteralProperties",
9
+ presets: ["stylistic", "stylisticStrict"]
10
+ },
11
+ messages: { preferField: {
12
+ primary: "Prefer a readonly class field over a getter returning a literal value.",
13
+ secondary: ["Readonly fields are more concise and avoid the overhead of a function call.", "Getters returning literal values provide no benefit over readonly fields."],
14
+ suggestions: ["Replace this getter with a readonly field."]
15
+ } },
16
+ setup(context) {
17
+ return { visitors: { GetAccessor: (node, { sourceFile }) => {
18
+ if (node.body?.statements.length !== 1) return;
19
+ const statement = node.body.statements[0];
20
+ if (!ts.isReturnStatement(statement) || !statement.expression || !isLiteralValue(statement.expression)) return;
21
+ context.report({
22
+ message: "preferField",
23
+ range: getTSNodeRange(node, sourceFile)
24
+ });
25
+ } } };
26
+ }
27
+ });
28
+ function isLiteralValue(node) {
29
+ switch (node.kind) {
30
+ case ts.SyntaxKind.BigIntLiteral:
31
+ case ts.SyntaxKind.FalseKeyword:
32
+ case ts.SyntaxKind.NoSubstitutionTemplateLiteral:
33
+ case ts.SyntaxKind.NullKeyword:
34
+ case ts.SyntaxKind.NumericLiteral:
35
+ case ts.SyntaxKind.RegularExpressionLiteral:
36
+ case ts.SyntaxKind.StringLiteral:
37
+ case ts.SyntaxKind.TrueKeyword: return true;
38
+ case ts.SyntaxKind.PrefixUnaryExpression: return isLiteralValue(node.operand);
39
+ default: return false;
40
+ }
41
+ }
42
+ //#endregion
43
+ export { classLiteralProperties_default as default };
44
+
45
+ //# sourceMappingURL=classLiteralProperties.js.map
@@ -0,0 +1,10 @@
1
+ declare const _default: import("@flint.fyi/core").Rule<{
2
+ readonly description: "Reports duplicate class member names that will be overwritten.";
3
+ readonly id: "classMemberDuplicates";
4
+ readonly presets: ["javascript"];
5
+ } & {
6
+ presets?: ("javascript" | "logical" | "logicalStrict" | "stylistic" | "stylisticStrict")[];
7
+ url: string;
8
+ }, object, object, "duplicateMember", import("@flint.fyi/core").AnyOptionalSchema>;
9
+ export default _default;
10
+ //# sourceMappingURL=classMemberDuplicates.d.ts.map
@@ -0,0 +1,71 @@
1
+ import { ruleCreator } from "./ruleCreator.js";
2
+ import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
+ import { SyntaxKind } from "typescript";
4
+ //#region src/rules/classMemberDuplicates.ts
5
+ var classMemberDuplicates_default = ruleCreator.createRule(typescriptLanguage, {
6
+ about: {
7
+ description: "Reports duplicate class member names that will be overwritten.",
8
+ id: "classMemberDuplicates",
9
+ presets: ["javascript"]
10
+ },
11
+ messages: { duplicateMember: {
12
+ primary: "Duplicate class member name '{{ memberName }}' will be overwritten.",
13
+ secondary: ["Duplicate class members are legal in JavaScript, but only the last definition is used.", "This can lead to confusion and bugs, especially when maintaining the code."],
14
+ suggestions: ["If both members are meant to exist, rename one of them.", "If only the last definition is meant to exist, remove the earlier one."]
15
+ } },
16
+ setup(context) {
17
+ return { visitors: {
18
+ ClassDeclaration: visitClass,
19
+ ClassExpression: visitClass
20
+ } };
21
+ function visitClass(node, { sourceFile }) {
22
+ const seenMembers = {
23
+ instance: {
24
+ getters: /* @__PURE__ */ new Map(),
25
+ setters: /* @__PURE__ */ new Map(),
26
+ values: /* @__PURE__ */ new Map()
27
+ },
28
+ static: {
29
+ getters: /* @__PURE__ */ new Map(),
30
+ setters: /* @__PURE__ */ new Map(),
31
+ values: /* @__PURE__ */ new Map()
32
+ }
33
+ };
34
+ for (const member of node.members.toReversed()) {
35
+ const key = getMemberKeyName(member);
36
+ if (!key) continue;
37
+ const namespace = key.isStatic ? seenMembers.static : seenMembers.instance;
38
+ let isDuplicate;
39
+ if (key.group === "values") isDuplicate = namespace.values.has(key.text) || namespace.getters.has(key.text) || namespace.setters.has(key.text);
40
+ else if (key.group === "getters") isDuplicate = namespace.getters.has(key.text) || namespace.values.has(key.text);
41
+ else isDuplicate = namespace.setters.has(key.text) || namespace.values.has(key.text);
42
+ if (isDuplicate) context.report({
43
+ data: { memberName: key.text },
44
+ message: "duplicateMember",
45
+ range: getTSNodeRange(key.node, sourceFile)
46
+ });
47
+ namespace[key.group].set(key.text, member);
48
+ }
49
+ }
50
+ }
51
+ });
52
+ function getMemberKeyName(member) {
53
+ if (member.kind === SyntaxKind.PropertyDeclaration || member.kind === SyntaxKind.MethodDeclaration || member.kind === SyntaxKind.GetAccessor || member.kind === SyntaxKind.SetAccessor) {
54
+ const text = getNameText(member.name);
55
+ if (!text) return;
56
+ const isStatic = member.modifiers?.some((modifier) => modifier.kind === SyntaxKind.StaticKeyword);
57
+ return {
58
+ group: member.kind === SyntaxKind.GetAccessor ? "getters" : member.kind === SyntaxKind.SetAccessor ? "setters" : "values",
59
+ isStatic: !!isStatic,
60
+ node: member.name,
61
+ text
62
+ };
63
+ }
64
+ }
65
+ function getNameText(name) {
66
+ if (name.kind === SyntaxKind.Identifier || name.kind === SyntaxKind.NumericLiteral || name.kind === SyntaxKind.BigIntLiteral || name.kind === SyntaxKind.StringLiteral || name.kind === SyntaxKind.NoSubstitutionTemplateLiteral || name.kind === SyntaxKind.PrivateIdentifier) return name.text;
67
+ }
68
+ //#endregion
69
+ export { classMemberDuplicates_default as default };
70
+
71
+ //# sourceMappingURL=classMemberDuplicates.js.map
@@ -0,0 +1,14 @@
1
+ import { z } from "zod/v4";
2
+ declare const _default: import("@flint.fyi/core").Rule<{
3
+ readonly description: "Reports class methods that do not use `this`.";
4
+ readonly id: "classMethodsThis";
5
+ readonly presets: ["stylistic", "stylisticStrict"];
6
+ } & {
7
+ presets?: ("javascript" | "logical" | "logicalStrict" | "stylistic" | "stylisticStrict")[];
8
+ url: string;
9
+ }, object, object, "missingThis", {
10
+ readonly ignoreClassesThatImplementAnInterface: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"public-fields">]>>;
11
+ readonly ignoreOverrideMethods: z.ZodDefault<z.ZodBoolean>;
12
+ }>;
13
+ export default _default;
14
+ //# sourceMappingURL=classMethodsThis.d.ts.map
@@ -0,0 +1,124 @@
1
+ import { ruleCreator } from "./ruleCreator.js";
2
+ import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
+ import ts from "typescript";
4
+ import { z } from "zod/v4";
5
+ //#region src/rules/classMethodsThis.ts
6
+ function classImplementsSomething(classNode) {
7
+ return classNode.heritageClauses?.some((clause) => clause.token === ts.SyntaxKind.ImplementsKeyword) ?? false;
8
+ }
9
+ function containsThis(node) {
10
+ switch (node.kind) {
11
+ case ts.SyntaxKind.ClassDeclaration:
12
+ case ts.SyntaxKind.ClassExpression: {
13
+ const classNode = node;
14
+ for (const member of classNode.members) if (ts.isPropertyDeclaration(member) && ts.isComputedPropertyName(member.name) && containsThis(member.name.expression)) return true;
15
+ return false;
16
+ }
17
+ case ts.SyntaxKind.ClassStaticBlockDeclaration:
18
+ case ts.SyntaxKind.FunctionDeclaration:
19
+ case ts.SyntaxKind.FunctionExpression: return false;
20
+ case ts.SyntaxKind.SuperKeyword:
21
+ case ts.SyntaxKind.ThisKeyword: return true;
22
+ default: return ts.forEachChild(node, containsThis) ?? false;
23
+ }
24
+ }
25
+ function getMemberDisplayName(member, sourceFile) {
26
+ const name = member.name;
27
+ if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) return name.text;
28
+ if (ts.isPrivateIdentifier(name)) return name.text;
29
+ if (ts.isComputedPropertyName(name)) {
30
+ const expr = name.expression;
31
+ if (ts.isStringLiteral(expr) || ts.isNoSubstitutionTemplateLiteral(expr) || ts.isNumericLiteral(expr)) return expr.text;
32
+ return `[${expr.getText(sourceFile)}]`;
33
+ }
34
+ }
35
+ function hasModifier(modifiers, kind) {
36
+ return modifiers?.some((modifier) => modifier.kind === kind) ?? false;
37
+ }
38
+ function isPublicMember(member) {
39
+ if (ts.isPrivateIdentifier(member.name)) return false;
40
+ const modifiers = member.modifiers;
41
+ if (!modifiers) return true;
42
+ if (modifiers.some((m) => m.kind === ts.SyntaxKind.PrivateKeyword || m.kind === ts.SyntaxKind.ProtectedKeyword)) return false;
43
+ return true;
44
+ }
45
+ function shouldSkipMember(member, classNode, options) {
46
+ if (hasModifier(member.modifiers, ts.SyntaxKind.StaticKeyword)) return true;
47
+ if (options.ignoreOverrideMethods && hasModifier(member.modifiers, ts.SyntaxKind.OverrideKeyword)) return true;
48
+ const implementsInterface = classImplementsSomething(classNode);
49
+ const ignoreImpl = options.ignoreClassesThatImplementAnInterface;
50
+ if (implementsInterface && ignoreImpl) {
51
+ if (ignoreImpl === true) return true;
52
+ if (isPublicMember(member)) return true;
53
+ }
54
+ return false;
55
+ }
56
+ var classMethodsThis_default = ruleCreator.createRule(typescriptLanguage, {
57
+ about: {
58
+ description: "Reports class methods that do not use `this`.",
59
+ id: "classMethodsThis",
60
+ presets: ["stylistic", "stylisticStrict"]
61
+ },
62
+ messages: { missingThis: {
63
+ primary: "Expected 'this' to be used by class {{ kind }} '{{ name }}'.",
64
+ secondary: ["Methods that don't use `this` could be static methods or standalone functions.", "Using instance methods that don't access instance state can be misleading."],
65
+ suggestions: ["Add the `static` keyword to make this a static method.", "Extract this to a standalone function if it doesn't need class context."]
66
+ } },
67
+ options: {
68
+ ignoreClassesThatImplementAnInterface: z.union([z.boolean(), z.literal("public-fields")]).default(false).describe("Whether to ignore classes that implement interfaces. Set to 'public-fields' to only ignore public members."),
69
+ ignoreOverrideMethods: z.boolean().default(false).describe("Whether to ignore members with the 'override' modifier.")
70
+ },
71
+ setup(context) {
72
+ function reportMember(member, kind, sourceFile, reportFromStart) {
73
+ const name = getMemberDisplayName(member, sourceFile);
74
+ if (!name) return;
75
+ const beginNode = reportFromStart ? member : member.name;
76
+ context.report({
77
+ data: {
78
+ kind,
79
+ name
80
+ },
81
+ message: "missingThis",
82
+ range: {
83
+ begin: beginNode.getStart(sourceFile),
84
+ end: member.name.getEnd()
85
+ }
86
+ });
87
+ }
88
+ function checkMethod(member, classNode, sourceFile, options) {
89
+ if (member.body && !shouldSkipMember(member, classNode, options) && !containsThis(member.body)) reportMember(member, "method", sourceFile, false);
90
+ }
91
+ function checkAccessor(member, classNode, sourceFile, options, kind) {
92
+ if (member.body && !shouldSkipMember(member, classNode, options) && !containsThis(member.body)) reportMember(member, kind, sourceFile, true);
93
+ }
94
+ function checkPropertyInitializerFunction(member, classNode, sourceFile, options) {
95
+ if (!member.initializer) return;
96
+ if (member.initializer.kind !== ts.SyntaxKind.ArrowFunction && member.initializer.kind !== ts.SyntaxKind.FunctionExpression) return;
97
+ if (!shouldSkipMember(member, classNode, options) && !containsThis(member.initializer.body)) reportMember(member, "method", sourceFile, false);
98
+ }
99
+ function checkClass(node, { options, sourceFile }) {
100
+ for (const member of node.members) switch (member.kind) {
101
+ case ts.SyntaxKind.GetAccessor:
102
+ checkAccessor(member, node, sourceFile, options, "getter");
103
+ break;
104
+ case ts.SyntaxKind.MethodDeclaration:
105
+ checkMethod(member, node, sourceFile, options);
106
+ break;
107
+ case ts.SyntaxKind.PropertyDeclaration:
108
+ checkPropertyInitializerFunction(member, node, sourceFile, options);
109
+ break;
110
+ case ts.SyntaxKind.SetAccessor:
111
+ checkAccessor(member, node, sourceFile, options, "setter");
112
+ break;
113
+ }
114
+ }
115
+ return { visitors: {
116
+ ClassDeclaration: checkClass,
117
+ ClassExpression: checkClass
118
+ } };
119
+ }
120
+ });
121
+ //#endregion
122
+ export { classMethodsThis_default as default };
123
+
124
+ //# sourceMappingURL=classMethodsThis.js.map
@@ -0,0 +1,10 @@
1
+ declare const _default: import("@flint.fyi/core").Rule<{
2
+ readonly description: "Reports consecutive array.push() calls that could be combined into a single call.";
3
+ readonly id: "combinedPushes";
4
+ readonly presets: ["stylistic", "stylisticStrict"];
5
+ } & {
6
+ presets?: ("javascript" | "logical" | "logicalStrict" | "stylistic" | "stylisticStrict")[];
7
+ url: string;
8
+ }, object, object, "combinePushes", import("@flint.fyi/core").AnyOptionalSchema>;
9
+ export default _default;
10
+ //# sourceMappingURL=combinedPushes.d.ts.map