@flint.fyi/ts 0.21.0 → 0.23.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 (666) hide show
  1. package/{lib/plugin.d.ts → dist/index.d.mts} +1 -1
  2. package/dist/index.mjs +22468 -0
  3. package/package.json +9 -8
  4. package/lib/index.d.ts +0 -2
  5. package/lib/index.js +0 -2
  6. package/lib/plugin.js +0 -619
  7. package/lib/rules/accessorPairGroups.d.ts +0 -9
  8. package/lib/rules/accessorPairGroups.js +0 -46
  9. package/lib/rules/accessorPairTypes.d.ts +0 -9
  10. package/lib/rules/accessorPairTypes.js +0 -70
  11. package/lib/rules/accessorThisRecursion.d.ts +0 -9
  12. package/lib/rules/accessorThisRecursion.js +0 -63
  13. package/lib/rules/anyArguments.d.ts +0 -9
  14. package/lib/rules/anyArguments.js +0 -232
  15. package/lib/rules/anyAssignments.d.ts +0 -9
  16. package/lib/rules/anyAssignments.js +0 -263
  17. package/lib/rules/anyCalls.d.ts +0 -9
  18. package/lib/rules/anyCalls.js +0 -66
  19. package/lib/rules/anyMemberAccess.d.ts +0 -9
  20. package/lib/rules/anyMemberAccess.js +0 -83
  21. package/lib/rules/anyReturns.d.ts +0 -9
  22. package/lib/rules/anyReturns.js +0 -100
  23. package/lib/rules/arguments.d.ts +0 -9
  24. package/lib/rules/arguments.js +0 -36
  25. package/lib/rules/arrayCallbackReturns.d.ts +0 -9
  26. package/lib/rules/arrayCallbackReturns.js +0 -71
  27. package/lib/rules/arrayConstructors.d.ts +0 -9
  28. package/lib/rules/arrayConstructors.js +0 -45
  29. package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -9
  30. package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -52
  31. package/lib/rules/arrayElementDeletions.d.ts +0 -9
  32. package/lib/rules/arrayElementDeletions.js +0 -41
  33. package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -9
  34. package/lib/rules/arrayEmptyCallbackSlots.js +0 -38
  35. package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -9
  36. package/lib/rules/arrayExistenceChecksConsistency.js +0 -84
  37. package/lib/rules/arrayFilteredFinds.d.ts +0 -9
  38. package/lib/rules/arrayFilteredFinds.js +0 -72
  39. package/lib/rules/arrayFinds.d.ts +0 -9
  40. package/lib/rules/arrayFinds.js +0 -39
  41. package/lib/rules/arrayFlatMapMethods.d.ts +0 -9
  42. package/lib/rules/arrayFlatMapMethods.js +0 -45
  43. package/lib/rules/arrayFlatMethods.d.ts +0 -9
  44. package/lib/rules/arrayFlatMethods.js +0 -81
  45. package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -9
  46. package/lib/rules/arrayFlatUnnecessaryDepths.js +0 -31
  47. package/lib/rules/arrayIncludes.d.ts +0 -9
  48. package/lib/rules/arrayIncludes.js +0 -51
  49. package/lib/rules/arrayIncludesMethods.d.ts +0 -9
  50. package/lib/rules/arrayIncludesMethods.js +0 -35
  51. package/lib/rules/arrayIndexOfMethods.d.ts +0 -9
  52. package/lib/rules/arrayIndexOfMethods.js +0 -49
  53. package/lib/rules/arrayLoops.d.ts +0 -9
  54. package/lib/rules/arrayLoops.js +0 -34
  55. package/lib/rules/arrayMapIdentities.d.ts +0 -9
  56. package/lib/rules/arrayMapIdentities.js +0 -72
  57. package/lib/rules/arrayMutableReverses.d.ts +0 -9
  58. package/lib/rules/arrayMutableReverses.js +0 -37
  59. package/lib/rules/arrayMutableSorts.d.ts +0 -9
  60. package/lib/rules/arrayMutableSorts.js +0 -70
  61. package/lib/rules/arrayReduceTypeArguments.d.ts +0 -9
  62. package/lib/rules/arrayReduceTypeArguments.js +0 -62
  63. package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -9
  64. package/lib/rules/arraySliceUnnecessaryEnd.js +0 -49
  65. package/lib/rules/arraySomeMethods.d.ts +0 -9
  66. package/lib/rules/arraySomeMethods.js +0 -75
  67. package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -9
  68. package/lib/rules/arrayTernarySpreadingConsistency.js +0 -72
  69. package/lib/rules/arrayTypes.d.ts +0 -16
  70. package/lib/rules/arrayTypes.js +0 -109
  71. package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -9
  72. package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -95
  73. package/lib/rules/asConstAssertions.d.ts +0 -9
  74. package/lib/rules/asConstAssertions.js +0 -55
  75. package/lib/rules/assignmentOperatorShorthands.d.ts +0 -9
  76. package/lib/rules/assignmentOperatorShorthands.js +0 -45
  77. package/lib/rules/asyncFunctionAwaits.d.ts +0 -9
  78. package/lib/rules/asyncFunctionAwaits.js +0 -53
  79. package/lib/rules/asyncPromiseExecutors.d.ts +0 -9
  80. package/lib/rules/asyncPromiseExecutors.js +0 -39
  81. package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -9
  82. package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -50
  83. package/lib/rules/atAccesses.d.ts +0 -9
  84. package/lib/rules/atAccesses.js +0 -50
  85. package/lib/rules/builtinCoercions.d.ts +0 -9
  86. package/lib/rules/builtinCoercions.js +0 -115
  87. package/lib/rules/builtinConstructorNews.d.ts +0 -9
  88. package/lib/rules/builtinConstructorNews.js +0 -87
  89. package/lib/rules/caseDeclarations.d.ts +0 -9
  90. package/lib/rules/caseDeclarations.js +0 -38
  91. package/lib/rules/caseDuplicates.d.ts +0 -9
  92. package/lib/rules/caseDuplicates.js +0 -34
  93. package/lib/rules/caseFallthroughs.d.ts +0 -9
  94. package/lib/rules/caseFallthroughs.js +0 -74
  95. package/lib/rules/catchCallbackTypes.d.ts +0 -9
  96. package/lib/rules/catchCallbackTypes.js +0 -65
  97. package/lib/rules/caughtVariableNames.d.ts +0 -9
  98. package/lib/rules/caughtVariableNames.js +0 -38
  99. package/lib/rules/chainedAssignments.d.ts +0 -9
  100. package/lib/rules/chainedAssignments.js +0 -31
  101. package/lib/rules/charAtComparisons.d.ts +0 -9
  102. package/lib/rules/charAtComparisons.js +0 -53
  103. package/lib/rules/classAssignments.d.ts +0 -9
  104. package/lib/rules/classAssignments.js +0 -27
  105. package/lib/rules/classFieldDeclarations.d.ts +0 -9
  106. package/lib/rules/classFieldDeclarations.js +0 -38
  107. package/lib/rules/classLiteralProperties.d.ts +0 -9
  108. package/lib/rules/classLiteralProperties.js +0 -43
  109. package/lib/rules/classMemberDuplicates.d.ts +0 -9
  110. package/lib/rules/classMemberDuplicates.js +0 -69
  111. package/lib/rules/classMethodsThis.d.ts +0 -13
  112. package/lib/rules/classMethodsThis.js +0 -122
  113. package/lib/rules/combinedPushes.d.ts +0 -9
  114. package/lib/rules/combinedPushes.js +0 -54
  115. package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -9
  116. package/lib/rules/consecutiveNonNullAssertions.js +0 -37
  117. package/lib/rules/consoleCalls.d.ts +0 -8
  118. package/lib/rules/consoleCalls.js +0 -26
  119. package/lib/rules/constantAssignments.d.ts +0 -9
  120. package/lib/rules/constantAssignments.js +0 -39
  121. package/lib/rules/constructorGenericCalls.d.ts +0 -15
  122. package/lib/rules/constructorGenericCalls.js +0 -136
  123. package/lib/rules/constructorReturns.d.ts +0 -9
  124. package/lib/rules/constructorReturns.js +0 -39
  125. package/lib/rules/constructorSupers.d.ts +0 -9
  126. package/lib/rules/constructorSupers.js +0 -75
  127. package/lib/rules/dateConstructorClones.d.ts +0 -9
  128. package/lib/rules/dateConstructorClones.js +0 -35
  129. package/lib/rules/dateNowTimestamps.d.ts +0 -9
  130. package/lib/rules/dateNowTimestamps.js +0 -55
  131. package/lib/rules/debuggerStatements.d.ts +0 -9
  132. package/lib/rules/debuggerStatements.js +0 -31
  133. package/lib/rules/defaultCaseLast.d.ts +0 -9
  134. package/lib/rules/defaultCaseLast.js +0 -34
  135. package/lib/rules/defaultParameterLast.d.ts +0 -9
  136. package/lib/rules/defaultParameterLast.js +0 -40
  137. package/lib/rules/deprecated.d.ts +0 -9
  138. package/lib/rules/deprecated.js +0 -241
  139. package/lib/rules/destructuringConsistency.d.ts +0 -9
  140. package/lib/rules/destructuringConsistency.js +0 -104
  141. package/lib/rules/duplicateArguments.d.ts +0 -9
  142. package/lib/rules/duplicateArguments.js +0 -43
  143. package/lib/rules/dynamicDeletes.d.ts +0 -9
  144. package/lib/rules/dynamicDeletes.js +0 -35
  145. package/lib/rules/elseIfDuplicates.d.ts +0 -9
  146. package/lib/rules/elseIfDuplicates.js +0 -36
  147. package/lib/rules/elseReturns.d.ts +0 -9
  148. package/lib/rules/elseReturns.js +0 -65
  149. package/lib/rules/emptyBlocks.d.ts +0 -9
  150. package/lib/rules/emptyBlocks.js +0 -54
  151. package/lib/rules/emptyDestructures.d.ts +0 -9
  152. package/lib/rules/emptyDestructures.js +0 -32
  153. package/lib/rules/emptyEnums.d.ts +0 -9
  154. package/lib/rules/emptyEnums.js +0 -28
  155. package/lib/rules/emptyExports.d.ts +0 -9
  156. package/lib/rules/emptyExports.js +0 -58
  157. package/lib/rules/emptyFiles.d.ts +0 -9
  158. package/lib/rules/emptyFiles.js +0 -42
  159. package/lib/rules/emptyFunctions.d.ts +0 -9
  160. package/lib/rules/emptyFunctions.js +0 -59
  161. package/lib/rules/emptyModuleAttributes.d.ts +0 -9
  162. package/lib/rules/emptyModuleAttributes.js +0 -33
  163. package/lib/rules/emptyObjectTypes.d.ts +0 -9
  164. package/lib/rules/emptyObjectTypes.js +0 -45
  165. package/lib/rules/emptyStaticBlocks.d.ts +0 -9
  166. package/lib/rules/emptyStaticBlocks.js +0 -40
  167. package/lib/rules/emptyTypeParameterLists.d.ts +0 -9
  168. package/lib/rules/emptyTypeParameterLists.js +0 -29
  169. package/lib/rules/enumInitializers.d.ts +0 -9
  170. package/lib/rules/enumInitializers.js +0 -52
  171. package/lib/rules/enumMemberLiterals.d.ts +0 -9
  172. package/lib/rules/enumMemberLiterals.js +0 -37
  173. package/lib/rules/enumValueConsistency.d.ts +0 -9
  174. package/lib/rules/enumValueConsistency.js +0 -54
  175. package/lib/rules/enumValueDuplicates.d.ts +0 -9
  176. package/lib/rules/enumValueDuplicates.js +0 -43
  177. package/lib/rules/equalityOperatorNegations.d.ts +0 -8
  178. package/lib/rules/equalityOperatorNegations.js +0 -58
  179. package/lib/rules/equalityOperators.d.ts +0 -9
  180. package/lib/rules/equalityOperators.js +0 -42
  181. package/lib/rules/errorMessages.d.ts +0 -9
  182. package/lib/rules/errorMessages.js +0 -54
  183. package/lib/rules/errorSubclassProperties.d.ts +0 -9
  184. package/lib/rules/errorSubclassProperties.js +0 -142
  185. package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -9
  186. package/lib/rules/errorUnnecessaryCaptureStackTraces.js +0 -53
  187. package/lib/rules/escapeSequenceCasing.d.ts +0 -9
  188. package/lib/rules/escapeSequenceCasing.js +0 -73
  189. package/lib/rules/evals.d.ts +0 -9
  190. package/lib/rules/evals.js +0 -29
  191. package/lib/rules/evolvingVariableTypes.d.ts +0 -9
  192. package/lib/rules/evolvingVariableTypes.js +0 -31
  193. package/lib/rules/exceptionAssignments.d.ts +0 -9
  194. package/lib/rules/exceptionAssignments.js +0 -37
  195. package/lib/rules/explicitAnys.d.ts +0 -9
  196. package/lib/rules/explicitAnys.js +0 -53
  197. package/lib/rules/exponentiationOperators.d.ts +0 -9
  198. package/lib/rules/exponentiationOperators.js +0 -32
  199. package/lib/rules/exportFromImports.d.ts +0 -9
  200. package/lib/rules/exportFromImports.js +0 -117
  201. package/lib/rules/exportMutables.d.ts +0 -9
  202. package/lib/rules/exportMutables.js +0 -31
  203. package/lib/rules/exportUniqueNames.d.ts +0 -9
  204. package/lib/rules/exportUniqueNames.js +0 -63
  205. package/lib/rules/extraneousClasses.d.ts +0 -15
  206. package/lib/rules/extraneousClasses.js +0 -109
  207. package/lib/rules/fetchMethodBodies.d.ts +0 -9
  208. package/lib/rules/fetchMethodBodies.js +0 -70
  209. package/lib/rules/finallyStatementSafety.d.ts +0 -9
  210. package/lib/rules/finallyStatementSafety.js +0 -45
  211. package/lib/rules/forDirections.d.ts +0 -9
  212. package/lib/rules/forDirections.js +0 -73
  213. package/lib/rules/forInArrays.d.ts +0 -9
  214. package/lib/rules/forInArrays.js +0 -44
  215. package/lib/rules/forInGuards.d.ts +0 -8
  216. package/lib/rules/forInGuards.js +0 -42
  217. package/lib/rules/functionApplySpreads.d.ts +0 -9
  218. package/lib/rules/functionApplySpreads.js +0 -61
  219. package/lib/rules/functionAssignments.d.ts +0 -9
  220. package/lib/rules/functionAssignments.js +0 -27
  221. package/lib/rules/functionCurryingRedundancy.d.ts +0 -9
  222. package/lib/rules/functionCurryingRedundancy.js +0 -51
  223. package/lib/rules/functionDeclarationStyles.d.ts +0 -15
  224. package/lib/rules/functionDeclarationStyles.js +0 -65
  225. package/lib/rules/functionNameMatches.d.ts +0 -9
  226. package/lib/rules/functionNameMatches.js +0 -72
  227. package/lib/rules/functionNewCalls.d.ts +0 -9
  228. package/lib/rules/functionNewCalls.js +0 -40
  229. package/lib/rules/generatorFunctionYields.d.ts +0 -9
  230. package/lib/rules/generatorFunctionYields.js +0 -48
  231. package/lib/rules/getterReturns.d.ts +0 -9
  232. package/lib/rules/getterReturns.js +0 -63
  233. package/lib/rules/globalAssignments.d.ts +0 -9
  234. package/lib/rules/globalAssignments.js +0 -45
  235. package/lib/rules/globalObjectCalls.d.ts +0 -9
  236. package/lib/rules/globalObjectCalls.js +0 -40
  237. package/lib/rules/globalThisAliases.d.ts +0 -9
  238. package/lib/rules/globalThisAliases.js +0 -45
  239. package/lib/rules/impliedEvals.d.ts +0 -9
  240. package/lib/rules/impliedEvals.js +0 -128
  241. package/lib/rules/importEmptyBlocks.d.ts +0 -9
  242. package/lib/rules/importEmptyBlocks.js +0 -51
  243. package/lib/rules/importTypeSideEffects.d.ts +0 -9
  244. package/lib/rules/importTypeSideEffects.js +0 -29
  245. package/lib/rules/indexedObjectTypes.d.ts +0 -15
  246. package/lib/rules/indexedObjectTypes.js +0 -81
  247. package/lib/rules/instanceOfArrays.d.ts +0 -9
  248. package/lib/rules/instanceOfArrays.js +0 -29
  249. package/lib/rules/irregularWhitespaces.d.ts +0 -15
  250. package/lib/rules/irregularWhitespaces.js +0 -95
  251. package/lib/rules/isNaNComparisons.d.ts +0 -9
  252. package/lib/rules/isNaNComparisons.js +0 -41
  253. package/lib/rules/literalConstructorWrappers.d.ts +0 -9
  254. package/lib/rules/literalConstructorWrappers.js +0 -62
  255. package/lib/rules/mathMethods.d.ts +0 -9
  256. package/lib/rules/mathMethods.js +0 -126
  257. package/lib/rules/meaninglessVoidOperators.d.ts +0 -9
  258. package/lib/rules/meaninglessVoidOperators.js +0 -37
  259. package/lib/rules/misleadingVoidExpressions.d.ts +0 -9
  260. package/lib/rules/misleadingVoidExpressions.js +0 -126
  261. package/lib/rules/moduleSpecifierLists.d.ts +0 -9
  262. package/lib/rules/moduleSpecifierLists.js +0 -90
  263. package/lib/rules/multilineAmbiguities.d.ts +0 -9
  264. package/lib/rules/multilineAmbiguities.js +0 -62
  265. package/lib/rules/namedDefaultExports.d.ts +0 -9
  266. package/lib/rules/namedDefaultExports.js +0 -58
  267. package/lib/rules/namespaceDeclarations.d.ts +0 -13
  268. package/lib/rules/namespaceDeclarations.js +0 -35
  269. package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -9
  270. package/lib/rules/namespaceImplicitAmbientImports.js +0 -38
  271. package/lib/rules/namespaceKeywords.d.ts +0 -9
  272. package/lib/rules/namespaceKeywords.js +0 -38
  273. package/lib/rules/nativeObjectExtensions.d.ts +0 -9
  274. package/lib/rules/nativeObjectExtensions.js +0 -112
  275. package/lib/rules/negativeIndexLengthMethods.d.ts +0 -9
  276. package/lib/rules/negativeIndexLengthMethods.js +0 -178
  277. package/lib/rules/negativeZeroComparisons.d.ts +0 -9
  278. package/lib/rules/negativeZeroComparisons.js +0 -46
  279. package/lib/rules/nestedStandaloneIfs.d.ts +0 -9
  280. package/lib/rules/nestedStandaloneIfs.js +0 -103
  281. package/lib/rules/newDefinitions.d.ts +0 -9
  282. package/lib/rules/newDefinitions.js +0 -82
  283. package/lib/rules/newExpressions.d.ts +0 -9
  284. package/lib/rules/newExpressions.js +0 -36
  285. package/lib/rules/newNativeNonConstructors.d.ts +0 -9
  286. package/lib/rules/newNativeNonConstructors.js +0 -37
  287. package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -9
  288. package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -61
  289. package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -9
  290. package/lib/rules/nonNullAssertedOptionalChains.js +0 -67
  291. package/lib/rules/nonNullAssertionPlacement.d.ts +0 -9
  292. package/lib/rules/nonNullAssertionPlacement.js +0 -92
  293. package/lib/rules/nonNullableTypeAssertions.d.ts +0 -9
  294. package/lib/rules/nonNullableTypeAssertions.js +0 -76
  295. package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -9
  296. package/lib/rules/nonOctalDecimalEscapes.js +0 -46
  297. package/lib/rules/nullishCheckStyle.d.ts +0 -20
  298. package/lib/rules/nullishCheckStyle.js +0 -142
  299. package/lib/rules/nullishCoalescingOperators.d.ts +0 -21
  300. package/lib/rules/nullishCoalescingOperators.js +0 -321
  301. package/lib/rules/numberMethodRanges.d.ts +0 -9
  302. package/lib/rules/numberMethodRanges.js +0 -72
  303. package/lib/rules/numberStaticMethods.d.ts +0 -9
  304. package/lib/rules/numberStaticMethods.js +0 -51
  305. package/lib/rules/numericErasingOperations.d.ts +0 -9
  306. package/lib/rules/numericErasingOperations.js +0 -44
  307. package/lib/rules/numericLiteralParsing.d.ts +0 -9
  308. package/lib/rules/numericLiteralParsing.js +0 -55
  309. package/lib/rules/numericPrecision.d.ts +0 -9
  310. package/lib/rules/numericPrecision.js +0 -100
  311. package/lib/rules/numericSeparatorGroups.d.ts +0 -9
  312. package/lib/rules/numericSeparatorGroups.js +0 -99
  313. package/lib/rules/objectAssignSpreads.d.ts +0 -9
  314. package/lib/rules/objectAssignSpreads.js +0 -51
  315. package/lib/rules/objectCalls.d.ts +0 -9
  316. package/lib/rules/objectCalls.js +0 -36
  317. package/lib/rules/objectEntriesMethods.d.ts +0 -9
  318. package/lib/rules/objectEntriesMethods.js +0 -80
  319. package/lib/rules/objectHasOwns.d.ts +0 -9
  320. package/lib/rules/objectHasOwns.js +0 -48
  321. package/lib/rules/objectKeyDuplicates.d.ts +0 -9
  322. package/lib/rules/objectKeyDuplicates.js +0 -61
  323. package/lib/rules/objectProto.d.ts +0 -9
  324. package/lib/rules/objectProto.js +0 -48
  325. package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -9
  326. package/lib/rules/objectPrototypeBuiltIns.js +0 -52
  327. package/lib/rules/objectShorthand.d.ts +0 -9
  328. package/lib/rules/objectShorthand.js +0 -82
  329. package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -9
  330. package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -41
  331. package/lib/rules/objectTypeDefinitions.d.ts +0 -9
  332. package/lib/rules/objectTypeDefinitions.js +0 -32
  333. package/lib/rules/octalEscapes.d.ts +0 -9
  334. package/lib/rules/octalEscapes.js +0 -56
  335. package/lib/rules/octalNumbers.d.ts +0 -9
  336. package/lib/rules/octalNumbers.js +0 -53
  337. package/lib/rules/operatorAssignmentShorthand.d.ts +0 -9
  338. package/lib/rules/operatorAssignmentShorthand.js +0 -75
  339. package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -9
  340. package/lib/rules/overloadSignaturesAdjacent.js +0 -138
  341. package/lib/rules/parameterReassignments.d.ts +0 -9
  342. package/lib/rules/parameterReassignments.js +0 -43
  343. package/lib/rules/parseIntRadixes.d.ts +0 -9
  344. package/lib/rules/parseIntRadixes.js +0 -57
  345. package/lib/rules/propertyAccessNotation.d.ts +0 -12
  346. package/lib/rules/propertyAccessNotation.js +0 -117
  347. package/lib/rules/recursionOnlyArguments.d.ts +0 -9
  348. package/lib/rules/recursionOnlyArguments.js +0 -62
  349. package/lib/rules/redundantTypeConstituents.d.ts +0 -9
  350. package/lib/rules/redundantTypeConstituents.js +0 -275
  351. package/lib/rules/regexAllGlobalFlags.d.ts +0 -9
  352. package/lib/rules/regexAllGlobalFlags.js +0 -54
  353. package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -9
  354. package/lib/rules/regexAmbiguousInvalidity.js +0 -295
  355. package/lib/rules/regexCharacterClassRanges.d.ts +0 -9
  356. package/lib/rules/regexCharacterClassRanges.js +0 -135
  357. package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -9
  358. package/lib/rules/regexCharacterClassSetOperations.js +0 -79
  359. package/lib/rules/regexCharacterClasses.d.ts +0 -9
  360. package/lib/rules/regexCharacterClasses.js +0 -232
  361. package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -9
  362. package/lib/rules/regexConciseCharacterClassNegations.js +0 -50
  363. package/lib/rules/regexContradictoryAssertions.d.ts +0 -9
  364. package/lib/rules/regexContradictoryAssertions.js +0 -208
  365. package/lib/rules/regexControlCharacterEscapes.d.ts +0 -9
  366. package/lib/rules/regexControlCharacterEscapes.js +0 -128
  367. package/lib/rules/regexControlCharacters.d.ts +0 -9
  368. package/lib/rules/regexControlCharacters.js +0 -93
  369. package/lib/rules/regexDigitMatchers.d.ts +0 -9
  370. package/lib/rules/regexDigitMatchers.js +0 -178
  371. package/lib/rules/regexDollarEscapes.d.ts +0 -9
  372. package/lib/rules/regexDollarEscapes.js +0 -89
  373. package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -9
  374. package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -126
  375. package/lib/rules/regexEmptyAlternatives.d.ts +0 -9
  376. package/lib/rules/regexEmptyAlternatives.js +0 -138
  377. package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -9
  378. package/lib/rules/regexEmptyCapturingGroups.js +0 -65
  379. package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -9
  380. package/lib/rules/regexEmptyCharacterClasses.js +0 -66
  381. package/lib/rules/regexEmptyGroups.d.ts +0 -9
  382. package/lib/rules/regexEmptyGroups.js +0 -64
  383. package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -9
  384. package/lib/rules/regexEmptyLazyQuantifiers.js +0 -90
  385. package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -9
  386. package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -66
  387. package/lib/rules/regexEmptyStringLiterals.d.ts +0 -9
  388. package/lib/rules/regexEmptyStringLiterals.js +0 -64
  389. package/lib/rules/regexEscapeBackspaces.d.ts +0 -9
  390. package/lib/rules/regexEscapeBackspaces.js +0 -67
  391. package/lib/rules/regexExecutors.d.ts +0 -9
  392. package/lib/rules/regexExecutors.js +0 -56
  393. package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -9
  394. package/lib/rules/regexGraphemeStringLiterals.js +0 -49
  395. package/lib/rules/regexHexadecimalEscapes.d.ts +0 -9
  396. package/lib/rules/regexHexadecimalEscapes.js +0 -69
  397. package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -9
  398. package/lib/rules/regexIgnoreCaseFlags.js +0 -143
  399. package/lib/rules/regexInvisibleCharacters.d.ts +0 -9
  400. package/lib/rules/regexInvisibleCharacters.js +0 -88
  401. package/lib/rules/regexLetterCasing.d.ts +0 -9
  402. package/lib/rules/regexLetterCasing.js +0 -184
  403. package/lib/rules/regexLiterals.d.ts +0 -9
  404. package/lib/rules/regexLiterals.js +0 -87
  405. package/lib/rules/regexLookaroundAssertions.d.ts +0 -9
  406. package/lib/rules/regexLookaroundAssertions.js +0 -161
  407. package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -9
  408. package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -92
  409. package/lib/rules/regexMatchNotation.d.ts +0 -9
  410. package/lib/rules/regexMatchNotation.js +0 -137
  411. package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -9
  412. package/lib/rules/regexMisleadingCapturingGroups.js +0 -227
  413. package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -9
  414. package/lib/rules/regexMisleadingQuantifiers.js +0 -76
  415. package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -9
  416. package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -201
  417. package/lib/rules/regexNamedBackreferences.d.ts +0 -9
  418. package/lib/rules/regexNamedBackreferences.js +0 -46
  419. package/lib/rules/regexNamedCaptureGroups.d.ts +0 -8
  420. package/lib/rules/regexNamedCaptureGroups.js +0 -65
  421. package/lib/rules/regexNamedReplacements.d.ts +0 -9
  422. package/lib/rules/regexNamedReplacements.js +0 -91
  423. package/lib/rules/regexNonStandardFlags.d.ts +0 -9
  424. package/lib/rules/regexNonStandardFlags.js +0 -64
  425. package/lib/rules/regexObscureRanges.d.ts +0 -9
  426. package/lib/rules/regexObscureRanges.js +0 -91
  427. package/lib/rules/regexOctalEscapes.d.ts +0 -9
  428. package/lib/rules/regexOctalEscapes.js +0 -68
  429. package/lib/rules/regexPlusQuantifiers.d.ts +0 -9
  430. package/lib/rules/regexPlusQuantifiers.js +0 -66
  431. package/lib/rules/regexPredefinedAssertions.d.ts +0 -9
  432. package/lib/rules/regexPredefinedAssertions.js +0 -125
  433. package/lib/rules/regexQuestionQuantifiers.d.ts +0 -9
  434. package/lib/rules/regexQuestionQuantifiers.js +0 -102
  435. package/lib/rules/regexRepeatQuantifiers.d.ts +0 -9
  436. package/lib/rules/regexRepeatQuantifiers.js +0 -94
  437. package/lib/rules/regexResultArrayGroups.d.ts +0 -9
  438. package/lib/rules/regexResultArrayGroups.js +0 -185
  439. package/lib/rules/regexSetOperationOptimizations.d.ts +0 -9
  440. package/lib/rules/regexSetOperationOptimizations.js +0 -175
  441. package/lib/rules/regexStandaloneBackslashes.d.ts +0 -9
  442. package/lib/rules/regexStandaloneBackslashes.js +0 -57
  443. package/lib/rules/regexStarQuantifiers.d.ts +0 -9
  444. package/lib/rules/regexStarQuantifiers.js +0 -66
  445. package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -9
  446. package/lib/rules/regexSuperLinearBacktracking.js +0 -96
  447. package/lib/rules/regexSuperLinearMoves.d.ts +0 -9
  448. package/lib/rules/regexSuperLinearMoves.js +0 -140
  449. package/lib/rules/regexTestMethods.d.ts +0 -9
  450. package/lib/rules/regexTestMethods.js +0 -81
  451. package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -9
  452. package/lib/rules/regexUnicodeCodepointEscapes.js +0 -105
  453. package/lib/rules/regexUnicodeEscapes.d.ts +0 -8
  454. package/lib/rules/regexUnicodeEscapes.js +0 -95
  455. package/lib/rules/regexUnicodeFlag.d.ts +0 -8
  456. package/lib/rules/regexUnicodeFlag.js +0 -95
  457. package/lib/rules/regexUnicodeProperties.d.ts +0 -9
  458. package/lib/rules/regexUnicodeProperties.js +0 -131
  459. package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -9
  460. package/lib/rules/regexUnnecessaryAssertions.js +0 -221
  461. package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -9
  462. package/lib/rules/regexUnnecessaryBackreferences.js +0 -123
  463. package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -9
  464. package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -72
  465. package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -9
  466. package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -106
  467. package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -9
  468. package/lib/rules/regexUnnecessaryDisjunctions.js +0 -116
  469. package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -9
  470. package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -142
  471. package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -9
  472. package/lib/rules/regexUnnecessaryEscapes.js +0 -134
  473. package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -9
  474. package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -78
  475. package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -9
  476. package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -196
  477. package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -9
  478. package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -91
  479. package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -9
  480. package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -102
  481. package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -9
  482. package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -67
  483. package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -9
  484. package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -135
  485. package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -9
  486. package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -121
  487. package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -9
  488. package/lib/rules/regexUnnecessarySetOperands.js +0 -134
  489. package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -9
  490. package/lib/rules/regexUnusedCapturingGroups.js +0 -67
  491. package/lib/rules/regexUnusedFlags.d.ts +0 -9
  492. package/lib/rules/regexUnusedFlags.js +0 -114
  493. package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -9
  494. package/lib/rules/regexUnusedLazyQuantifiers.js +0 -61
  495. package/lib/rules/regexUnusedQuantifiers.d.ts +0 -9
  496. package/lib/rules/regexUnusedQuantifiers.js +0 -61
  497. package/lib/rules/regexValidity.d.ts +0 -9
  498. package/lib/rules/regexValidity.js +0 -144
  499. package/lib/rules/regexWordMatchers.d.ts +0 -9
  500. package/lib/rules/regexWordMatchers.js +0 -144
  501. package/lib/rules/regexZeroQuantifiers.d.ts +0 -9
  502. package/lib/rules/regexZeroQuantifiers.js +0 -58
  503. package/lib/rules/requireImports.d.ts +0 -9
  504. package/lib/rules/requireImports.js +0 -46
  505. package/lib/rules/responseJsonMethods.d.ts +0 -9
  506. package/lib/rules/responseJsonMethods.js +0 -49
  507. package/lib/rules/restrictedIdentifiers.d.ts +0 -12
  508. package/lib/rules/restrictedIdentifiers.js +0 -39
  509. package/lib/rules/restrictedImports.d.ts +0 -26
  510. package/lib/rules/restrictedImports.js +0 -164
  511. package/lib/rules/returnAssignments.d.ts +0 -9
  512. package/lib/rules/returnAssignments.js +0 -36
  513. package/lib/rules/returnThisTypes.d.ts +0 -9
  514. package/lib/rules/returnThisTypes.js +0 -92
  515. package/lib/rules/ruleCreator.d.ts +0 -2
  516. package/lib/rules/ruleCreator.js +0 -15
  517. package/lib/rules/selfAssignments.d.ts +0 -9
  518. package/lib/rules/selfAssignments.js +0 -27
  519. package/lib/rules/sequences.d.ts +0 -9
  520. package/lib/rules/sequences.js +0 -26
  521. package/lib/rules/setSizeLengthChecks.d.ts +0 -9
  522. package/lib/rules/setSizeLengthChecks.js +0 -46
  523. package/lib/rules/setterReturns.d.ts +0 -9
  524. package/lib/rules/setterReturns.js +0 -39
  525. package/lib/rules/shadowedRestrictedNames.d.ts +0 -9
  526. package/lib/rules/shadowedRestrictedNames.js +0 -66
  527. package/lib/rules/singleVariableDeclarations.d.ts +0 -9
  528. package/lib/rules/singleVariableDeclarations.js +0 -34
  529. package/lib/rules/sizeComparisonOperators.d.ts +0 -15
  530. package/lib/rules/sizeComparisonOperators.js +0 -146
  531. package/lib/rules/sparseArrays.d.ts +0 -9
  532. package/lib/rules/sparseArrays.js +0 -41
  533. package/lib/rules/staticMemberOnlyClasses.d.ts +0 -9
  534. package/lib/rules/staticMemberOnlyClasses.js +0 -75
  535. package/lib/rules/stringCaseMismatches.d.ts +0 -9
  536. package/lib/rules/stringCaseMismatches.js +0 -53
  537. package/lib/rules/stringCodePoints.d.ts +0 -9
  538. package/lib/rules/stringCodePoints.js +0 -48
  539. package/lib/rules/stringSliceMethods.d.ts +0 -9
  540. package/lib/rules/stringSliceMethods.js +0 -45
  541. package/lib/rules/stringStartsEndsWith.d.ts +0 -9
  542. package/lib/rules/stringStartsEndsWith.js +0 -77
  543. package/lib/rules/structuredCloneMethods.d.ts +0 -9
  544. package/lib/rules/structuredCloneMethods.js +0 -37
  545. package/lib/rules/symbolDescriptions.d.ts +0 -9
  546. package/lib/rules/symbolDescriptions.js +0 -30
  547. package/lib/rules/thisAliases.d.ts +0 -9
  548. package/lib/rules/thisAliases.js +0 -42
  549. package/lib/rules/thisBeforeSuper.d.ts +0 -9
  550. package/lib/rules/thisBeforeSuper.js +0 -84
  551. package/lib/rules/throwErrors.d.ts +0 -9
  552. package/lib/rules/throwErrors.js +0 -59
  553. package/lib/rules/topLevelAwaits.d.ts +0 -9
  554. package/lib/rules/topLevelAwaits.js +0 -47
  555. package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -9
  556. package/lib/rules/tripleSlashReferenceValidity.js +0 -52
  557. package/lib/rules/tripleSlashReferences.d.ts +0 -9
  558. package/lib/rules/tripleSlashReferences.js +0 -32
  559. package/lib/rules/tsComments.d.ts +0 -21
  560. package/lib/rules/tsComments.js +0 -128
  561. package/lib/rules/tslintComments.d.ts +0 -9
  562. package/lib/rules/tslintComments.js +0 -34
  563. package/lib/rules/typeAssertionStyles.d.ts +0 -9
  564. package/lib/rules/typeAssertionStyles.js +0 -30
  565. package/lib/rules/typeImports.d.ts +0 -19
  566. package/lib/rules/typeImports.js +0 -281
  567. package/lib/rules/typeofComparisons.d.ts +0 -9
  568. package/lib/rules/typeofComparisons.js +0 -53
  569. package/lib/rules/unassignedVariables.d.ts +0 -9
  570. package/lib/rules/unassignedVariables.js +0 -32
  571. package/lib/rules/undefinedTypeofChecks.d.ts +0 -9
  572. package/lib/rules/undefinedTypeofChecks.js +0 -39
  573. package/lib/rules/undefinedVariables.d.ts +0 -9
  574. package/lib/rules/undefinedVariables.js +0 -37
  575. package/lib/rules/unicodeBOMs.d.ts +0 -9
  576. package/lib/rules/unicodeBOMs.js +0 -37
  577. package/lib/rules/unnecessaryBinds.d.ts +0 -9
  578. package/lib/rules/unnecessaryBinds.js +0 -76
  579. package/lib/rules/unnecessaryBlocks.d.ts +0 -9
  580. package/lib/rules/unnecessaryBlocks.js +0 -58
  581. package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -9
  582. package/lib/rules/unnecessaryBooleanCasts.js +0 -56
  583. package/lib/rules/unnecessaryCatches.d.ts +0 -9
  584. package/lib/rules/unnecessaryCatches.js +0 -46
  585. package/lib/rules/unnecessaryComparisons.d.ts +0 -9
  586. package/lib/rules/unnecessaryComparisons.js +0 -291
  587. package/lib/rules/unnecessaryConcatenation.d.ts +0 -9
  588. package/lib/rules/unnecessaryConcatenation.js +0 -26
  589. package/lib/rules/unnecessaryEscapes.d.ts +0 -9
  590. package/lib/rules/unnecessaryEscapes.js +0 -132
  591. package/lib/rules/unnecessaryMathClamps.d.ts +0 -9
  592. package/lib/rules/unnecessaryMathClamps.js +0 -106
  593. package/lib/rules/unnecessaryNumericFractions.d.ts +0 -9
  594. package/lib/rules/unnecessaryNumericFractions.js +0 -48
  595. package/lib/rules/unnecessaryRenames.d.ts +0 -9
  596. package/lib/rules/unnecessaryRenames.js +0 -90
  597. package/lib/rules/unnecessaryTernaries.d.ts +0 -9
  598. package/lib/rules/unnecessaryTernaries.js +0 -86
  599. package/lib/rules/unnecessaryUseStricts.d.ts +0 -9
  600. package/lib/rules/unnecessaryUseStricts.js +0 -38
  601. package/lib/rules/unsafeNegations.d.ts +0 -9
  602. package/lib/rules/unsafeNegations.js +0 -36
  603. package/lib/rules/utils/collectAccessorPairs.d.ts +0 -11
  604. package/lib/rules/utils/collectAccessorPairs.js +0 -27
  605. package/lib/rules/utils/countCommentsInRange.d.ts +0 -2
  606. package/lib/rules/utils/countCommentsInRange.js +0 -10
  607. package/lib/rules/utils/discriminateAnyType.d.ts +0 -15
  608. package/lib/rules/utils/discriminateAnyType.js +0 -36
  609. package/lib/rules/utils/equalityOperators.d.ts +0 -8
  610. package/lib/rules/utils/equalityOperators.js +0 -34
  611. package/lib/rules/utils/forEachReturnStatement.d.ts +0 -2
  612. package/lib/rules/utils/forEachReturnStatement.js +0 -27
  613. package/lib/rules/utils/formatReportedType.d.ts +0 -3
  614. package/lib/rules/utils/formatReportedType.js +0 -7
  615. package/lib/rules/utils/getConstrainedType.d.ts +0 -2
  616. package/lib/rules/utils/getConstrainedType.js +0 -7
  617. package/lib/rules/utils/getFunctionName.d.ts +0 -2
  618. package/lib/rules/utils/getFunctionName.js +0 -14
  619. package/lib/rules/utils/getRegExpConstruction.d.ts +0 -8
  620. package/lib/rules/utils/getRegExpConstruction.js +0 -25
  621. package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -6
  622. package/lib/rules/utils/getRegExpLiteralDetails.js +0 -11
  623. package/lib/rules/utils/getThisExpression.d.ts +0 -2
  624. package/lib/rules/utils/getThisExpression.js +0 -14
  625. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -2
  626. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -11
  627. package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -2
  628. package/lib/rules/utils/isBuiltinSymbolLike.js +0 -31
  629. package/lib/rules/utils/isDirectEqualityCheck.d.ts +0 -3
  630. package/lib/rules/utils/isDirectEqualityCheck.js +0 -27
  631. package/lib/rules/utils/isErrorSubclass.d.ts +0 -3
  632. package/lib/rules/utils/isErrorSubclass.js +0 -25
  633. package/lib/rules/utils/isInBooleanContext.d.ts +0 -2
  634. package/lib/rules/utils/isInBooleanContext.js +0 -20
  635. package/lib/rules/utils/isTypeRecursive.d.ts +0 -2
  636. package/lib/rules/utils/isTypeRecursive.js +0 -6
  637. package/lib/rules/utils/isUnsafeAssignment.d.ts +0 -14
  638. package/lib/rules/utils/isUnsafeAssignment.js +0 -43
  639. package/lib/rules/utils/operators.d.ts +0 -4
  640. package/lib/rules/utils/operators.js +0 -33
  641. package/lib/rules/utils/parseRegexpAst.d.ts +0 -1
  642. package/lib/rules/utils/parseRegexpAst.js +0 -15
  643. package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -2
  644. package/lib/rules/utils/parseRegexpAstFull.js +0 -16
  645. package/lib/rules/utils/skipParentheses.d.ts +0 -2
  646. package/lib/rules/utils/skipParentheses.js +0 -8
  647. package/lib/rules/variableDeletions.d.ts +0 -9
  648. package/lib/rules/variableDeletions.js +0 -33
  649. package/lib/rules/voidOperator.d.ts +0 -9
  650. package/lib/rules/voidOperator.js +0 -32
  651. package/lib/rules/withStatements.d.ts +0 -9
  652. package/lib/rules/withStatements.js +0 -28
  653. package/lib/rules/wrapperObjects.d.ts +0 -9
  654. package/lib/rules/wrapperObjects.js +0 -34
  655. package/lib/type-utils/getSpecifierNames.d.ts +0 -2
  656. package/lib/type-utils/getSpecifierNames.js +0 -7
  657. package/lib/type-utils/isDeclaredInModuleBlock.d.ts +0 -2
  658. package/lib/type-utils/isDeclaredInModuleBlock.js +0 -12
  659. package/lib/type-utils/isFromFile.d.ts +0 -2
  660. package/lib/type-utils/isFromFile.js +0 -11
  661. package/lib/type-utils/isFromPackage.d.ts +0 -2
  662. package/lib/type-utils/isFromPackage.js +0 -13
  663. package/lib/type-utils/matchesSpecifier.d.ts +0 -3
  664. package/lib/type-utils/matchesSpecifier.js +0 -18
  665. package/lib/type-utils/schemas.d.ts +0 -14
  666. package/lib/type-utils/schemas.js +0 -23
