@flint.fyi/ts 0.21.0 → 0.22.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 +22467 -0
  3. package/package.json +8 -7
  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,71 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- //#region src/rules/arrayCallbackReturns.ts
6
- const arrayMethodsRequiringReturn = /* @__PURE__ */ new Set([
7
- "every",
8
- "filter",
9
- "find",
10
- "findIndex",
11
- "findLast",
12
- "findLastIndex",
13
- "flatMap",
14
- "map",
15
- "reduce",
16
- "reduceRight",
17
- "some",
18
- "sort",
19
- "toSorted"
20
- ]);
21
- var arrayCallbackReturns_default = ruleCreator.createRule(typescriptLanguage, {
22
- about: {
23
- description: "Reports missing return statements in callbacks of array methods.",
24
- id: "arrayCallbackReturns",
25
- presets: ["javascript"]
26
- },
27
- messages: { missingReturn: {
28
- primary: "Array method `{{ method }}` callback expects a return value.",
29
- secondary: ["Array methods like `map`, `filter`, `find`, and `reduce` rely on return values from their callbacks.", "A missing return statement is often a mistake that causes the array method to produce unexpected results."],
30
- suggestions: ["Add a return statement to the callback function.", "If you don't need the return value, consider using `forEach` instead."]
31
- } },
32
- setup(context) {
33
- return { visitors: { CallExpression: (node, { sourceFile }) => {
34
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
35
- const methodName = node.expression.name.text;
36
- if (!arrayMethodsRequiringReturn.has(methodName)) return;
37
- const callback = node.arguments[0];
38
- if (!callback) return;
39
- const body = getCallbackBody(callback);
40
- if (!body) return;
41
- if (!hasReturnWithValue(body)) context.report({
42
- data: { method: methodName },
43
- message: "missingReturn",
44
- range: {
45
- begin: callback.getStart(sourceFile),
46
- end: callback.getEnd()
47
- }
48
- });
49
- } } };
50
- }
51
- });
52
- function getCallbackBody(node) {
53
- if (ts$1.isArrowFunction(node)) return ts$1.isBlock(node.body) ? node.body : void 0;
54
- if (ts$1.isFunctionExpression(node)) return node.body;
55
- }
56
- function hasReturnWithValue(block) {
57
- let hasReturn = false;
58
- function visit(node) {
59
- if (hasReturn) return;
60
- if (ts$1.isReturnStatement(node) && node.expression) {
61
- hasReturn = true;
62
- return;
63
- }
64
- if (tsutils.isFunctionScopeBoundary(node)) return;
65
- ts$1.forEachChild(node, visit);
66
- }
67
- ts$1.forEachChild(block, visit);
68
- return hasReturn;
69
- }
70
- //#endregion
71
- export { arrayCallbackReturns_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using the `Array` constructor to create arrays instead of array literal syntax.";
3
- readonly id: "arrayConstructors";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferLiteral", undefined>;
9
- export default _default;
@@ -1,45 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/arrayConstructors.ts
5
- var arrayConstructors_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports using the `Array` constructor to create arrays instead of array literal syntax.",
8
- id: "arrayConstructors",
9
- presets: ["logical", "logicalStrict"]
10
- },
11
- messages: { preferLiteral: {
12
- primary: "Prefer array literal syntax over the `Array` constructor.",
13
- secondary: ["The `Array` constructor has confusing behavior with a single numeric argument, creating a sparse array instead of an array containing that number.", "Array literal syntax is clearer and avoids potential pitfalls."],
14
- suggestions: ["Use array literal syntax like `[]` or `[1, 2, 3]`."]
15
- } },
16
- setup(context) {
17
- function checkNode(node, { program, sourceFile, typeChecker }) {
18
- if (!ts$1.isIdentifier(node.expression) || node.expression.text !== "Array" || shouldAllowCallOrNew(node) || !isGlobalDeclarationOfName(node.expression, "Array", typeChecker, program)) return;
19
- const argumentsText = node.arguments?.map((arg) => arg.getText(sourceFile)).join(", ");
20
- const range = getTSNodeRange(node, sourceFile);
21
- context.report({
22
- fix: {
23
- range,
24
- text: `[${argumentsText}]`
25
- },
26
- message: "preferLiteral",
27
- range
28
- });
29
- }
30
- return { visitors: {
31
- CallExpression: checkNode,
32
- NewExpression: checkNode
33
- } };
34
- }
35
- });
36
- function getSoleArgument(node) {
37
- return node.arguments?.length === 1 ? node.arguments[0] : void 0;
38
- }
39
- function shouldAllowCallOrNew(node) {
40
- if (node.typeArguments && !!node.typeArguments.length) return true;
41
- const soleArgument = getSoleArgument(node);
42
- return !!soleArgument && ts$1.isNumericLiteral(soleArgument);
43
- }
44
- //#endregion
45
- export { arrayConstructors_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using `.length` or `Infinity` as the `deleteCount` or `skipCount` argument of `Array#splice()` or `Array#toSpliced()`.";
3
- readonly id: "arrayDeleteUnnecessaryCounts";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unnecessaryCount", undefined>;
9
- export default _default;
@@ -1,52 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
3
- import { getTSNodeRange, hasSameTokens, typescriptLanguage, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
4
- import * as ts$1 from "typescript";
5
- //#region src/rules/arrayDeleteUnnecessaryCounts.ts
6
- function isUnnecessaryCountArgument(argumentRoot, calleeObject, sourceFile) {
7
- const argument = unwrapParenthesizedNode(argumentRoot);
8
- switch (argument.kind) {
9
- case ts$1.SyntaxKind.Identifier: return argument.text === "Infinity" ? "`Infinity`" : void 0;
10
- case ts$1.SyntaxKind.PropertyAccessExpression:
11
- if (ts$1.isIdentifier(argument.expression) && argument.expression.text === "Number" && ts$1.isIdentifier(argument.name) && argument.name.text === "POSITIVE_INFINITY") return "`Number.POSITIVE_INFINITY`";
12
- if (ts$1.isIdentifier(argument.name) && argument.name.text === "length" && hasSameTokens(argument.expression, calleeObject, sourceFile)) return `\`${ts$1.isIdentifier(calleeObject) ? calleeObject.text : "…"}${argument.questionDotToken ? "?." : "."}length\``;
13
- }
14
- }
15
- var arrayDeleteUnnecessaryCounts_default = ruleCreator.createRule(typescriptLanguage, {
16
- about: {
17
- description: "Reports using `.length` or `Infinity` as the `deleteCount` or `skipCount` argument of `Array#splice()` or `Array#toSpliced()`.",
18
- id: "arrayDeleteUnnecessaryCounts",
19
- presets: ["stylistic", "stylisticStrict"]
20
- },
21
- messages: { unnecessaryCount: {
22
- primary: "Passing {{ description }} as the {{ argumentName }} argument is unnecessary.",
23
- secondary: ["When calling `splice` or `toSpliced`, omitting the second argument will delete or skip all elements after the start index.", "Using `.length` or `Infinity` is redundant and makes the code less clear."],
24
- suggestions: ["Omit the second argument to achieve the same result."]
25
- } },
26
- setup(context) {
27
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
28
- if (!ts$1.isPropertyAccessExpression(node.expression) || !ts$1.isIdentifier(node.expression.name)) return;
29
- const methodName = node.expression.name.text;
30
- if (methodName !== "splice" && methodName !== "toSpliced") return;
31
- if (!typeChecker.isArrayType(getConstrainedTypeAtLocation(node.expression.expression, typeChecker))) return;
32
- if (node.arguments.length !== 2) return;
33
- const firstArg = node.arguments[0];
34
- if (ts$1.isSpreadElement(firstArg)) return;
35
- const secondArg = node.arguments[1];
36
- if (ts$1.isSpreadElement(secondArg)) return;
37
- const description = isUnnecessaryCountArgument(secondArg, node.expression.expression, sourceFile);
38
- if (!description) return;
39
- const argumentName = methodName === "splice" ? "`deleteCount`" : "`skipCount`";
40
- context.report({
41
- data: {
42
- argumentName,
43
- description
44
- },
45
- message: "unnecessaryCount",
46
- range: getTSNodeRange(secondArg, sourceFile)
47
- });
48
- } } };
49
- }
50
- });
51
- //#endregion
52
- export { arrayDeleteUnnecessaryCounts_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using the `delete` operator on array values.";
3
- readonly id: "arrayElementDeletions";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noArrayDelete", undefined>;
9
- export default _default;
@@ -1,41 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isArrayOrTupleTypeAtLocation } from "./utils/isArrayOrTupleTypeAtLocation.js";
3
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import * as ts$1 from "typescript";
5
- //#region src/rules/arrayElementDeletions.ts
6
- function buildSpliceReplacement(node, elementAccess, sourceFile) {
7
- const children = elementAccess.getChildren(sourceFile);
8
- const openBracket = children.find((child) => child.kind === ts$1.SyntaxKind.OpenBracketToken);
9
- const closeBracket = children.find((child) => child.kind === ts$1.SyntaxKind.CloseBracketToken);
10
- return `${sourceFile.text.slice(node.getStart(sourceFile) + 6, openBracket?.getStart(sourceFile) ?? elementAccess.expression.getEnd())}.splice(${sourceFile.text.slice(openBracket?.getEnd() ?? elementAccess.argumentExpression.getStart(sourceFile), closeBracket?.getStart(sourceFile) ?? elementAccess.argumentExpression.getEnd())}, 1)`;
11
- }
12
- var arrayElementDeletions_default = ruleCreator.createRule(typescriptLanguage, {
13
- about: {
14
- description: "Reports using the `delete` operator on array values.",
15
- id: "arrayElementDeletions",
16
- presets: ["logical", "logicalStrict"]
17
- },
18
- messages: { noArrayDelete: {
19
- primary: "Avoid using the `delete` operator on arrays.",
20
- secondary: ["Using `delete` on an array element removes it but leaves an empty slot, which can lead to unexpected behavior.", "The array's `length` property is not affected, and the element becomes `undefined` with a hole in the array."],
21
- suggestions: ["Use `Array#splice()` to remove elements."]
22
- } },
23
- setup(context) {
24
- return { visitors: { DeleteExpression: (node, { sourceFile, typeChecker }) => {
25
- if (!ts$1.isElementAccessExpression(node.expression) || !isArrayOrTupleTypeAtLocation(node.expression.expression, typeChecker)) return;
26
- const range = getTSNodeRange(node, sourceFile);
27
- const spliceText = buildSpliceReplacement(node, node.expression, sourceFile);
28
- context.report({
29
- message: "noArrayDelete",
30
- range,
31
- suggestions: [{
32
- id: "useSplice",
33
- range,
34
- text: spliceText
35
- }]
36
- });
37
- } } };
38
- }
39
- });
40
- //#endregion
41
- export { arrayElementDeletions_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports array methods with callbacks that will never be invoked on arrays with empty slots.";
3
- readonly id: "arrayEmptyCallbackSlots";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "neverInvoked", undefined>;
9
- export default _default;
@@ -1,38 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getStaticNumberValue, getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/arrayEmptyCallbackSlots.ts
5
- function hasCallbackArgument(callExpression) {
6
- if (!callExpression.arguments.length) return false;
7
- const firstArgument = callExpression.arguments[0];
8
- return ts$1.isArrowFunction(firstArgument) || ts$1.isFunctionExpression(firstArgument) || ts$1.isIdentifier(firstArgument) && firstArgument.text !== "undefined";
9
- }
10
- var arrayEmptyCallbackSlots_default = ruleCreator.createRule(typescriptLanguage, {
11
- about: {
12
- description: "Reports array methods with callbacks that will never be invoked on arrays with empty slots.",
13
- id: "arrayEmptyCallbackSlots",
14
- presets: ["logical", "logicalStrict"]
15
- },
16
- messages: { neverInvoked: {
17
- primary: "This callback will not be invoked.",
18
- secondary: ["When the Array constructor is called with a single number argument, it creates an array with empty slots (not actual undefined values).", "Callback methods like `map`, `filter`, `forEach`, etc. skip empty slots, so the callback will never run."],
19
- suggestions: ["Use `Array.from({ length: n }, callback)` instead.", "Use `new Array(n).fill(undefined).map(callback)` to fill slots first."]
20
- } },
21
- setup(context) {
22
- return { visitors: { CallExpression: (node, { program, sourceFile, typeChecker }) => {
23
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
24
- const objectExpression = node.expression.expression;
25
- if (!ts$1.isNewExpression(objectExpression) || !ts$1.isIdentifier(objectExpression.expression) || !isGlobalDeclarationOfName(objectExpression.expression, "Array", typeChecker, program)) return;
26
- const args = objectExpression.arguments;
27
- if (args?.length !== 1) return;
28
- const firstArgument = args[0];
29
- if (getStaticNumberValue(firstArgument) === void 0 || !hasCallbackArgument(node)) return;
30
- context.report({
31
- message: "neverInvoked",
32
- range: getTSNodeRange(node.expression.name, sourceFile)
33
- });
34
- } } };
35
- }
36
- });
37
- //#endregion
38
- export { arrayEmptyCallbackSlots_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports inconsistent styles for checking element existence using index methods.";
3
- readonly id: "arrayExistenceChecksConsistency";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferEqualsMinusOne" | "preferNotEqualsMinusOne", undefined>;
9
- export default _default;
@@ -1,84 +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/arrayExistenceChecksConsistency.ts
5
- const indexMethods = /* @__PURE__ */ new Set([
6
- "findIndex",
7
- "findLastIndex",
8
- "indexOf",
9
- "lastIndexOf"
10
- ]);
11
- var arrayExistenceChecksConsistency_default = ruleCreator.createRule(typescriptLanguage, {
12
- about: {
13
- description: "Reports inconsistent styles for checking element existence using index methods.",
14
- id: "arrayExistenceChecksConsistency",
15
- presets: ["stylistic", "stylisticStrict"]
16
- },
17
- messages: {
18
- preferEqualsMinusOne: {
19
- primary: "Prefer `{{ replacement }}` over `{{ original }}` to check for non-existence.",
20
- secondary: ["Using `=== -1` is clearer and more consistent than `< 0`.", "Index methods return -1 when an element is not found, so checking against -1 is more explicit."],
21
- suggestions: ["Replace with `{{ replacement }}`."]
22
- },
23
- preferNotEqualsMinusOne: {
24
- primary: "Prefer `{{ replacement }}` over `{{ original }}` to check for existence.",
25
- secondary: ["Using `!== -1` is clearer and more consistent than `>= 0` or `> -1`.", "Index methods return -1 when an element is not found, so checking against -1 is more explicit."],
26
- suggestions: ["Replace with `{{ replacement }}`."]
27
- }
28
- },
29
- setup(context) {
30
- return { visitors: { BinaryExpression: (node, { sourceFile }) => {
31
- if (!isComparisonOperator(node.operatorToken.kind) || !isIndexMethodCall(node.left)) return;
32
- const numberValue = getNumericLiteralValue(node.right);
33
- if (numberValue === void 0) return;
34
- const issue = detectIssue(node.operatorToken.kind, numberValue);
35
- if (!issue) return;
36
- const indexCallText = node.left.getText(sourceFile);
37
- const original = `${indexCallText} ${getOperatorText(node.operatorToken.kind)} ${numberValue}`;
38
- const replacement = `${indexCallText} ${issue[1]} -1`;
39
- context.report({
40
- data: {
41
- original,
42
- replacement
43
- },
44
- fix: {
45
- range: getTSNodeRange(node, sourceFile),
46
- text: replacement
47
- },
48
- message: issue[0],
49
- range: {
50
- begin: node.operatorToken.getStart(sourceFile),
51
- end: node.right.getEnd()
52
- }
53
- });
54
- } } };
55
- }
56
- });
57
- function detectIssue(operator, value) {
58
- switch (operator) {
59
- case ts$1.SyntaxKind.GreaterThanEqualsToken: return value === 0 && ["preferNotEqualsMinusOne", "!=="];
60
- case ts$1.SyntaxKind.GreaterThanToken: return value === -1 && ["preferNotEqualsMinusOne", "!=="];
61
- case ts$1.SyntaxKind.LessThanToken: return value === 0 && ["preferEqualsMinusOne", "==="];
62
- }
63
- }
64
- function getNumericLiteralValue(node) {
65
- if (ts$1.isNumericLiteral(node)) return Number(node.text);
66
- if (ts$1.isPrefixUnaryExpression(node) && node.operator === ts$1.SyntaxKind.MinusToken && ts$1.isNumericLiteral(node.operand)) return -Number(node.operand.text);
67
- }
68
- function getOperatorText(kind) {
69
- switch (kind) {
70
- case ts$1.SyntaxKind.GreaterThanEqualsToken: return ">=";
71
- case ts$1.SyntaxKind.GreaterThanToken: return ">";
72
- case ts$1.SyntaxKind.LessThanEqualsToken: return "<=";
73
- case ts$1.SyntaxKind.LessThanToken: return "<";
74
- default: return "";
75
- }
76
- }
77
- function isComparisonOperator(kind) {
78
- return kind === ts$1.SyntaxKind.LessThanToken || kind === ts$1.SyntaxKind.LessThanEqualsToken || kind === ts$1.SyntaxKind.GreaterThanToken || kind === ts$1.SyntaxKind.GreaterThanEqualsToken;
79
- }
80
- function isIndexMethodCall(node) {
81
- return ts$1.isCallExpression(node) && ts$1.isPropertyAccessExpression(node.expression) && indexMethods.has(node.expression.name.text) && node;
82
- }
83
- //#endregion
84
- export { arrayExistenceChecksConsistency_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using `.filter()` when only the first or last matching element is needed.";
3
- readonly id: "arrayFilteredFinds";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferFind" | "preferFindLast", undefined>;
9
- export default _default;
@@ -1,72 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isArrayOrTupleTypeAtLocation } from "./utils/isArrayOrTupleTypeAtLocation.js";
3
- import { getStaticNumberValue, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import * as ts$1 from "typescript";
5
- //#region src/rules/arrayFilteredFinds.ts
6
- function isArrayFilterCall(node, typeChecker) {
7
- return ts$1.isCallExpression(node) && ts$1.isPropertyAccessExpression(node.expression) && node.expression.name.text === "filter" && !!node.arguments.length && node.arguments.length <= 2 && isArrayOrTupleTypeAtLocation(node.expression.expression, typeChecker);
8
- }
9
- var arrayFilteredFinds_default = ruleCreator.createRule(typescriptLanguage, {
10
- about: {
11
- description: "Reports using `.filter()` when only the first or last matching element is needed.",
12
- id: "arrayFilteredFinds",
13
- presets: ["logical", "logicalStrict"]
14
- },
15
- messages: {
16
- preferFind: {
17
- primary: "Prefer `.find()` over `.filter()[0]`.",
18
- secondary: ["Using `.filter()` to get only the first matching element creates an unnecessary intermediate array.", "The `.find()` method is more efficient as it stops iteration once a match is found."],
19
- suggestions: ["Replace `.filter(callback)[0]` with `.find(callback)`."]
20
- },
21
- preferFindLast: {
22
- primary: "Prefer `.findLast()` over `.filter().pop()` or `.filter().at(-1)`.",
23
- secondary: ["Using `.filter()` to get only the last matching element creates an unnecessary intermediate array.", "The `.findLast()` method is more efficient as it iterates from the end and stops once a match is found."],
24
- suggestions: ["Replace `.filter(callback).pop()` or `.filter(callback).at(-1)` with `.findLast(callback)`."]
25
- }
26
- },
27
- setup(context) {
28
- return { visitors: {
29
- CallExpression: (node, { sourceFile, typeChecker }) => {
30
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
31
- const methodName = node.expression.name.text;
32
- const objectExpression = node.expression.expression;
33
- switch (methodName) {
34
- case "pop":
35
- if (!node.arguments.length && isArrayFilterCall(objectExpression, typeChecker)) context.report({
36
- message: "preferFindLast",
37
- range: getTSNodeRange(node, sourceFile)
38
- });
39
- return;
40
- case "shift":
41
- if (!node.arguments.length && isArrayFilterCall(objectExpression, typeChecker)) context.report({
42
- message: "preferFind",
43
- range: getTSNodeRange(node, sourceFile)
44
- });
45
- return;
46
- case "at": if (node.arguments.length === 1) {
47
- const arg = node.arguments[0];
48
- if (getStaticNumberValue(arg) === 0 && isArrayFilterCall(objectExpression, typeChecker)) {
49
- context.report({
50
- message: "preferFind",
51
- range: getTSNodeRange(node, sourceFile)
52
- });
53
- return;
54
- }
55
- if (getStaticNumberValue(arg) === -1 && isArrayFilterCall(objectExpression, typeChecker)) context.report({
56
- message: "preferFindLast",
57
- range: getTSNodeRange(node, sourceFile)
58
- });
59
- }
60
- }
61
- },
62
- ElementAccessExpression: (node, { sourceFile, typeChecker }) => {
63
- if (getStaticNumberValue(node.argumentExpression) === 0 && isArrayFilterCall(node.expression, typeChecker)) context.report({
64
- message: "preferFind",
65
- range: getTSNodeRange(node, sourceFile)
66
- });
67
- }
68
- } };
69
- }
70
- });
71
- //#endregion
72
- export { arrayFilteredFinds_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using `.filter()[0]` instead of `.find()` when looking for a single element.";
3
- readonly id: "arrayFinds";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferFind", undefined>;
9
- export default _default;
@@ -1,39 +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/arrayFinds.ts
5
- var arrayFinds_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports using `.filter()[0]` instead of `.find()` when looking for a single element.",
8
- id: "arrayFinds",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { preferFind: {
12
- primary: "Prefer `.find()` over `.filter()[0]` when looking for a single element.",
13
- secondary: ["Using `.find()` is more efficient because it stops searching after finding the first match.", "`.filter()[0]` unnecessarily iterates through the entire array."],
14
- suggestions: ["Replace `.filter(...)[0]` with `.find(...)`."]
15
- } },
16
- setup(context) {
17
- return { visitors: { ElementAccessExpression: (node, { sourceFile, typeChecker }) => {
18
- if (!ts$1.isNumericLiteral(node.argumentExpression) || node.argumentExpression.text !== "0" || !isFilterCall(node.expression, typeChecker)) return;
19
- const arrayText = node.expression.expression.expression.getText(sourceFile);
20
- const filterArgumentsText = node.expression.arguments.map((arg) => arg.getText(sourceFile)).join(", ");
21
- context.report({
22
- fix: {
23
- range: getTSNodeRange(node, sourceFile),
24
- text: `${arrayText}.find(${filterArgumentsText})`
25
- },
26
- message: "preferFind",
27
- range: {
28
- begin: node.expression.expression.name.getStart(sourceFile),
29
- end: node.getEnd()
30
- }
31
- });
32
- } } };
33
- }
34
- });
35
- function isFilterCall(node, typeChecker) {
36
- return ts$1.isCallExpression(node) && ts$1.isPropertyAccessExpression(node.expression) && !!node.arguments.length && node.expression.name.text === "filter" && typeChecker.isArrayType(typeChecker.getTypeAtLocation(node.expression.expression));
37
- }
38
- //#endregion
39
- export { arrayFinds_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using `.map().flat()` when `.flatMap()` can be used.";
3
- readonly id: "arrayFlatMapMethods";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferFlatMap", undefined>;
9
- export default _default;
@@ -1,45 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isArrayOrTupleTypeAtLocation } from "./utils/isArrayOrTupleTypeAtLocation.js";
3
- import { getStaticNumberValue, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import * as ts$1 from "typescript";
5
- //#region src/rules/arrayFlatMapMethods.ts
6
- function isArrayMapCall(node, typeChecker) {
7
- return ts$1.isCallExpression(node) && ts$1.isPropertyAccessExpression(node.expression) && node.expression.name.text === "map" && node.arguments.length >= 1 && isArrayOrTupleTypeAtLocation(node.expression.expression, typeChecker);
8
- }
9
- function isFlatCallWithDepthOne(node) {
10
- switch (node.arguments.length) {
11
- case 0: return true;
12
- case 1: {
13
- const firstArgument = node.arguments[0];
14
- return getStaticNumberValue(firstArgument) === 1;
15
- }
16
- default: return false;
17
- }
18
- }
19
- var arrayFlatMapMethods_default = ruleCreator.createRule(typescriptLanguage, {
20
- about: {
21
- description: "Reports using `.map().flat()` when `.flatMap()` can be used.",
22
- id: "arrayFlatMapMethods",
23
- presets: ["stylistic", "stylisticStrict"]
24
- },
25
- messages: { preferFlatMap: {
26
- primary: "Prefer `.flatMap()` over `.map().flat()`.",
27
- secondary: ["`.flatMap()` combines mapping and flattening in a single step, which is more concise and efficient.", "Using `.map().flat()` creates an intermediate array that is immediately discarded."],
28
- suggestions: ["Replace `.map(callback).flat()` with `.flatMap(callback)`."]
29
- } },
30
- setup(context) {
31
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
32
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
33
- if (node.expression.name.text !== "flat") return;
34
- if (!isFlatCallWithDepthOne(node)) return;
35
- const objectExpression = node.expression.expression;
36
- if (!isArrayMapCall(objectExpression, typeChecker)) return;
37
- context.report({
38
- message: "preferFlatMap",
39
- range: getTSNodeRange(node, sourceFile)
40
- });
41
- } } };
42
- }
43
- });
44
- //#endregion
45
- export { arrayFlatMapMethods_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports legacy techniques to flatten arrays instead of using `.flat()`.";
3
- readonly id: "arrayFlatMethods";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferFlat", undefined>;
9
- export default _default;