@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,39 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isGlobalDeclaration, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- import { nullThrows } from "@flint.fyi/utils";
5
- //#region src/rules/asyncPromiseExecutors.ts
6
- var asyncPromiseExecutors_default = ruleCreator.createRule(typescriptLanguage, {
7
- about: {
8
- description: "Reports using async functions as Promise executor functions.",
9
- id: "asyncPromiseExecutors",
10
- presets: ["logical", "logicalStrict"]
11
- },
12
- messages: { asyncPromiseExecutor: {
13
- primary: "Async Promise executor functions are not able to properly catch thrown errors and often indicate unnecessarily complex logic.",
14
- secondary: [
15
- "The Promise executor function is called synchronously by the Promise constructor.",
16
- "If an async function is used as a Promise executor, thrown errors will not be caught by the Promise and will instead result in unhandled rejections.",
17
- "Additionally, if a Promise executor function is using `await`, there's probably no need to use the `new Promise` constructor."
18
- ],
19
- suggestions: ["Remove the `async` keyword from the executor function.", "If you need to use `await` inside the Promise, consider restructuring your code to avoid the Promise constructor."]
20
- } },
21
- setup(context) {
22
- return { visitors: { NewExpression: (node, { program, sourceFile, typeChecker }) => {
23
- if (!isGlobalDeclaration(node.expression, typeChecker, program) || !node.arguments?.length) return;
24
- const executor = nullThrows(node.arguments[0], "Expected there to be a promise executor!");
25
- if (executor.kind !== SyntaxKind.FunctionExpression && executor.kind !== SyntaxKind.ArrowFunction) return;
26
- const asyncModifier = executor.modifiers?.find((mod) => mod.kind === SyntaxKind.AsyncKeyword);
27
- if (!asyncModifier) return;
28
- context.report({
29
- message: "asyncPromiseExecutor",
30
- range: {
31
- begin: asyncModifier.getStart(sourceFile),
32
- end: asyncModifier.getEnd()
33
- }
34
- });
35
- } } };
36
- }
37
- });
38
- //#endregion
39
- export { asyncPromiseExecutors_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports unnecessary `Promise.resolve()` or `Promise.reject()` in async contexts.";
3
- readonly id: "asyncUnnecessaryPromiseWrappers";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unnecessaryReject" | "unnecessaryResolve", undefined>;
9
- export default _default;
@@ -1,50 +0,0 @@
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/asyncUnnecessaryPromiseWrappers.ts
5
- var asyncUnnecessaryPromiseWrappers_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports unnecessary `Promise.resolve()` or `Promise.reject()` in async contexts.",
8
- id: "asyncUnnecessaryPromiseWrappers",
9
- presets: ["logical", "logicalStrict"]
10
- },
11
- messages: {
12
- unnecessaryReject: {
13
- primary: "Errors can be thrown directly instead of wrapping in `Promise.reject()`.",
14
- secondary: ["In async functions, thrown errors are automatically converted to rejected promises.", "Using `Promise.reject()` is unnecessary and less idiomatic."],
15
- suggestions: ["Throw the error directly instead of using `Promise.reject()`."]
16
- },
17
- unnecessaryResolve: {
18
- primary: "Return values in async functions are already wrapped in a `Promise`.",
19
- secondary: ["Wrapping a value in `Promise.resolve()` is unnecessary in async functions.", "This adds extra code without changing the behavior."],
20
- suggestions: ["Return the value directly instead of wrapping it."]
21
- }
22
- },
23
- setup(context) {
24
- return { visitors: { ArrowFunction: (node, { sourceFile }) => {
25
- if (!isAsyncFunction(node) || !ts$1.isCallExpression(node.body)) return;
26
- const message = getMessageForBody(node.body);
27
- if (!message) return;
28
- context.report({
29
- message,
30
- range: {
31
- begin: node.body.getStart(sourceFile),
32
- end: node.body.getEnd()
33
- }
34
- });
35
- } } };
36
- }
37
- });
38
- function getMessageForBody(node) {
39
- if (!ts$1.isPropertyAccessExpression(node.expression) || !ts$1.isIdentifier(node.expression.expression) || node.expression.expression.text !== "Promise") return;
40
- switch (node.expression.name.text) {
41
- case "reject": return "unnecessaryReject";
42
- case "resolve": return "unnecessaryResolve";
43
- default: return;
44
- }
45
- }
46
- function isAsyncFunction(node) {
47
- return node.modifiers?.some((modifier) => modifier.kind === ts$1.SyntaxKind.AsyncKeyword);
48
- }
49
- //#endregion
50
- export { asyncUnnecessaryPromiseWrappers_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Prefer using .at() for accessing elements at negative indices.";
3
- readonly id: "atAccesses";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferAt", undefined>;
9
- export default _default;
@@ -1,50 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, hasSameTokens, typescriptLanguage, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- //#region src/rules/atAccesses.ts
6
- var atAccesses_default = ruleCreator.createRule(typescriptLanguage, {
7
- about: {
8
- description: "Prefer using .at() for accessing elements at negative indices.",
9
- id: "atAccesses",
10
- presets: ["stylistic", "stylisticStrict"]
11
- },
12
- messages: { preferAt: {
13
- primary: "Prefer using .at() with a negative index instead of calculating length minus an offset.",
14
- secondary: ["The .at() method provides a cleaner way to access elements from the end of an array or string.", "Using .at(-1) is more readable than array[array.length - 1]."],
15
- suggestions: ["Use .at() with a negative index to access elements from the end."]
16
- } },
17
- setup(context) {
18
- return { visitors: { ElementAccessExpression: (node, { sourceFile }) => {
19
- if (!isLeftHandSide(node) && isLengthMinusAccess(node, sourceFile)) context.report({
20
- message: "preferAt",
21
- range: getTSNodeRange(node, sourceFile)
22
- });
23
- } } };
24
- }
25
- });
26
- function isLeftHandSide(node) {
27
- switch (node.parent.kind) {
28
- case ts$1.SyntaxKind.ArrayLiteralExpression: return ts$1.isBinaryExpression(node.parent.parent) && tsutils.isAssignmentKind(node.parent.parent.operatorToken.kind) && node.parent.parent.left === node.parent;
29
- case ts$1.SyntaxKind.BinaryExpression: return tsutils.isAssignmentKind(node.parent.operatorToken.kind) && node.parent.left === node;
30
- case ts$1.SyntaxKind.DeleteExpression: return true;
31
- case ts$1.SyntaxKind.PostfixUnaryExpression:
32
- case ts$1.SyntaxKind.PrefixUnaryExpression: return node.parent.operand === node;
33
- case ts$1.SyntaxKind.PropertyAssignment:
34
- case ts$1.SyntaxKind.ShorthandPropertyAssignment: return node.parent.parent.parent.kind === ts$1.SyntaxKind.BinaryExpression && tsutils.isAssignmentKind(node.parent.parent.parent.operatorToken.kind) && node.parent.parent.parent.left === node.parent.parent;
35
- }
36
- return false;
37
- }
38
- function isLengthMinusAccess(node, sourceFile) {
39
- const argument = unwrapParenthesizedNode(node.argumentExpression);
40
- if (!ts$1.isBinaryExpression(argument) || argument.operatorToken.kind !== ts$1.SyntaxKind.MinusToken) return false;
41
- const left = unwrapParenthesizedNode(argument.left);
42
- if (!ts$1.isPropertyAccessExpression(left) || left.name.text !== "length" || !hasSameTokens(left.expression, node.expression, sourceFile)) return false;
43
- const right = unwrapParenthesizedNode(argument.right);
44
- if (!ts$1.isNumericLiteral(right)) return false;
45
- const offset = Number(right.text);
46
- if (!Number.isInteger(offset) || offset <= 0) return false;
47
- return true;
48
- }
49
- //#endregion
50
- export { atAccesses_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports functions that wrap native coercion functions like `String`, `Number`, `BigInt`, `Boolean`, or `Symbol`.";
3
- readonly id: "builtinCoercions";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "useBuiltin", undefined>;
9
- export default _default;
@@ -1,115 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/builtinCoercions.ts
5
- const nativeCoercionFunctions = /* @__PURE__ */ new Set([
6
- "BigInt",
7
- "Boolean",
8
- "Number",
9
- "String",
10
- "Symbol"
11
- ]);
12
- const arrayMethodsWithBooleanCallback = /* @__PURE__ */ new Set([
13
- "every",
14
- "filter",
15
- "find",
16
- "findIndex",
17
- "findLast",
18
- "findLastIndex",
19
- "some"
20
- ]);
21
- var builtinCoercions_default = ruleCreator.createRule(typescriptLanguage, {
22
- about: {
23
- description: "Reports functions that wrap native coercion functions like `String`, `Number`, `BigInt`, `Boolean`, or `Symbol`.",
24
- id: "builtinCoercions",
25
- presets: ["stylistic", "stylisticStrict"]
26
- },
27
- messages: { useBuiltin: {
28
- primary: "Prefer using `{{ coercionFunction }}` directly instead of wrapping it in a function.",
29
- secondary: ["Wrapping a native coercion function in another function adds unnecessary indirection.", "Using the built-in function directly is more concise and expresses intent more clearly."],
30
- suggestions: ["Replace this function with `{{ coercionFunction }}`."]
31
- } },
32
- setup(context) {
33
- function checkFunction(node, { sourceFile }) {
34
- const problem = getFunctionProblem(node, sourceFile);
35
- if (problem) context.report(problem);
36
- }
37
- return { visitors: {
38
- ArrowFunction: checkFunction,
39
- FunctionExpression: checkFunction
40
- } };
41
- }
42
- });
43
- function blockReturnsIdentifier(block, parameterName) {
44
- if (block.statements.length !== 1) return false;
45
- const statement = block.statements[0];
46
- if (!statement || !ts$1.isReturnStatement(statement) || !statement.expression) return false;
47
- return expressionMatchesName(statement.expression, parameterName);
48
- }
49
- function expressionMatchesName(expression, name) {
50
- const unwrapped = ts$1.isParenthesizedExpression(expression) ? expression.expression : expression;
51
- return ts$1.isIdentifier(unwrapped) && unwrapped.text === name;
52
- }
53
- function getCoercionCallName(expression, parameterName) {
54
- if (!ts$1.isCallExpression(expression) || !ts$1.isIdentifier(expression.expression)) return;
55
- const calleeName = expression.expression.text;
56
- if (!nativeCoercionFunctions.has(calleeName) || expression.arguments.length !== 1) return;
57
- const argument = expression.arguments[0];
58
- if (!argument || !ts$1.isIdentifier(argument) || argument.text !== parameterName) return;
59
- return calleeName;
60
- }
61
- function getCoercionWrapperProblem(node, parameterName, sourceFile) {
62
- if (node.parameters.length !== 1) return;
63
- const coercionFunction = getWrappedCoercionFunction(node, parameterName);
64
- if (!coercionFunction) return;
65
- const range = getTSNodeRange(node, sourceFile);
66
- return {
67
- data: { coercionFunction },
68
- fix: {
69
- range,
70
- text: coercionFunction
71
- },
72
- message: "useBuiltin",
73
- range
74
- };
75
- }
76
- function getFunctionProblem(node, sourceFile) {
77
- const soleParameterText = getSoleParameterText(node);
78
- if (!soleParameterText) return;
79
- return getIdentityCallbackProblem(node, soleParameterText, sourceFile) ?? getCoercionWrapperProblem(node, soleParameterText, sourceFile);
80
- }
81
- function getIdentityCallbackProblem(node, soleParameterText, sourceFile) {
82
- if (!isIdentityFunction(node, soleParameterText) || !isArrayMethodCallback(node)) return;
83
- const range = getTSNodeRange(node, sourceFile);
84
- return {
85
- data: { coercionFunction: "Boolean" },
86
- fix: {
87
- range,
88
- text: "Boolean"
89
- },
90
- message: "useBuiltin",
91
- range
92
- };
93
- }
94
- function getSoleParameterText(node) {
95
- if (node.parameters.length !== 1) return;
96
- const parameter = node.parameters[0];
97
- if (!parameter || !ts$1.isIdentifier(parameter.name)) return;
98
- return parameter.name.text;
99
- }
100
- function getWrappedCoercionFunction(node, parameterName) {
101
- if (node.kind === ts$1.SyntaxKind.ArrowFunction && !ts$1.isBlock(node.body)) return getCoercionCallName(node.body, parameterName);
102
- if (!ts$1.isBlock(node.body) || node.body.statements.length !== 1) return;
103
- const statement = node.body.statements[0];
104
- if (!statement || !ts$1.isReturnStatement(statement) || !statement.expression) return;
105
- return getCoercionCallName(statement.expression, parameterName);
106
- }
107
- function isArrayMethodCallback(node) {
108
- return ts$1.isCallExpression(node.parent) && node.parent.arguments[0] === node && ts$1.isPropertyAccessExpression(node.parent.expression) && arrayMethodsWithBooleanCallback.has(node.parent.expression.name.text);
109
- }
110
- function isIdentityFunction(node, soleParameterText) {
111
- if (node.kind === ts$1.SyntaxKind.ArrowFunction && !ts$1.isBlock(node.body)) return expressionMatchesName(node.body, soleParameterText);
112
- return ts$1.isBlock(node.body) && blockReturnsIdentifier(node.body, soleParameterText);
113
- }
114
- //#endregion
115
- export { builtinCoercions_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Enforces using new for constructors that require it, and disallows new for primitive coercion functions.";
3
- readonly id: "builtinConstructorNews";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "disallowedNew" | "missingNew", undefined>;
9
- export default _default;
@@ -1,87 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/builtinConstructorNews.ts
5
- const requiresNew = /* @__PURE__ */ new Set([
6
- "Array",
7
- "ArrayBuffer",
8
- "BigInt64Array",
9
- "BigUint64Array",
10
- "DataView",
11
- "Date",
12
- "Error",
13
- "FinalizationRegistry",
14
- "Float16Array",
15
- "Float32Array",
16
- "Float64Array",
17
- "Function",
18
- "Int8Array",
19
- "Int16Array",
20
- "Int32Array",
21
- "Map",
22
- "Object",
23
- "Promise",
24
- "Proxy",
25
- "RegExp",
26
- "Set",
27
- "SharedArrayBuffer",
28
- "Uint8Array",
29
- "Uint8ClampedArray",
30
- "Uint16Array",
31
- "Uint32Array",
32
- "WeakMap",
33
- "WeakRef",
34
- "WeakSet"
35
- ]);
36
- const disallowsNew = /* @__PURE__ */ new Set([
37
- "BigInt",
38
- "Boolean",
39
- "Number",
40
- "String",
41
- "Symbol"
42
- ]);
43
- var builtinConstructorNews_default = ruleCreator.createRule(typescriptLanguage, {
44
- about: {
45
- description: "Enforces using new for constructors that require it, and disallows new for primitive coercion functions.",
46
- id: "builtinConstructorNews",
47
- presets: ["stylistic", "stylisticStrict"]
48
- },
49
- messages: {
50
- disallowedNew: {
51
- primary: "Use {{ name }}() without new to coerce values to primitives.",
52
- secondary: ["Using `new` with `{{ name }}` creates an object wrapper around the primitive value.", "Object wrappers can cause unexpected behavior in comparisons and type checks."],
53
- suggestions: ["Remove `new` to use {{ name }} as a coercion function."]
54
- },
55
- missingNew: {
56
- primary: "Use new {{ name }}() to create instances.",
57
- secondary: ["Built-in constructors like `{{ name }}` should be called with `new` for consistency.", "While some constructors work without `new`, using `new` makes the intent clearer."],
58
- suggestions: ["Add `new` before {{ name }}()."]
59
- }
60
- },
61
- setup(context) {
62
- function checkNode(node, namesToReport, message, { program, sourceFile, typeChecker }) {
63
- if (!ts$1.isIdentifier(node.expression)) return;
64
- const name = node.expression.text;
65
- if (!namesToReport.has(name)) return;
66
- if (!isGlobalDeclarationOfName(node.expression, name, typeChecker, program)) return;
67
- context.report({
68
- data: { name },
69
- message,
70
- range: {
71
- begin: node.getStart(sourceFile),
72
- end: node.expression.getEnd()
73
- }
74
- });
75
- }
76
- return { visitors: {
77
- CallExpression: (node, services) => {
78
- checkNode(node, requiresNew, "missingNew", services);
79
- },
80
- NewExpression: (node, services) => {
81
- checkNode(node, disallowsNew, "disallowedNew", services);
82
- }
83
- } };
84
- }
85
- });
86
- //#endregion
87
- export { builtinConstructorNews_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports lexical declarations in case clauses without wrapping them in blocks.";
3
- readonly id: "caseDeclarations";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unexpectedLexicalDeclaration", undefined>;
9
- export default _default;
@@ -1,38 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts, { SyntaxKind } from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- //#region src/rules/caseDeclarations.ts
6
- var caseDeclarations_default = ruleCreator.createRule(typescriptLanguage, {
7
- about: {
8
- description: "Reports lexical declarations in case clauses without wrapping them in blocks.",
9
- id: "caseDeclarations",
10
- presets: ["javascript"]
11
- },
12
- messages: { unexpectedLexicalDeclaration: {
13
- primary: "Variables declared in case clauses without braces leak into the surrounding scope.",
14
- secondary: ["Lexical declarations (let, const, function, class) are scoped to the entire switch statement, not just the case clause where they are declared.", "This can lead to unexpected behavior when the same variable name is used in multiple case clauses, as they will conflict in the same scope."],
15
- suggestions: ["Wrap the case clause contents in curly braces {} to create a block scope."]
16
- } },
17
- setup(context) {
18
- function getLexicalDeclaration(statements, sourceFile) {
19
- for (const statement of statements) {
20
- if (statement.kind === SyntaxKind.VariableStatement && tsutils.isNodeFlagSet(statement.declarationList, ts.NodeFlags.Let | ts.NodeFlags.Const)) return statement.declarationList.getChildAt(0, sourceFile);
21
- if (statement.kind === SyntaxKind.ClassDeclaration || statement.kind === SyntaxKind.FunctionDeclaration) return statement.getChildAt(0, sourceFile);
22
- }
23
- }
24
- function checkClause(node, { sourceFile }) {
25
- const declarationNode = getLexicalDeclaration(node.statements, sourceFile);
26
- if (declarationNode) context.report({
27
- message: "unexpectedLexicalDeclaration",
28
- range: getTSNodeRange(declarationNode, sourceFile)
29
- });
30
- }
31
- return { visitors: {
32
- CaseClause: checkClause,
33
- DefaultClause: checkClause
34
- } };
35
- }
36
- });
37
- //#endregion
38
- export { caseDeclarations_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports switch statements with duplicate case clause test expressions.";
3
- readonly id: "caseDuplicates";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "duplicateCase", undefined>;
9
- export default _default;
@@ -1,34 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { hasSameTokens, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- //#region src/rules/caseDuplicates.ts
5
- var caseDuplicates_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports switch statements with duplicate case clause test expressions.",
8
- id: "caseDuplicates",
9
- presets: ["logical", "logicalStrict"]
10
- },
11
- messages: { duplicateCase: {
12
- primary: "This case duplicates a previous case, so it will never be reached.",
13
- secondary: ["Having duplicate case clauses in a switch statement is a logic error.", "The second case clause will never be reached because the first matching case will always execute first."],
14
- suggestions: ["Remove the duplicate case clause or modify its test expression to be unique."]
15
- } },
16
- setup(context) {
17
- return { visitors: { SwitchStatement: (node, { sourceFile }) => {
18
- const seenCases = [];
19
- for (const clause of node.caseBlock.clauses) {
20
- if (clause.kind !== SyntaxKind.CaseClause) continue;
21
- if (seenCases.some((seenCase) => hasSameTokens(seenCase, clause.expression, sourceFile))) context.report({
22
- message: "duplicateCase",
23
- range: {
24
- begin: clause.getStart(sourceFile),
25
- end: clause.expression.getEnd()
26
- }
27
- });
28
- else seenCases.push(clause.expression);
29
- }
30
- } } };
31
- }
32
- });
33
- //#endregion
34
- export { caseDuplicates_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports switch case clauses that fall through unexpectedly.";
3
- readonly id: "caseFallthroughs";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unexpectedFallthrough", undefined>;
9
- export default _default;
@@ -1,74 +0,0 @@
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/caseFallthroughs.ts
5
- const fallthroughCommentPattern = /falls?\s*through/i;
6
- function endsWithTerminatingStatement(statements) {
7
- return !!statements.length && isTerminatingStatement(statements.at(-1));
8
- }
9
- function hasFallthroughComment(clause, nextClause, sourceFile) {
10
- const sourceText = sourceFile.getFullText();
11
- const commentRanges = ts$1.getLeadingCommentRanges(sourceText, nextClause.getFullStart());
12
- if (commentRanges) for (const range of commentRanges) {
13
- const comment = sourceText.slice(range.pos, range.end);
14
- if (fallthroughCommentPattern.test(comment)) return true;
15
- }
16
- const trailingRanges = ts$1.getTrailingCommentRanges(sourceText, clause.getEnd());
17
- if (trailingRanges) for (const range of trailingRanges) {
18
- const comment = sourceText.slice(range.pos, range.end);
19
- if (fallthroughCommentPattern.test(comment)) return true;
20
- }
21
- return false;
22
- }
23
- function isTerminatingStatement(node) {
24
- switch (node.kind) {
25
- case ts$1.SyntaxKind.Block: return endsWithTerminatingStatement(node.statements);
26
- case ts$1.SyntaxKind.BreakStatement:
27
- case ts$1.SyntaxKind.ContinueStatement:
28
- case ts$1.SyntaxKind.ReturnStatement:
29
- case ts$1.SyntaxKind.ThrowStatement: return true;
30
- case ts$1.SyntaxKind.IfStatement: return !!node.elseStatement && isTerminatingStatement(node.thenStatement) && isTerminatingStatement(node.elseStatement);
31
- case ts$1.SyntaxKind.SwitchStatement: return node.caseBlock.clauses.some(ts$1.isDefaultClause) && node.caseBlock.clauses.every((clause) => !clause.statements.length || endsWithTerminatingStatement(clause.statements));
32
- case ts$1.SyntaxKind.TryStatement:
33
- if (node.finallyBlock) return endsWithTerminatingStatement(node.finallyBlock.statements);
34
- if (!node.catchClause) return endsWithTerminatingStatement(node.tryBlock.statements);
35
- return endsWithTerminatingStatement(node.tryBlock.statements) && endsWithTerminatingStatement(node.catchClause.block.statements);
36
- default: return false;
37
- }
38
- }
39
- var caseFallthroughs_default = ruleCreator.createRule(typescriptLanguage, {
40
- about: {
41
- description: "Reports switch case clauses that fall through unexpectedly.",
42
- id: "caseFallthroughs",
43
- presets: ["logical", "logicalStrict"]
44
- },
45
- messages: { unexpectedFallthrough: {
46
- primary: "This case falls through to the next case without a break, return, or throw statement.",
47
- secondary: ["Fallthrough in switch statements is often unintentional and can lead to bugs.", "If fallthrough is intentional, add a comment containing 'falls through' to indicate this."],
48
- suggestions: [
49
- "Add a `break` statement at the end of this case.",
50
- "Add a `return` or `throw` statement if appropriate.",
51
- "If fallthrough is intentional, add a `// falls through` comment."
52
- ]
53
- } },
54
- setup(context) {
55
- return { visitors: { SwitchStatement: (node, { sourceFile }) => {
56
- for (let i = 0; i < node.caseBlock.clauses.length - 1; i++) {
57
- const clause = node.caseBlock.clauses[i];
58
- if (!clause) continue;
59
- const nextClause = node.caseBlock.clauses[i + 1];
60
- if (!clause.statements.length || endsWithTerminatingStatement(clause.statements) || hasFallthroughComment(clause, nextClause, sourceFile)) continue;
61
- const caseKeyword = ts$1.isCaseClause(clause) ? "case" : "default";
62
- context.report({
63
- message: "unexpectedFallthrough",
64
- range: {
65
- begin: clause.getStart(sourceFile),
66
- end: clause.getStart(sourceFile) + caseKeyword.length
67
- }
68
- });
69
- }
70
- } } };
71
- }
72
- });
73
- //#endregion
74
- export { caseFallthroughs_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports `Promise` catch callback parameters that are not typed as unknown.";
3
- readonly id: "catchCallbackTypes";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferUnknown", undefined>;
9
- export default _default;
@@ -1,65 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
3
- import { declarationIncludesGlobal, typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import { TypeFlags, isFunctionLike, isInterfaceDeclaration, isPropertyAccessExpression } from "typescript";
5
- import * as tsutils from "ts-api-utils";
6
- //#region src/rules/catchCallbackTypes.ts
7
- var catchCallbackTypes_default = ruleCreator.createRule(typescriptLanguage, {
8
- about: {
9
- description: "Reports `Promise` catch callback parameters that are not typed as unknown.",
10
- id: "catchCallbackTypes",
11
- presets: ["logical", "logicalStrict"]
12
- },
13
- messages: { preferUnknown: {
14
- primary: "The catch callback parameter should be typed as the safer `unknown` instead of `any`.",
15
- secondary: [
16
- "TypeScript's `useUnknownInCatchVariables` option only affects synchronous catch clauses, not Promise callbacks.",
17
- "Promise rejection values can be anything, so using `unknown` forces proper type narrowing before use.",
18
- "Using `any` in catch callbacks undermines type safety and can lead to runtime errors."
19
- ],
20
- suggestions: ["Add an explicit `: unknown` type annotation to the callback parameter."]
21
- } },
22
- setup(context) {
23
- function isGlobalPromiseType(type, program) {
24
- const symbol = type.getSymbol();
25
- if (symbol?.getName() !== "Promise") return false;
26
- const declarations = symbol.getDeclarations();
27
- if (!declarations) return false;
28
- return declarations.some((declaration) => isInterfaceDeclaration(declaration) && declaration.name.text === "Promise" && declarationIncludesGlobal(declaration, program));
29
- }
30
- function isCatchOrThenCallback(node, typeChecker, program) {
31
- if (!isPropertyAccessExpression(node.expression)) return;
32
- const methodName = node.expression.name.text;
33
- if (methodName !== "catch" && methodName !== "then") return;
34
- if (!isGlobalPromiseType(getConstrainedTypeAtLocation(node.expression.expression, typeChecker), program)) return;
35
- return methodName === "catch" ? "catch" : "then";
36
- }
37
- function checkCallbackParameter(callback, sourceFile, typeChecker) {
38
- if (!isFunctionLike(callback) || !callback.parameters.length) return;
39
- const firstParameter = callback.parameters[0];
40
- if (firstParameter.type) {
41
- const paramType = typeChecker.getTypeFromTypeNode(firstParameter.type);
42
- if (tsutils.isTypeFlagSet(paramType, TypeFlags.Unknown) || !tsutils.isTypeFlagSet(paramType, TypeFlags.Any)) return;
43
- }
44
- context.report({
45
- message: "preferUnknown",
46
- range: {
47
- begin: firstParameter.name.getStart(sourceFile),
48
- end: firstParameter.type ? firstParameter.type.getEnd() : firstParameter.name.getEnd()
49
- }
50
- });
51
- }
52
- return { visitors: { CallExpression: (node, { program, sourceFile, typeChecker }) => {
53
- switch (isCatchOrThenCallback(node, typeChecker, program)) {
54
- case "catch":
55
- if (node.arguments.length >= 1) checkCallbackParameter(node.arguments[0], sourceFile, typeChecker);
56
- break;
57
- case "then":
58
- if (node.arguments.length >= 2) checkCallbackParameter(node.arguments[1], sourceFile, typeChecker);
59
- break;
60
- }
61
- } } };
62
- }
63
- });
64
- //#endregion
65
- export { catchCallbackTypes_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Enforces a consistent naming convention for catch clause error variables.";
3
- readonly id: "caughtVariableNames";
4
- readonly presets: readonly ["stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferErrorName", undefined>;
9
- export default _default;