@@ -1,58 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts, { SyntaxKind } from "typescript";
4
- import { isNodeFlagSet } from "ts-api-utils";
5
- //#region src/rules/unnecessaryBlocks.ts
6
- function isUsingVariableStatement(node) {
7
- return node.kind === SyntaxKind.VariableStatement && isNodeFlagSet(node.declarationList, ts.NodeFlags.Using);
8
- }
9
- function isValidBlock(node) {
10
- switch (node.parent.kind) {
11
- case SyntaxKind.ArrowFunction:
12
- case SyntaxKind.CaseClause:
13
- case SyntaxKind.CatchClause:
14
- case SyntaxKind.Constructor:
15
- case SyntaxKind.DefaultClause:
16
- case SyntaxKind.DoStatement:
17
- case SyntaxKind.ForInStatement:
18
- case SyntaxKind.ForOfStatement:
19
- case SyntaxKind.ForStatement:
20
- case SyntaxKind.FunctionDeclaration:
21
- case SyntaxKind.FunctionExpression:
22
- case SyntaxKind.GetAccessor:
23
- case SyntaxKind.IfStatement:
24
- case SyntaxKind.LabeledStatement:
25
- case SyntaxKind.MethodDeclaration:
26
- case SyntaxKind.ModuleBlock:
27
- case SyntaxKind.SetAccessor:
28
- case SyntaxKind.TryStatement:
29
- case SyntaxKind.WhileStatement:
30
- case SyntaxKind.WithStatement: return true;
31
- default: return node.statements.some(isUsingVariableStatement);
32
- }
33
- }
34
- var unnecessaryBlocks_default = ruleCreator.createRule(typescriptLanguage, {
35
- about: {
36
- description: "Reports standalone block statements that don't create a meaningful scope.",
37
- id: "unnecessaryBlocks",
38
- presets: ["stylistic", "stylisticStrict"]
39
- },
40
- messages: { unnecessaryBlock: {
41
- primary: "This standalone block statement is unnecessary and doesn't change any variable scopes.",
42
- secondary: ["Standalone block statements that aren't part of control flow (if/else, loops, switch) or don't create a meaningful lexical scope can be confusing and should be avoided.", "In modern JavaScript and TypeScript, blocks primarily serve to create lexical scope for `let` and `const` variables, but this is often better achieved through other means."],
43
- suggestions: ["Remove the block statement and move its contents to the parent scope.", "If you need lexical scoping, consider using an IIFE (Immediately Invoked Function Expression) or extracting to a separate function."]
44
- } },
45
- setup(context) {
46
- return { visitors: { Block: (node, { sourceFile }) => {
47
- if (!isValidBlock(node)) context.report({
48
- message: "unnecessaryBlock",
49
- range: {
50
- begin: node.getStart(sourceFile),
51
- end: node.getStart(sourceFile) + 1
52
- }
53
- });
54
- } } };
55
- }
56
- });
57
- //#endregion
58
- export { unnecessaryBlocks_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports unnecessary boolean casts.";
3
- readonly id: "unnecessaryBooleanCasts";
4
- readonly presets: readonly ["logical"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unnecessary", undefined>;
9
- export default _default;
@@ -1,56 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isInBooleanContext } from "./utils/isInBooleanContext.js";
3
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import ts from "typescript";
5
- //#region src/rules/unnecessaryBooleanCasts.ts
6
- function getNodeText(node, sourceFile) {
7
- return sourceFile.text.slice(node.getStart(sourceFile), node.getEnd());
8
- }
9
- function isBooleanCall(node) {
10
- return ts.isIdentifier(node.expression) && node.expression.text === "Boolean";
11
- }
12
- function isDoubleNegation(node) {
13
- if (node.operator !== ts.SyntaxKind.ExclamationToken) return false;
14
- const operand = node.operand;
15
- if (ts.isPrefixUnaryExpression(operand) && operand.operator === ts.SyntaxKind.ExclamationToken) return true;
16
- return false;
17
- }
18
- var unnecessaryBooleanCasts_default = ruleCreator.createRule(typescriptLanguage, {
19
- about: {
20
- description: "Reports unnecessary boolean casts.",
21
- id: "unnecessaryBooleanCasts",
22
- presets: ["logical"]
23
- },
24
- messages: { unnecessary: {
25
- primary: "Casting this value to a boolean is unnecessary in this context.",
26
- secondary: ["The value is already in a boolean context.", "Using `{{ cast }}` to cast it does not change program behavior."],
27
- suggestions: ["Remove the `{{ cast }}` call."]
28
- } },
29
- setup(context) {
30
- function reportCast(cast, outer, inner, sourceFile) {
31
- const range = getTSNodeRange(outer, sourceFile);
32
- context.report({
33
- data: { cast },
34
- fix: {
35
- range,
36
- text: getNodeText(inner, sourceFile)
37
- },
38
- message: "unnecessary",
39
- range
40
- });
41
- }
42
- return { visitors: {
43
- CallExpression(node, { sourceFile }) {
44
- if (!isBooleanCall(node) || !isInBooleanContext(node)) return;
45
- const argument = node.arguments[0];
46
- reportCast("Boolean()", node, argument, sourceFile);
47
- },
48
- PrefixUnaryExpression(node, { sourceFile }) {
49
- if (!isDoubleNegation(node) || !isInBooleanContext(node)) return;
50
- reportCast("!!", node, node.operand.operand, sourceFile);
51
- }
52
- } };
53
- }
54
- });
55
- //#endregion
56
- export { unnecessaryBooleanCasts_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports catch clauses that only rethrow the caught error without modification.";
3
- readonly id: "unnecessaryCatches";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unnecessaryCatch", undefined>;
9
- export default _default;
@@ -1,46 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- //#region src/rules/unnecessaryCatches.ts
5
- var unnecessaryCatches_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports catch clauses that only rethrow the caught error without modification.",
8
- id: "unnecessaryCatches",
9
- presets: ["logical", "logicalStrict"]
10
- },
11
- messages: { unnecessaryCatch: {
12
- primary: "This catch clause is unnecessary, as it only rethrows the exception without modification.",
13
- secondary: ["A catch clause that only rethrows the caught error adds no value and creates unnecessary code complexity.", "Removing such catch clauses allows errors to propagate naturally without the overhead of an unnecessary try-catch block."],
14
- suggestions: ["Remove the try-catch block if the catch clause only rethrows the error, or add meaningful error handling logic to the catch clause."]
15
- } },
16
- setup(context) {
17
- return { visitors: { CatchClause: (node, { sourceFile }) => {
18
- if (!node.variableDeclaration) return;
19
- const statements = node.block.statements;
20
- if (statements.length !== 1) return;
21
- const statement = statements[0];
22
- if (statement.kind !== SyntaxKind.ThrowStatement) return;
23
- const catchVariable = node.variableDeclaration.name;
24
- const thrownExpression = statement.expression;
25
- if (catchVariable.kind !== SyntaxKind.Identifier || thrownExpression.kind !== SyntaxKind.Identifier) return;
26
- if (catchVariable.text !== thrownExpression.text) return;
27
- const range = {
28
- begin: node.getStart(sourceFile),
29
- end: node.getStart(sourceFile) + 5
30
- };
31
- context.report({
32
- fix: {
33
- range: {
34
- begin: node.parent.tryBlock.getEnd(),
35
- end: node.getEnd()
36
- },
37
- text: ""
38
- },
39
- message: "unnecessaryCatch",
40
- range
41
- });
42
- } } };
43
- }
44
- });
45
- //#endregion
46
- export { unnecessaryCatches_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports comparisons that are always true, always false, or can be simplified.";
3
- readonly id: "unnecessaryComparisons";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "impossibleRange" | "ineffectiveCheck" | "redundantComparison" | "selfComparison", undefined>;
9
- export default _default;
@@ -1,291 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isComparisonOperator } from "./utils/operators.js";
3
- import { getStaticNumberValue, getTSNodeRange, hasSameTokens, typescriptLanguage, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
4
- import { SyntaxKind } from "typescript";
5
- //#region src/rules/unnecessaryComparisons.ts
6
- function checkImpossibleRange(comparisons, sourceFile) {
7
- for (const [i, a] of comparisons.entries()) for (const b of comparisons.slice(i + 1)) {
8
- if (a.numericValue === null || b.numericValue === null) continue;
9
- if (!hasSameTokens(a.variable, b.variable, sourceFile)) continue;
10
- let lowerBound;
11
- let upperBound;
12
- if (a.direction === "upper" && b.direction === "lower") {
13
- upperBound = a;
14
- lowerBound = b;
15
- } else if (a.direction === "lower" && b.direction === "upper") {
16
- upperBound = b;
17
- lowerBound = a;
18
- }
19
- if (!upperBound || !lowerBound) continue;
20
- const upper = upperBound.numericValue;
21
- const lower = lowerBound.numericValue;
22
- if (upper === null || lower === null) continue;
23
- if (upper < lower) return {
24
- lowerBound,
25
- upperBound
26
- };
27
- if (upper === lower) {
28
- if (upperBound.isStrict || lowerBound.isStrict) return {
29
- lowerBound,
30
- upperBound
31
- };
32
- }
33
- }
34
- return null;
35
- }
36
- function checkIneffectiveChecks(comparisons, sourceFile) {
37
- for (const [i, a] of comparisons.entries()) for (const b of comparisons.slice(i + 1)) {
38
- if (a.numericValue === null || b.numericValue === null) continue;
39
- if (!hasSameTokens(a.variable, b.variable, sourceFile)) continue;
40
- if (a.direction !== b.direction) continue;
41
- if (a.direction === "upper") {
42
- if (a.numericValue < b.numericValue) return {
43
- stronger: a,
44
- weaker: b
45
- };
46
- if (b.numericValue < a.numericValue) return {
47
- stronger: b,
48
- weaker: a
49
- };
50
- if (a.numericValue === b.numericValue) {
51
- if (a.isStrict && !b.isStrict) return {
52
- stronger: a,
53
- weaker: b
54
- };
55
- if (!a.isStrict && b.isStrict) return {
56
- stronger: b,
57
- weaker: a
58
- };
59
- }
60
- }
61
- if (a.direction === "lower") {
62
- if (a.numericValue > b.numericValue) return {
63
- stronger: a,
64
- weaker: b
65
- };
66
- if (b.numericValue > a.numericValue) return {
67
- stronger: b,
68
- weaker: a
69
- };
70
- if (a.numericValue === b.numericValue) {
71
- if (a.isStrict && !b.isStrict) return {
72
- stronger: a,
73
- weaker: b
74
- };
75
- if (!a.isStrict && b.isStrict) return {
76
- stronger: b,
77
- weaker: a
78
- };
79
- }
80
- }
81
- }
82
- return null;
83
- }
84
- function checkRedundantOrComparison(comparisons, sourceFile) {
85
- for (const [index, a] of comparisons.entries()) for (const b of comparisons.slice(index + 1)) {
86
- if (!hasSameTokens(a.variable, b.variable, sourceFile) || !hasSameTokens(a.node.left, b.node.left, sourceFile) || !hasSameTokens(a.node.right, b.node.right, sourceFile)) {
87
- if (!hasSameTokens(a.node.left, b.node.right, sourceFile) || !hasSameTokens(a.node.right, b.node.left, sourceFile)) continue;
88
- }
89
- const suggestion = getSimplifiedOperator(a.operatorKind, b.operatorKind);
90
- if (suggestion) return {
91
- first: a,
92
- second: b,
93
- suggestion
94
- };
95
- }
96
- return null;
97
- }
98
- function collectComparisonsFromChain(node, operatorKind) {
99
- const results = [];
100
- function traverse(expr) {
101
- const unwrapped = unwrapParenthesizedNode(expr);
102
- if (unwrapped.kind !== SyntaxKind.BinaryExpression) return;
103
- if (unwrapped.operatorToken.kind === operatorKind) {
104
- traverse(unwrapped.left);
105
- traverse(unwrapped.right);
106
- return;
107
- }
108
- const info = extractComparisonInfo(unwrapped);
109
- if (info) results.push(info);
110
- }
111
- traverse(node);
112
- return results;
113
- }
114
- function extractComparisonInfo(node) {
115
- if (!isComparisonOperator(node.operatorToken)) return null;
116
- const leftNumeric = getStaticNumberValue(node.left) ?? null;
117
- const rightNumeric = getStaticNumberValue(node.right) ?? null;
118
- if (leftNumeric !== null && rightNumeric !== null || leftNumeric === null && rightNumeric === null) {
119
- if (leftNumeric === null && rightNumeric === null) return {
120
- direction: getComparisonDirection(node.operatorToken.kind),
121
- isStrict: isStrictComparison(node.operatorToken.kind),
122
- node,
123
- numericValue: null,
124
- operatorKind: node.operatorToken.kind,
125
- variable: node.left
126
- };
127
- return null;
128
- }
129
- if (leftNumeric !== null) return {
130
- direction: flipDirection(getComparisonDirection(node.operatorToken.kind)),
131
- isStrict: isStrictComparison(node.operatorToken.kind),
132
- node,
133
- numericValue: leftNumeric,
134
- operatorKind: flipOperator(node.operatorToken.kind),
135
- variable: node.right
136
- };
137
- return {
138
- direction: getComparisonDirection(node.operatorToken.kind),
139
- isStrict: isStrictComparison(node.operatorToken.kind),
140
- node,
141
- numericValue: rightNumeric,
142
- operatorKind: node.operatorToken.kind,
143
- variable: node.left
144
- };
145
- }
146
- function flipDirection(direction) {
147
- switch (direction) {
148
- case "lower": return "upper";
149
- case "upper": return "lower";
150
- default: return direction;
151
- }
152
- }
153
- function flipOperator(operatorKind) {
154
- switch (operatorKind) {
155
- case SyntaxKind.GreaterThanEqualsToken: return SyntaxKind.LessThanEqualsToken;
156
- case SyntaxKind.GreaterThanToken: return SyntaxKind.LessThanToken;
157
- case SyntaxKind.LessThanEqualsToken: return SyntaxKind.GreaterThanEqualsToken;
158
- case SyntaxKind.LessThanToken: return SyntaxKind.GreaterThanToken;
159
- default: return operatorKind;
160
- }
161
- }
162
- function formatComparison(info, sourceFile) {
163
- return info.node.getText(sourceFile);
164
- }
165
- function getComparisonDirection(operatorKind) {
166
- switch (operatorKind) {
167
- case SyntaxKind.EqualsEqualsEqualsToken:
168
- case SyntaxKind.EqualsEqualsToken: return "equality";
169
- case SyntaxKind.ExclamationEqualsEqualsToken:
170
- case SyntaxKind.ExclamationEqualsToken: return "inequality";
171
- case SyntaxKind.GreaterThanEqualsToken:
172
- case SyntaxKind.GreaterThanToken: return "lower";
173
- case SyntaxKind.LessThanEqualsToken:
174
- case SyntaxKind.LessThanToken: return "upper";
175
- default: return "equality";
176
- }
177
- }
178
- function getSimplifiedOperator(op1, op2) {
179
- const pairs = [
180
- [
181
- SyntaxKind.EqualsEqualsEqualsToken,
182
- SyntaxKind.LessThanToken,
183
- "<="
184
- ],
185
- [
186
- SyntaxKind.EqualsEqualsToken,
187
- SyntaxKind.LessThanToken,
188
- "<="
189
- ],
190
- [
191
- SyntaxKind.EqualsEqualsEqualsToken,
192
- SyntaxKind.GreaterThanToken,
193
- ">="
194
- ],
195
- [
196
- SyntaxKind.EqualsEqualsToken,
197
- SyntaxKind.GreaterThanToken,
198
- ">="
199
- ]
200
- ];
201
- for (const [a, b, result] of pairs) if (op1 === a && op2 === b || op1 === b && op2 === a) return result;
202
- return null;
203
- }
204
- function isStrictComparison(operatorKind) {
205
- return operatorKind === SyntaxKind.LessThanToken || operatorKind === SyntaxKind.GreaterThanToken;
206
- }
207
- var unnecessaryComparisons_default = ruleCreator.createRule(typescriptLanguage, {
208
- about: {
209
- description: "Reports comparisons that are always true, always false, or can be simplified.",
210
- id: "unnecessaryComparisons",
211
- presets: ["logical", "logicalStrict"]
212
- },
213
- messages: {
214
- impossibleRange: {
215
- primary: "This range comparison can never be true.",
216
- secondary: ["The upper bound {{ upperBound }} and lower bound {{ lowerBound }} create an impossible range.", "No value can satisfy both conditions simultaneously."],
217
- suggestions: ["Check if the comparison operators or values are correct.", "This may indicate swapped values or operators."]
218
- },
219
- ineffectiveCheck: {
220
- primary: "The check `{{ weaker }}` is redundant when `{{ stronger }}` is also checked.",
221
- secondary: ["When `{{ stronger }}` is true, `{{ weaker }}` is automatically satisfied."],
222
- suggestions: ["Remove the redundant check `{{ weaker }}`."]
223
- },
224
- redundantComparison: {
225
- primary: "This comparison can be simplified to `{{ suggestion }}`.",
226
- secondary: ["The combined comparisons are equivalent to a single `{{ suggestion }}` comparison."],
227
- suggestions: ["Replace with a single `{{ suggestion }}` comparison for clearer intent."]
228
- },
229
- selfComparison: {
230
- primary: "Comparing a value to itself is unnecessary and likely indicates a logic error.",
231
- secondary: ["Self-comparisons always evaluate to the same result for a given operator.", "This pattern often indicates a copy-paste error or typo where different variables were intended."],
232
- suggestions: ["Verify that you intended to compare two different values."]
233
- }
234
- },
235
- setup(context) {
236
- return { visitors: { BinaryExpression: (node, { sourceFile }) => {
237
- if (isComparisonOperator(node.operatorToken) && hasSameTokens(node.left, node.right, sourceFile)) {
238
- context.report({
239
- message: "selfComparison",
240
- range: getTSNodeRange(node, sourceFile)
241
- });
242
- return;
243
- }
244
- if (node.operatorToken.kind === SyntaxKind.AmpersandAmpersandToken) {
245
- const comparisons = collectComparisonsFromChain(node, SyntaxKind.AmpersandAmpersandToken);
246
- if (comparisons.length >= 2) {
247
- const impossibleRange = checkImpossibleRange(comparisons, sourceFile);
248
- if (impossibleRange) {
249
- context.report({
250
- data: {
251
- lowerBound: formatComparison(impossibleRange.lowerBound, sourceFile),
252
- upperBound: formatComparison(impossibleRange.upperBound, sourceFile)
253
- },
254
- message: "impossibleRange",
255
- range: getTSNodeRange(node, sourceFile)
256
- });
257
- return;
258
- }
259
- const ineffective = checkIneffectiveChecks(comparisons, sourceFile);
260
- if (ineffective) {
261
- context.report({
262
- data: {
263
- stronger: formatComparison(ineffective.stronger, sourceFile),
264
- weaker: formatComparison(ineffective.weaker, sourceFile)
265
- },
266
- message: "ineffectiveCheck",
267
- range: getTSNodeRange(ineffective.weaker.node, sourceFile)
268
- });
269
- return;
270
- }
271
- }
272
- }
273
- if (node.operatorToken.kind === SyntaxKind.BarBarToken) {
274
- const comparisons = collectComparisonsFromChain(node, SyntaxKind.BarBarToken);
275
- if (comparisons.length >= 2) {
276
- const redundant = checkRedundantOrComparison(comparisons, sourceFile);
277
- if (redundant) {
278
- context.report({
279
- data: { suggestion: redundant.suggestion },
280
- message: "redundantComparison",
281
- range: getTSNodeRange(node, sourceFile)
282
- });
283
- return;
284
- }
285
- }
286
- }
287
- } } };
288
- }
289
- });
290
- //#endregion
291
- export { unnecessaryComparisons_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports string concatenation using the + operator when both operands are string literals.";
3
- readonly id: "unnecessaryConcatenation";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unnecessaryConcatenation", undefined>;
9
- export default _default;
@@ -1,26 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- //#region src/rules/unnecessaryConcatenation.ts
5
- var unnecessaryConcatenation_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports string concatenation using the + operator when both operands are string literals.",
8
- id: "unnecessaryConcatenation",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { unnecessaryConcatenation: {
12
- primary: "This string concatenation can be streamlined into a single string literal.",
13
- secondary: ["Concatenating string literals with the + operator is unnecessary and reduces code readability.", "String literals can be combined into a single literal, which is clearer and potentially more performant."],
14
- suggestions: ["Combine the string literals into a single string literal."]
15
- } },
16
- setup(context) {
17
- return { visitors: { BinaryExpression: (node, { sourceFile }) => {
18
- if (node.operatorToken.kind === SyntaxKind.PlusToken && node.left.kind === SyntaxKind.StringLiteral && node.right.kind === SyntaxKind.StringLiteral) context.report({
19
- message: "unnecessaryConcatenation",
20
- range: getTSNodeRange(node.operatorToken, sourceFile)
21
- });
22
- } } };
23
- }
24
- });
25
- //#endregion
26
- export { unnecessaryConcatenation_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports unnecessary escape sequences in string literals and template strings.";
3
- readonly id: "unnecessaryEscapes";
4
- readonly presets: readonly ["stylistic"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unnecessary", undefined>;
9
- export default _default;
@@ -1,132 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- //#region src/rules/unnecessaryEscapes.ts
5
- const validEscapes = /* @__PURE__ */ new Set([
6
- "0",
7
- "\"",
8
- "'",
9
- "\\",
10
- "`",
11
- "b",
12
- "f",
13
- "n",
14
- "r",
15
- "t",
16
- "v"
17
- ]);
18
- function findUnnecessaryEscapes(fullText, quoteCharacter) {
19
- const escapes = [];
20
- let startIndex = 1;
21
- let endIndex = fullText.length - 1;
22
- if (quoteCharacter === "`") {
23
- if (fullText.endsWith("${")) endIndex = fullText.length - 2;
24
- if (fullText.startsWith("}`")) startIndex = 2;
25
- }
26
- let index = startIndex;
27
- while (index < endIndex) {
28
- if (fullText[index] !== "\\") {
29
- index += 1;
30
- continue;
31
- }
32
- const nextCharacter = fullText[index + 1];
33
- if (!nextCharacter || index + 1 >= endIndex) break;
34
- if (validEscapes.has(nextCharacter)) {
35
- index += 2;
36
- continue;
37
- }
38
- switch (nextCharacter) {
39
- case "c": {
40
- const characterAfterC = fullText[index + 2];
41
- if (characterAfterC && /[a-z]/i.test(characterAfterC)) {
42
- index += 3;
43
- continue;
44
- }
45
- break;
46
- }
47
- case "u": {
48
- const afterU = fullText.slice(index + 2);
49
- if (/^[\da-f]{4}/i.test(afterU)) {
50
- index += 6;
51
- continue;
52
- }
53
- if (afterU.startsWith("{")) {
54
- const closeBrace = afterU.indexOf("}");
55
- if (closeBrace > 1 && /^[\da-f]+$/i.test(afterU.slice(1, closeBrace))) {
56
- index += 3 + closeBrace;
57
- continue;
58
- }
59
- }
60
- break;
61
- }
62
- case "x":
63
- if (/^[\da-f]{2}/i.test(fullText.slice(index + 2, index + 4))) {
64
- index += 4;
65
- continue;
66
- }
67
- break;
68
- default: if (/[1-9]/.test(nextCharacter)) {
69
- index += 2;
70
- continue;
71
- }
72
- }
73
- if (nextCharacter !== quoteCharacter) escapes.push({
74
- character: nextCharacter,
75
- end: index + 2,
76
- start: index
77
- });
78
- index += 2;
79
- }
80
- return escapes;
81
- }
82
- var unnecessaryEscapes_default = ruleCreator.createRule(typescriptLanguage, {
83
- about: {
84
- description: "Reports unnecessary escape sequences in string literals and template strings.",
85
- id: "unnecessaryEscapes",
86
- presets: ["stylistic"]
87
- },
88
- messages: { unnecessary: {
89
- primary: "Unnecessary escape for character '{{ character }}'.",
90
- secondary: ["This character does not require escaping in this context.", "Removing the backslash makes the code clearer without changing its meaning."],
91
- suggestions: ["Remove the unnecessary backslash."]
92
- } },
93
- setup(context) {
94
- function checkNode(node, { sourceFile }) {
95
- const fullText = node.getText(sourceFile);
96
- let quoteChar;
97
- if (node.kind === ts.SyntaxKind.StringLiteral) quoteChar = fullText.startsWith("\"") ? "\"" : "'";
98
- else quoteChar = "`";
99
- const escapes = findUnnecessaryEscapes(fullText, quoteChar);
100
- for (const escape of escapes) {
101
- const nodeStart = node.getStart(sourceFile);
102
- const escapeStart = nodeStart + escape.start;
103
- const escapeEnd = nodeStart + escape.end;
104
- context.report({
105
- data: { character: escape.character },
106
- fix: {
107
- range: {
108
- begin: escapeStart,
109
- end: escapeStart + 1
110
- },
111
- text: ""
112
- },
113
- message: "unnecessary",
114
- range: {
115
- begin: escapeStart,
116
- end: escapeEnd
117
- }
118
- });
119
- }
120
- }
121
- return { visitors: {
122
- NoSubstitutionTemplateLiteral: checkNode,
123
- StringLiteral: checkNode,
124
- TemplateExpression: (node, services) => {
125
- checkNode(node.head, services);
126
- for (const span of node.templateSpans) checkNode(span.literal, services);
127
- }
128
- } };
129
- }
130
- });
131
- //#endregion
132
- export { unnecessaryEscapes_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports unnecessary Math.min and Math.max calls with constant arguments or incorrect clamping patterns.";
3
- readonly id: "unnecessaryMathClamps";
4
- readonly presets: readonly ["logical"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "constantArguments" | "incorrectClampOrder", undefined>;
9
- export default _default;