@flint.fyi/ts 0.20.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} +360 -365
  2. package/dist/index.mjs +22467 -0
  3. package/package.json +10 -10
  4. package/lib/index.d.ts +0 -2
  5. package/lib/index.js +0 -2
  6. package/lib/plugin.js +0 -621
  7. package/lib/rules/accessorPairGroups.d.ts +0 -10
  8. package/lib/rules/accessorPairGroups.js +0 -48
  9. package/lib/rules/accessorPairTypes.d.ts +0 -10
  10. package/lib/rules/accessorPairTypes.js +0 -72
  11. package/lib/rules/accessorThisRecursion.d.ts +0 -10
  12. package/lib/rules/accessorThisRecursion.js +0 -65
  13. package/lib/rules/anyArguments.d.ts +0 -10
  14. package/lib/rules/anyArguments.js +0 -234
  15. package/lib/rules/anyAssignments.d.ts +0 -10
  16. package/lib/rules/anyAssignments.js +0 -265
  17. package/lib/rules/anyCalls.d.ts +0 -10
  18. package/lib/rules/anyCalls.js +0 -68
  19. package/lib/rules/anyMemberAccess.d.ts +0 -10
  20. package/lib/rules/anyMemberAccess.js +0 -85
  21. package/lib/rules/anyReturns.d.ts +0 -10
  22. package/lib/rules/anyReturns.js +0 -102
  23. package/lib/rules/arguments.d.ts +0 -10
  24. package/lib/rules/arguments.js +0 -38
  25. package/lib/rules/arrayCallbackReturns.d.ts +0 -10
  26. package/lib/rules/arrayCallbackReturns.js +0 -73
  27. package/lib/rules/arrayConstructors.d.ts +0 -10
  28. package/lib/rules/arrayConstructors.js +0 -47
  29. package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -10
  30. package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -54
  31. package/lib/rules/arrayElementDeletions.d.ts +0 -10
  32. package/lib/rules/arrayElementDeletions.js +0 -43
  33. package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -10
  34. package/lib/rules/arrayEmptyCallbackSlots.js +0 -45
  35. package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -10
  36. package/lib/rules/arrayExistenceChecksConsistency.js +0 -86
  37. package/lib/rules/arrayFilteredFinds.d.ts +0 -10
  38. package/lib/rules/arrayFilteredFinds.js +0 -80
  39. package/lib/rules/arrayFinds.d.ts +0 -10
  40. package/lib/rules/arrayFinds.js +0 -41
  41. package/lib/rules/arrayFlatMapMethods.d.ts +0 -10
  42. package/lib/rules/arrayFlatMapMethods.js +0 -47
  43. package/lib/rules/arrayFlatMethods.d.ts +0 -10
  44. package/lib/rules/arrayFlatMethods.js +0 -83
  45. package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -10
  46. package/lib/rules/arrayFlatUnnecessaryDepths.js +0 -33
  47. package/lib/rules/arrayIncludes.d.ts +0 -10
  48. package/lib/rules/arrayIncludes.js +0 -59
  49. package/lib/rules/arrayIncludesMethods.d.ts +0 -10
  50. package/lib/rules/arrayIncludesMethods.js +0 -37
  51. package/lib/rules/arrayIndexOfMethods.d.ts +0 -10
  52. package/lib/rules/arrayIndexOfMethods.js +0 -51
  53. package/lib/rules/arrayLoops.d.ts +0 -10
  54. package/lib/rules/arrayLoops.js +0 -36
  55. package/lib/rules/arrayMapIdentities.d.ts +0 -10
  56. package/lib/rules/arrayMapIdentities.js +0 -74
  57. package/lib/rules/arrayMutableReverses.d.ts +0 -10
  58. package/lib/rules/arrayMutableReverses.js +0 -39
  59. package/lib/rules/arrayMutableSorts.d.ts +0 -10
  60. package/lib/rules/arrayMutableSorts.js +0 -72
  61. package/lib/rules/arrayReduceTypeArguments.d.ts +0 -10
  62. package/lib/rules/arrayReduceTypeArguments.js +0 -64
  63. package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -10
  64. package/lib/rules/arraySliceUnnecessaryEnd.js +0 -51
  65. package/lib/rules/arraySomeMethods.d.ts +0 -10
  66. package/lib/rules/arraySomeMethods.js +0 -77
  67. package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -10
  68. package/lib/rules/arrayTernarySpreadingConsistency.js +0 -74
  69. package/lib/rules/arrayTypes.d.ts +0 -17
  70. package/lib/rules/arrayTypes.js +0 -111
  71. package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -10
  72. package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -97
  73. package/lib/rules/asConstAssertions.d.ts +0 -10
  74. package/lib/rules/asConstAssertions.js +0 -57
  75. package/lib/rules/assignmentOperatorShorthands.d.ts +0 -10
  76. package/lib/rules/assignmentOperatorShorthands.js +0 -47
  77. package/lib/rules/asyncFunctionAwaits.d.ts +0 -10
  78. package/lib/rules/asyncFunctionAwaits.js +0 -55
  79. package/lib/rules/asyncPromiseExecutors.d.ts +0 -10
  80. package/lib/rules/asyncPromiseExecutors.js +0 -41
  81. package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -10
  82. package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -52
  83. package/lib/rules/atAccesses.d.ts +0 -10
  84. package/lib/rules/atAccesses.js +0 -52
  85. package/lib/rules/builtinCoercions.d.ts +0 -10
  86. package/lib/rules/builtinCoercions.js +0 -117
  87. package/lib/rules/builtinConstructorNews.d.ts +0 -10
  88. package/lib/rules/builtinConstructorNews.js +0 -89
  89. package/lib/rules/caseDeclarations.d.ts +0 -10
  90. package/lib/rules/caseDeclarations.js +0 -40
  91. package/lib/rules/caseDuplicates.d.ts +0 -10
  92. package/lib/rules/caseDuplicates.js +0 -36
  93. package/lib/rules/caseFallthroughs.d.ts +0 -10
  94. package/lib/rules/caseFallthroughs.js +0 -76
  95. package/lib/rules/catchCallbackTypes.d.ts +0 -10
  96. package/lib/rules/catchCallbackTypes.js +0 -67
  97. package/lib/rules/caughtVariableNames.d.ts +0 -10
  98. package/lib/rules/caughtVariableNames.js +0 -40
  99. package/lib/rules/chainedAssignments.d.ts +0 -10
  100. package/lib/rules/chainedAssignments.js +0 -33
  101. package/lib/rules/charAtComparisons.d.ts +0 -10
  102. package/lib/rules/charAtComparisons.js +0 -58
  103. package/lib/rules/classAssignments.d.ts +0 -10
  104. package/lib/rules/classAssignments.js +0 -29
  105. package/lib/rules/classFieldDeclarations.d.ts +0 -10
  106. package/lib/rules/classFieldDeclarations.js +0 -40
  107. package/lib/rules/classLiteralProperties.d.ts +0 -10
  108. package/lib/rules/classLiteralProperties.js +0 -45
  109. package/lib/rules/classMemberDuplicates.d.ts +0 -10
  110. package/lib/rules/classMemberDuplicates.js +0 -71
  111. package/lib/rules/classMethodsThis.d.ts +0 -14
  112. package/lib/rules/classMethodsThis.js +0 -124
  113. package/lib/rules/combinedPushes.d.ts +0 -10
  114. package/lib/rules/combinedPushes.js +0 -56
  115. package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -10
  116. package/lib/rules/consecutiveNonNullAssertions.js +0 -39
  117. package/lib/rules/consoleCalls.d.ts +0 -9
  118. package/lib/rules/consoleCalls.js +0 -28
  119. package/lib/rules/constantAssignments.d.ts +0 -10
  120. package/lib/rules/constantAssignments.js +0 -41
  121. package/lib/rules/constructorGenericCalls.d.ts +0 -16
  122. package/lib/rules/constructorGenericCalls.js +0 -138
  123. package/lib/rules/constructorReturns.d.ts +0 -10
  124. package/lib/rules/constructorReturns.js +0 -41
  125. package/lib/rules/constructorSupers.d.ts +0 -10
  126. package/lib/rules/constructorSupers.js +0 -77
  127. package/lib/rules/dateConstructorClones.d.ts +0 -10
  128. package/lib/rules/dateConstructorClones.js +0 -37
  129. package/lib/rules/dateNowTimestamps.d.ts +0 -10
  130. package/lib/rules/dateNowTimestamps.js +0 -57
  131. package/lib/rules/debuggerStatements.d.ts +0 -10
  132. package/lib/rules/debuggerStatements.js +0 -33
  133. package/lib/rules/defaultCaseLast.d.ts +0 -10
  134. package/lib/rules/defaultCaseLast.js +0 -36
  135. package/lib/rules/defaultParameterLast.d.ts +0 -10
  136. package/lib/rules/defaultParameterLast.js +0 -42
  137. package/lib/rules/deprecated.d.ts +0 -10
  138. package/lib/rules/deprecated.js +0 -243
  139. package/lib/rules/destructuringConsistency.d.ts +0 -10
  140. package/lib/rules/destructuringConsistency.js +0 -112
  141. package/lib/rules/duplicateArguments.d.ts +0 -10
  142. package/lib/rules/duplicateArguments.js +0 -45
  143. package/lib/rules/dynamicDeletes.d.ts +0 -10
  144. package/lib/rules/dynamicDeletes.js +0 -37
  145. package/lib/rules/elseIfDuplicates.d.ts +0 -10
  146. package/lib/rules/elseIfDuplicates.js +0 -38
  147. package/lib/rules/elseReturns.d.ts +0 -10
  148. package/lib/rules/elseReturns.js +0 -67
  149. package/lib/rules/emptyBlocks.d.ts +0 -10
  150. package/lib/rules/emptyBlocks.js +0 -56
  151. package/lib/rules/emptyDestructures.d.ts +0 -10
  152. package/lib/rules/emptyDestructures.js +0 -34
  153. package/lib/rules/emptyEnums.d.ts +0 -10
  154. package/lib/rules/emptyEnums.js +0 -30
  155. package/lib/rules/emptyExports.d.ts +0 -10
  156. package/lib/rules/emptyExports.js +0 -60
  157. package/lib/rules/emptyFiles.d.ts +0 -10
  158. package/lib/rules/emptyFiles.js +0 -44
  159. package/lib/rules/emptyFunctions.d.ts +0 -10
  160. package/lib/rules/emptyFunctions.js +0 -61
  161. package/lib/rules/emptyModuleAttributes.d.ts +0 -10
  162. package/lib/rules/emptyModuleAttributes.js +0 -35
  163. package/lib/rules/emptyObjectTypes.d.ts +0 -10
  164. package/lib/rules/emptyObjectTypes.js +0 -47
  165. package/lib/rules/emptyStaticBlocks.d.ts +0 -10
  166. package/lib/rules/emptyStaticBlocks.js +0 -42
  167. package/lib/rules/emptyTypeParameterLists.d.ts +0 -10
  168. package/lib/rules/emptyTypeParameterLists.js +0 -31
  169. package/lib/rules/enumInitializers.d.ts +0 -10
  170. package/lib/rules/enumInitializers.js +0 -54
  171. package/lib/rules/enumMemberLiterals.d.ts +0 -10
  172. package/lib/rules/enumMemberLiterals.js +0 -39
  173. package/lib/rules/enumValueConsistency.d.ts +0 -10
  174. package/lib/rules/enumValueConsistency.js +0 -56
  175. package/lib/rules/enumValueDuplicates.d.ts +0 -10
  176. package/lib/rules/enumValueDuplicates.js +0 -60
  177. package/lib/rules/equalityOperatorNegations.d.ts +0 -9
  178. package/lib/rules/equalityOperatorNegations.js +0 -60
  179. package/lib/rules/equalityOperators.d.ts +0 -10
  180. package/lib/rules/equalityOperators.js +0 -44
  181. package/lib/rules/errorMessages.d.ts +0 -10
  182. package/lib/rules/errorMessages.js +0 -60
  183. package/lib/rules/errorSubclassProperties.d.ts +0 -10
  184. package/lib/rules/errorSubclassProperties.js +0 -144
  185. package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -10
  186. package/lib/rules/errorUnnecessaryCaptureStackTraces.js +0 -55
  187. package/lib/rules/escapeSequenceCasing.d.ts +0 -10
  188. package/lib/rules/escapeSequenceCasing.js +0 -75
  189. package/lib/rules/evals.d.ts +0 -10
  190. package/lib/rules/evals.js +0 -31
  191. package/lib/rules/evolvingVariableTypes.d.ts +0 -10
  192. package/lib/rules/evolvingVariableTypes.js +0 -33
  193. package/lib/rules/exceptionAssignments.d.ts +0 -10
  194. package/lib/rules/exceptionAssignments.js +0 -39
  195. package/lib/rules/explicitAnys.d.ts +0 -10
  196. package/lib/rules/explicitAnys.js +0 -55
  197. package/lib/rules/exponentiationOperators.d.ts +0 -10
  198. package/lib/rules/exponentiationOperators.js +0 -34
  199. package/lib/rules/exportFromImports.d.ts +0 -10
  200. package/lib/rules/exportFromImports.js +0 -119
  201. package/lib/rules/exportMutables.d.ts +0 -10
  202. package/lib/rules/exportMutables.js +0 -33
  203. package/lib/rules/exportUniqueNames.d.ts +0 -10
  204. package/lib/rules/exportUniqueNames.js +0 -65
  205. package/lib/rules/extraneousClasses.d.ts +0 -16
  206. package/lib/rules/extraneousClasses.js +0 -111
  207. package/lib/rules/fetchMethodBodies.d.ts +0 -10
  208. package/lib/rules/fetchMethodBodies.js +0 -72
  209. package/lib/rules/finallyStatementSafety.d.ts +0 -10
  210. package/lib/rules/finallyStatementSafety.js +0 -47
  211. package/lib/rules/forDirections.d.ts +0 -10
  212. package/lib/rules/forDirections.js +0 -75
  213. package/lib/rules/forInArrays.d.ts +0 -10
  214. package/lib/rules/forInArrays.js +0 -46
  215. package/lib/rules/forInGuards.d.ts +0 -9
  216. package/lib/rules/forInGuards.js +0 -44
  217. package/lib/rules/functionApplySpreads.d.ts +0 -10
  218. package/lib/rules/functionApplySpreads.js +0 -63
  219. package/lib/rules/functionAssignments.d.ts +0 -10
  220. package/lib/rules/functionAssignments.js +0 -29
  221. package/lib/rules/functionCurryingRedundancy.d.ts +0 -10
  222. package/lib/rules/functionCurryingRedundancy.js +0 -53
  223. package/lib/rules/functionDeclarationStyles.d.ts +0 -16
  224. package/lib/rules/functionDeclarationStyles.js +0 -67
  225. package/lib/rules/functionNameMatches.d.ts +0 -10
  226. package/lib/rules/functionNameMatches.js +0 -74
  227. package/lib/rules/functionNewCalls.d.ts +0 -10
  228. package/lib/rules/functionNewCalls.js +0 -42
  229. package/lib/rules/generatorFunctionYields.d.ts +0 -10
  230. package/lib/rules/generatorFunctionYields.js +0 -50
  231. package/lib/rules/getterReturns.d.ts +0 -10
  232. package/lib/rules/getterReturns.js +0 -65
  233. package/lib/rules/globalAssignments.d.ts +0 -10
  234. package/lib/rules/globalAssignments.js +0 -47
  235. package/lib/rules/globalObjectCalls.d.ts +0 -10
  236. package/lib/rules/globalObjectCalls.js +0 -42
  237. package/lib/rules/globalThisAliases.d.ts +0 -10
  238. package/lib/rules/globalThisAliases.js +0 -47
  239. package/lib/rules/impliedEvals.d.ts +0 -10
  240. package/lib/rules/impliedEvals.js +0 -130
  241. package/lib/rules/importEmptyBlocks.d.ts +0 -10
  242. package/lib/rules/importEmptyBlocks.js +0 -53
  243. package/lib/rules/importTypeSideEffects.d.ts +0 -10
  244. package/lib/rules/importTypeSideEffects.js +0 -31
  245. package/lib/rules/indexedObjectTypes.d.ts +0 -16
  246. package/lib/rules/indexedObjectTypes.js +0 -83
  247. package/lib/rules/instanceOfArrays.d.ts +0 -10
  248. package/lib/rules/instanceOfArrays.js +0 -31
  249. package/lib/rules/irregularWhitespaces.d.ts +0 -16
  250. package/lib/rules/irregularWhitespaces.js +0 -97
  251. package/lib/rules/isNaNComparisons.d.ts +0 -10
  252. package/lib/rules/isNaNComparisons.js +0 -43
  253. package/lib/rules/literalConstructorWrappers.d.ts +0 -10
  254. package/lib/rules/literalConstructorWrappers.js +0 -64
  255. package/lib/rules/mathMethods.d.ts +0 -10
  256. package/lib/rules/mathMethods.js +0 -128
  257. package/lib/rules/meaninglessVoidOperators.d.ts +0 -10
  258. package/lib/rules/meaninglessVoidOperators.js +0 -39
  259. package/lib/rules/misleadingVoidExpressions.d.ts +0 -10
  260. package/lib/rules/misleadingVoidExpressions.js +0 -128
  261. package/lib/rules/moduleSpecifierLists.d.ts +0 -10
  262. package/lib/rules/moduleSpecifierLists.js +0 -92
  263. package/lib/rules/multilineAmbiguities.d.ts +0 -10
  264. package/lib/rules/multilineAmbiguities.js +0 -64
  265. package/lib/rules/namedDefaultExports.d.ts +0 -10
  266. package/lib/rules/namedDefaultExports.js +0 -60
  267. package/lib/rules/namespaceDeclarations.d.ts +0 -14
  268. package/lib/rules/namespaceDeclarations.js +0 -37
  269. package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -10
  270. package/lib/rules/namespaceImplicitAmbientImports.js +0 -40
  271. package/lib/rules/namespaceKeywords.d.ts +0 -10
  272. package/lib/rules/namespaceKeywords.js +0 -40
  273. package/lib/rules/nativeObjectExtensions.d.ts +0 -10
  274. package/lib/rules/nativeObjectExtensions.js +0 -114
  275. package/lib/rules/negativeIndexLengthMethods.d.ts +0 -10
  276. package/lib/rules/negativeIndexLengthMethods.js +0 -180
  277. package/lib/rules/negativeZeroComparisons.d.ts +0 -10
  278. package/lib/rules/negativeZeroComparisons.js +0 -48
  279. package/lib/rules/nestedStandaloneIfs.d.ts +0 -10
  280. package/lib/rules/nestedStandaloneIfs.js +0 -105
  281. package/lib/rules/newDefinitions.d.ts +0 -10
  282. package/lib/rules/newDefinitions.js +0 -84
  283. package/lib/rules/newExpressions.d.ts +0 -10
  284. package/lib/rules/newExpressions.js +0 -38
  285. package/lib/rules/newNativeNonConstructors.d.ts +0 -10
  286. package/lib/rules/newNativeNonConstructors.js +0 -39
  287. package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -10
  288. package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -63
  289. package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -10
  290. package/lib/rules/nonNullAssertedOptionalChains.js +0 -69
  291. package/lib/rules/nonNullAssertionPlacement.d.ts +0 -10
  292. package/lib/rules/nonNullAssertionPlacement.js +0 -94
  293. package/lib/rules/nonNullableTypeAssertions.d.ts +0 -10
  294. package/lib/rules/nonNullableTypeAssertions.js +0 -78
  295. package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -10
  296. package/lib/rules/nonOctalDecimalEscapes.js +0 -48
  297. package/lib/rules/nullishCheckStyle.d.ts +0 -21
  298. package/lib/rules/nullishCheckStyle.js +0 -144
  299. package/lib/rules/nullishCoalescingOperators.d.ts +0 -22
  300. package/lib/rules/nullishCoalescingOperators.js +0 -323
  301. package/lib/rules/numberMethodRanges.d.ts +0 -10
  302. package/lib/rules/numberMethodRanges.js +0 -74
  303. package/lib/rules/numberStaticMethods.d.ts +0 -10
  304. package/lib/rules/numberStaticMethods.js +0 -53
  305. package/lib/rules/numericErasingOperations.d.ts +0 -10
  306. package/lib/rules/numericErasingOperations.js +0 -46
  307. package/lib/rules/numericLiteralParsing.d.ts +0 -10
  308. package/lib/rules/numericLiteralParsing.js +0 -66
  309. package/lib/rules/numericPrecision.d.ts +0 -10
  310. package/lib/rules/numericPrecision.js +0 -102
  311. package/lib/rules/numericSeparatorGroups.d.ts +0 -10
  312. package/lib/rules/numericSeparatorGroups.js +0 -101
  313. package/lib/rules/objectAssignSpreads.d.ts +0 -10
  314. package/lib/rules/objectAssignSpreads.js +0 -53
  315. package/lib/rules/objectCalls.d.ts +0 -10
  316. package/lib/rules/objectCalls.js +0 -38
  317. package/lib/rules/objectEntriesMethods.d.ts +0 -10
  318. package/lib/rules/objectEntriesMethods.js +0 -82
  319. package/lib/rules/objectHasOwns.d.ts +0 -10
  320. package/lib/rules/objectHasOwns.js +0 -50
  321. package/lib/rules/objectKeyDuplicates.d.ts +0 -10
  322. package/lib/rules/objectKeyDuplicates.js +0 -63
  323. package/lib/rules/objectProto.d.ts +0 -10
  324. package/lib/rules/objectProto.js +0 -50
  325. package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -10
  326. package/lib/rules/objectPrototypeBuiltIns.js +0 -54
  327. package/lib/rules/objectShorthand.d.ts +0 -10
  328. package/lib/rules/objectShorthand.js +0 -84
  329. package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -10
  330. package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -43
  331. package/lib/rules/objectTypeDefinitions.d.ts +0 -10
  332. package/lib/rules/objectTypeDefinitions.js +0 -34
  333. package/lib/rules/octalEscapes.d.ts +0 -10
  334. package/lib/rules/octalEscapes.js +0 -58
  335. package/lib/rules/octalNumbers.d.ts +0 -10
  336. package/lib/rules/octalNumbers.js +0 -55
  337. package/lib/rules/operatorAssignmentShorthand.d.ts +0 -10
  338. package/lib/rules/operatorAssignmentShorthand.js +0 -77
  339. package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -10
  340. package/lib/rules/overloadSignaturesAdjacent.js +0 -140
  341. package/lib/rules/parameterReassignments.d.ts +0 -10
  342. package/lib/rules/parameterReassignments.js +0 -45
  343. package/lib/rules/parseIntRadixes.d.ts +0 -10
  344. package/lib/rules/parseIntRadixes.js +0 -62
  345. package/lib/rules/propertyAccessNotation.d.ts +0 -13
  346. package/lib/rules/propertyAccessNotation.js +0 -119
  347. package/lib/rules/recursionOnlyArguments.d.ts +0 -10
  348. package/lib/rules/recursionOnlyArguments.js +0 -71
  349. package/lib/rules/redundantTypeConstituents.d.ts +0 -10
  350. package/lib/rules/redundantTypeConstituents.js +0 -277
  351. package/lib/rules/regexAllGlobalFlags.d.ts +0 -10
  352. package/lib/rules/regexAllGlobalFlags.js +0 -56
  353. package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -10
  354. package/lib/rules/regexAmbiguousInvalidity.js +0 -297
  355. package/lib/rules/regexCharacterClassRanges.d.ts +0 -10
  356. package/lib/rules/regexCharacterClassRanges.js +0 -137
  357. package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -10
  358. package/lib/rules/regexCharacterClassSetOperations.js +0 -81
  359. package/lib/rules/regexCharacterClasses.d.ts +0 -10
  360. package/lib/rules/regexCharacterClasses.js +0 -234
  361. package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -10
  362. package/lib/rules/regexConciseCharacterClassNegations.js +0 -52
  363. package/lib/rules/regexContradictoryAssertions.d.ts +0 -10
  364. package/lib/rules/regexContradictoryAssertions.js +0 -210
  365. package/lib/rules/regexControlCharacterEscapes.d.ts +0 -10
  366. package/lib/rules/regexControlCharacterEscapes.js +0 -130
  367. package/lib/rules/regexControlCharacters.d.ts +0 -10
  368. package/lib/rules/regexControlCharacters.js +0 -95
  369. package/lib/rules/regexDigitMatchers.d.ts +0 -10
  370. package/lib/rules/regexDigitMatchers.js +0 -180
  371. package/lib/rules/regexDollarEscapes.d.ts +0 -10
  372. package/lib/rules/regexDollarEscapes.js +0 -91
  373. package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -10
  374. package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -128
  375. package/lib/rules/regexEmptyAlternatives.d.ts +0 -10
  376. package/lib/rules/regexEmptyAlternatives.js +0 -140
  377. package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -10
  378. package/lib/rules/regexEmptyCapturingGroups.js +0 -67
  379. package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -10
  380. package/lib/rules/regexEmptyCharacterClasses.js +0 -68
  381. package/lib/rules/regexEmptyGroups.d.ts +0 -10
  382. package/lib/rules/regexEmptyGroups.js +0 -66
  383. package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -10
  384. package/lib/rules/regexEmptyLazyQuantifiers.js +0 -92
  385. package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -10
  386. package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -68
  387. package/lib/rules/regexEmptyStringLiterals.d.ts +0 -10
  388. package/lib/rules/regexEmptyStringLiterals.js +0 -66
  389. package/lib/rules/regexEscapeBackspaces.d.ts +0 -10
  390. package/lib/rules/regexEscapeBackspaces.js +0 -69
  391. package/lib/rules/regexExecutors.d.ts +0 -10
  392. package/lib/rules/regexExecutors.js +0 -58
  393. package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -10
  394. package/lib/rules/regexGraphemeStringLiterals.js +0 -51
  395. package/lib/rules/regexHexadecimalEscapes.d.ts +0 -10
  396. package/lib/rules/regexHexadecimalEscapes.js +0 -71
  397. package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -10
  398. package/lib/rules/regexIgnoreCaseFlags.js +0 -145
  399. package/lib/rules/regexInvisibleCharacters.d.ts +0 -10
  400. package/lib/rules/regexInvisibleCharacters.js +0 -90
  401. package/lib/rules/regexLetterCasing.d.ts +0 -10
  402. package/lib/rules/regexLetterCasing.js +0 -186
  403. package/lib/rules/regexLiterals.d.ts +0 -10
  404. package/lib/rules/regexLiterals.js +0 -92
  405. package/lib/rules/regexLookaroundAssertions.d.ts +0 -10
  406. package/lib/rules/regexLookaroundAssertions.js +0 -163
  407. package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -10
  408. package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -94
  409. package/lib/rules/regexMatchNotation.d.ts +0 -10
  410. package/lib/rules/regexMatchNotation.js +0 -139
  411. package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -10
  412. package/lib/rules/regexMisleadingCapturingGroups.js +0 -229
  413. package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -10
  414. package/lib/rules/regexMisleadingQuantifiers.js +0 -78
  415. package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -10
  416. package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -203
  417. package/lib/rules/regexNamedBackreferences.d.ts +0 -10
  418. package/lib/rules/regexNamedBackreferences.js +0 -48
  419. package/lib/rules/regexNamedCaptureGroups.d.ts +0 -9
  420. package/lib/rules/regexNamedCaptureGroups.js +0 -67
  421. package/lib/rules/regexNamedReplacements.d.ts +0 -10
  422. package/lib/rules/regexNamedReplacements.js +0 -93
  423. package/lib/rules/regexNonStandardFlags.d.ts +0 -10
  424. package/lib/rules/regexNonStandardFlags.js +0 -66
  425. package/lib/rules/regexObscureRanges.d.ts +0 -10
  426. package/lib/rules/regexObscureRanges.js +0 -93
  427. package/lib/rules/regexOctalEscapes.d.ts +0 -10
  428. package/lib/rules/regexOctalEscapes.js +0 -70
  429. package/lib/rules/regexPlusQuantifiers.d.ts +0 -10
  430. package/lib/rules/regexPlusQuantifiers.js +0 -68
  431. package/lib/rules/regexPredefinedAssertions.d.ts +0 -10
  432. package/lib/rules/regexPredefinedAssertions.js +0 -127
  433. package/lib/rules/regexQuestionQuantifiers.d.ts +0 -10
  434. package/lib/rules/regexQuestionQuantifiers.js +0 -104
  435. package/lib/rules/regexRepeatQuantifiers.d.ts +0 -10
  436. package/lib/rules/regexRepeatQuantifiers.js +0 -96
  437. package/lib/rules/regexResultArrayGroups.d.ts +0 -10
  438. package/lib/rules/regexResultArrayGroups.js +0 -187
  439. package/lib/rules/regexSetOperationOptimizations.d.ts +0 -10
  440. package/lib/rules/regexSetOperationOptimizations.js +0 -177
  441. package/lib/rules/regexStandaloneBackslashes.d.ts +0 -10
  442. package/lib/rules/regexStandaloneBackslashes.js +0 -59
  443. package/lib/rules/regexStarQuantifiers.d.ts +0 -10
  444. package/lib/rules/regexStarQuantifiers.js +0 -68
  445. package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -10
  446. package/lib/rules/regexSuperLinearBacktracking.js +0 -98
  447. package/lib/rules/regexSuperLinearMoves.d.ts +0 -10
  448. package/lib/rules/regexSuperLinearMoves.js +0 -142
  449. package/lib/rules/regexTestMethods.d.ts +0 -10
  450. package/lib/rules/regexTestMethods.js +0 -83
  451. package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -10
  452. package/lib/rules/regexUnicodeCodepointEscapes.js +0 -107
  453. package/lib/rules/regexUnicodeEscapes.d.ts +0 -9
  454. package/lib/rules/regexUnicodeEscapes.js +0 -97
  455. package/lib/rules/regexUnicodeFlag.d.ts +0 -9
  456. package/lib/rules/regexUnicodeFlag.js +0 -97
  457. package/lib/rules/regexUnicodeProperties.d.ts +0 -10
  458. package/lib/rules/regexUnicodeProperties.js +0 -133
  459. package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -10
  460. package/lib/rules/regexUnnecessaryAssertions.js +0 -223
  461. package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -10
  462. package/lib/rules/regexUnnecessaryBackreferences.js +0 -125
  463. package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -10
  464. package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -74
  465. package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -10
  466. package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -108
  467. package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -10
  468. package/lib/rules/regexUnnecessaryDisjunctions.js +0 -118
  469. package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -10
  470. package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -144
  471. package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -10
  472. package/lib/rules/regexUnnecessaryEscapes.js +0 -136
  473. package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -10
  474. package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -80
  475. package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -10
  476. package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -198
  477. package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -10
  478. package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -93
  479. package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -10
  480. package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -104
  481. package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -10
  482. package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -69
  483. package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -10
  484. package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -137
  485. package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -10
  486. package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -123
  487. package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -10
  488. package/lib/rules/regexUnnecessarySetOperands.js +0 -136
  489. package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -10
  490. package/lib/rules/regexUnusedCapturingGroups.js +0 -69
  491. package/lib/rules/regexUnusedFlags.d.ts +0 -10
  492. package/lib/rules/regexUnusedFlags.js +0 -116
  493. package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -10
  494. package/lib/rules/regexUnusedLazyQuantifiers.js +0 -63
  495. package/lib/rules/regexUnusedQuantifiers.d.ts +0 -10
  496. package/lib/rules/regexUnusedQuantifiers.js +0 -63
  497. package/lib/rules/regexValidity.d.ts +0 -10
  498. package/lib/rules/regexValidity.js +0 -146
  499. package/lib/rules/regexWordMatchers.d.ts +0 -10
  500. package/lib/rules/regexWordMatchers.js +0 -146
  501. package/lib/rules/regexZeroQuantifiers.d.ts +0 -10
  502. package/lib/rules/regexZeroQuantifiers.js +0 -60
  503. package/lib/rules/requireImports.d.ts +0 -10
  504. package/lib/rules/requireImports.js +0 -48
  505. package/lib/rules/responseJsonMethods.d.ts +0 -10
  506. package/lib/rules/responseJsonMethods.js +0 -51
  507. package/lib/rules/restrictedIdentifiers.d.ts +0 -13
  508. package/lib/rules/restrictedIdentifiers.js +0 -41
  509. package/lib/rules/restrictedImports.d.ts +0 -27
  510. package/lib/rules/restrictedImports.js +0 -166
  511. package/lib/rules/returnAssignments.d.ts +0 -10
  512. package/lib/rules/returnAssignments.js +0 -38
  513. package/lib/rules/returnThisTypes.d.ts +0 -10
  514. package/lib/rules/returnThisTypes.js +0 -94
  515. package/lib/rules/ruleCreator.d.ts +0 -3
  516. package/lib/rules/ruleCreator.js +0 -17
  517. package/lib/rules/selfAssignments.d.ts +0 -10
  518. package/lib/rules/selfAssignments.js +0 -29
  519. package/lib/rules/sequences.d.ts +0 -10
  520. package/lib/rules/sequences.js +0 -28
  521. package/lib/rules/setSizeLengthChecks.d.ts +0 -10
  522. package/lib/rules/setSizeLengthChecks.js +0 -48
  523. package/lib/rules/setterReturns.d.ts +0 -10
  524. package/lib/rules/setterReturns.js +0 -41
  525. package/lib/rules/shadowedRestrictedNames.d.ts +0 -10
  526. package/lib/rules/shadowedRestrictedNames.js +0 -68
  527. package/lib/rules/singleVariableDeclarations.d.ts +0 -10
  528. package/lib/rules/singleVariableDeclarations.js +0 -36
  529. package/lib/rules/sizeComparisonOperators.d.ts +0 -16
  530. package/lib/rules/sizeComparisonOperators.js +0 -148
  531. package/lib/rules/sparseArrays.d.ts +0 -10
  532. package/lib/rules/sparseArrays.js +0 -43
  533. package/lib/rules/staticMemberOnlyClasses.d.ts +0 -10
  534. package/lib/rules/staticMemberOnlyClasses.js +0 -77
  535. package/lib/rules/stringCaseMismatches.d.ts +0 -10
  536. package/lib/rules/stringCaseMismatches.js +0 -58
  537. package/lib/rules/stringCodePoints.d.ts +0 -10
  538. package/lib/rules/stringCodePoints.js +0 -50
  539. package/lib/rules/stringSliceMethods.d.ts +0 -10
  540. package/lib/rules/stringSliceMethods.js +0 -47
  541. package/lib/rules/stringStartsEndsWith.d.ts +0 -10
  542. package/lib/rules/stringStartsEndsWith.js +0 -79
  543. package/lib/rules/structuredCloneMethods.d.ts +0 -10
  544. package/lib/rules/structuredCloneMethods.js +0 -39
  545. package/lib/rules/symbolDescriptions.d.ts +0 -10
  546. package/lib/rules/symbolDescriptions.js +0 -32
  547. package/lib/rules/thisAliases.d.ts +0 -10
  548. package/lib/rules/thisAliases.js +0 -44
  549. package/lib/rules/thisBeforeSuper.d.ts +0 -10
  550. package/lib/rules/thisBeforeSuper.js +0 -86
  551. package/lib/rules/throwErrors.d.ts +0 -10
  552. package/lib/rules/throwErrors.js +0 -61
  553. package/lib/rules/topLevelAwaits.d.ts +0 -10
  554. package/lib/rules/topLevelAwaits.js +0 -49
  555. package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -10
  556. package/lib/rules/tripleSlashReferenceValidity.js +0 -54
  557. package/lib/rules/tripleSlashReferences.d.ts +0 -10
  558. package/lib/rules/tripleSlashReferences.js +0 -34
  559. package/lib/rules/tsComments.d.ts +0 -22
  560. package/lib/rules/tsComments.js +0 -130
  561. package/lib/rules/tslintComments.d.ts +0 -10
  562. package/lib/rules/tslintComments.js +0 -36
  563. package/lib/rules/typeAssertionStyles.d.ts +0 -10
  564. package/lib/rules/typeAssertionStyles.js +0 -32
  565. package/lib/rules/typeImports.d.ts +0 -20
  566. package/lib/rules/typeImports.js +0 -283
  567. package/lib/rules/typeofComparisons.d.ts +0 -10
  568. package/lib/rules/typeofComparisons.js +0 -58
  569. package/lib/rules/unassignedVariables.d.ts +0 -10
  570. package/lib/rules/unassignedVariables.js +0 -34
  571. package/lib/rules/undefinedTypeofChecks.d.ts +0 -10
  572. package/lib/rules/undefinedTypeofChecks.js +0 -41
  573. package/lib/rules/undefinedVariables.d.ts +0 -10
  574. package/lib/rules/undefinedVariables.js +0 -39
  575. package/lib/rules/unicodeBOMs.d.ts +0 -10
  576. package/lib/rules/unicodeBOMs.js +0 -39
  577. package/lib/rules/unnecessaryBinds.d.ts +0 -10
  578. package/lib/rules/unnecessaryBinds.js +0 -78
  579. package/lib/rules/unnecessaryBlocks.d.ts +0 -10
  580. package/lib/rules/unnecessaryBlocks.js +0 -60
  581. package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -10
  582. package/lib/rules/unnecessaryBooleanCasts.js +0 -58
  583. package/lib/rules/unnecessaryCatches.d.ts +0 -10
  584. package/lib/rules/unnecessaryCatches.js +0 -48
  585. package/lib/rules/unnecessaryComparisons.d.ts +0 -10
  586. package/lib/rules/unnecessaryComparisons.js +0 -300
  587. package/lib/rules/unnecessaryConcatenation.d.ts +0 -10
  588. package/lib/rules/unnecessaryConcatenation.js +0 -28
  589. package/lib/rules/unnecessaryEscapes.d.ts +0 -10
  590. package/lib/rules/unnecessaryEscapes.js +0 -134
  591. package/lib/rules/unnecessaryMathClamps.d.ts +0 -10
  592. package/lib/rules/unnecessaryMathClamps.js +0 -114
  593. package/lib/rules/unnecessaryNumericFractions.d.ts +0 -10
  594. package/lib/rules/unnecessaryNumericFractions.js +0 -50
  595. package/lib/rules/unnecessaryRenames.d.ts +0 -10
  596. package/lib/rules/unnecessaryRenames.js +0 -92
  597. package/lib/rules/unnecessaryTernaries.d.ts +0 -10
  598. package/lib/rules/unnecessaryTernaries.js +0 -88
  599. package/lib/rules/unnecessaryUseStricts.d.ts +0 -10
  600. package/lib/rules/unnecessaryUseStricts.js +0 -40
  601. package/lib/rules/unsafeNegations.d.ts +0 -10
  602. package/lib/rules/unsafeNegations.js +0 -38
  603. package/lib/rules/utils/collectAccessorPairs.d.ts +0 -12
  604. package/lib/rules/utils/collectAccessorPairs.js +0 -29
  605. package/lib/rules/utils/countCommentsInRange.d.ts +0 -3
  606. package/lib/rules/utils/countCommentsInRange.js +0 -12
  607. package/lib/rules/utils/discriminateAnyType.d.ts +0 -16
  608. package/lib/rules/utils/discriminateAnyType.js +0 -38
  609. package/lib/rules/utils/equalityOperators.d.ts +0 -9
  610. package/lib/rules/utils/equalityOperators.js +0 -36
  611. package/lib/rules/utils/forEachReturnStatement.d.ts +0 -3
  612. package/lib/rules/utils/forEachReturnStatement.js +0 -29
  613. package/lib/rules/utils/formatReportedType.d.ts +0 -4
  614. package/lib/rules/utils/formatReportedType.js +0 -9
  615. package/lib/rules/utils/getConstrainedType.d.ts +0 -3
  616. package/lib/rules/utils/getConstrainedType.js +0 -9
  617. package/lib/rules/utils/getFunctionName.d.ts +0 -3
  618. package/lib/rules/utils/getFunctionName.js +0 -16
  619. package/lib/rules/utils/getRegExpConstruction.d.ts +0 -10
  620. package/lib/rules/utils/getRegExpConstruction.js +0 -26
  621. package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -7
  622. package/lib/rules/utils/getRegExpLiteralDetails.js +0 -13
  623. package/lib/rules/utils/getThisExpression.d.ts +0 -3
  624. package/lib/rules/utils/getThisExpression.js +0 -16
  625. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -3
  626. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -13
  627. package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -3
  628. package/lib/rules/utils/isBuiltinSymbolLike.js +0 -33
  629. package/lib/rules/utils/isDirectEqualityCheck.d.ts +0 -4
  630. package/lib/rules/utils/isDirectEqualityCheck.js +0 -29
  631. package/lib/rules/utils/isErrorSubclass.d.ts +0 -3
  632. package/lib/rules/utils/isErrorSubclass.js +0 -27
  633. package/lib/rules/utils/isInBooleanContext.d.ts +0 -3
  634. package/lib/rules/utils/isInBooleanContext.js +0 -22
  635. package/lib/rules/utils/isTypeRecursive.d.ts +0 -3
  636. package/lib/rules/utils/isTypeRecursive.js +0 -8
  637. package/lib/rules/utils/isUnsafeAssignment.d.ts +0 -15
  638. package/lib/rules/utils/isUnsafeAssignment.js +0 -45
  639. package/lib/rules/utils/operators.d.ts +0 -5
  640. package/lib/rules/utils/operators.js +0 -35
  641. package/lib/rules/utils/parseRegexpAst.d.ts +0 -2
  642. package/lib/rules/utils/parseRegexpAst.js +0 -17
  643. package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -3
  644. package/lib/rules/utils/parseRegexpAstFull.js +0 -18
  645. package/lib/rules/utils/skipParentheses.d.ts +0 -3
  646. package/lib/rules/utils/skipParentheses.js +0 -10
  647. package/lib/rules/variableDeletions.d.ts +0 -10
  648. package/lib/rules/variableDeletions.js +0 -35
  649. package/lib/rules/voidOperator.d.ts +0 -10
  650. package/lib/rules/voidOperator.js +0 -34
  651. package/lib/rules/withStatements.d.ts +0 -10
  652. package/lib/rules/withStatements.js +0 -30
  653. package/lib/rules/wrapperObjects.d.ts +0 -10
  654. package/lib/rules/wrapperObjects.js +0 -36
  655. package/lib/type-utils/getSpecifierNames.d.ts +0 -3
  656. package/lib/type-utils/getSpecifierNames.js +0 -9
  657. package/lib/type-utils/isDeclaredInModuleBlock.d.ts +0 -3
  658. package/lib/type-utils/isDeclaredInModuleBlock.js +0 -14
  659. package/lib/type-utils/isFromFile.d.ts +0 -3
  660. package/lib/type-utils/isFromFile.js +0 -13
  661. package/lib/type-utils/isFromPackage.d.ts +0 -3
  662. package/lib/type-utils/isFromPackage.js +0 -16
  663. package/lib/type-utils/matchesSpecifier.d.ts +0 -4
  664. package/lib/type-utils/matchesSpecifier.js +0 -20
  665. package/lib/type-utils/schemas.d.ts +0 -15
  666. package/lib/type-utils/schemas.js +0 -25
@@ -1,73 +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 = 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 };
72
-
73
- //# sourceMappingURL=arrayCallbackReturns.js.map
@@ -1,10 +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;
10
- //# sourceMappingURL=arrayConstructors.d.ts.map
@@ -1,47 +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, { sourceFile, typeChecker }) {
18
- if (!ts$1.isIdentifier(node.expression) || node.expression.text !== "Array" || shouldAllowCallOrNew(node) || !isGlobalDeclarationOfName(node.expression, "Array", typeChecker)) 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 };
46
-
47
- //# sourceMappingURL=arrayConstructors.js.map
@@ -1,10 +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;
10
- //# sourceMappingURL=arrayDeleteUnnecessaryCounts.d.ts.map
@@ -1,54 +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 };
53
-
54
- //# sourceMappingURL=arrayDeleteUnnecessaryCounts.js.map
@@ -1,10 +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;
10
- //# sourceMappingURL=arrayElementDeletions.d.ts.map
@@ -1,43 +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 };
42
-
43
- //# sourceMappingURL=arrayElementDeletions.js.map
@@ -1,10 +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;
10
- //# sourceMappingURL=arrayEmptyCallbackSlots.d.ts.map
@@ -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/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
- function isNumericLiteral$1(node) {
11
- if (ts$1.isNumericLiteral(node)) return true;
12
- if (ts$1.isPrefixUnaryExpression(node)) return (node.operator === ts$1.SyntaxKind.MinusToken || node.operator === ts$1.SyntaxKind.PlusToken) && ts$1.isNumericLiteral(node.operand);
13
- return false;
14
- }
15
- var arrayEmptyCallbackSlots_default = ruleCreator.createRule(typescriptLanguage, {
16
- about: {
17
- description: "Reports array methods with callbacks that will never be invoked on arrays with empty slots.",
18
- id: "arrayEmptyCallbackSlots",
19
- presets: ["logical", "logicalStrict"]
20
- },
21
- messages: { neverInvoked: {
22
- primary: "This callback will not be invoked.",
23
- 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."],
24
- suggestions: ["Use `Array.from({ length: n }, callback)` instead.", "Use `new Array(n).fill(undefined).map(callback)` to fill slots first."]
25
- } },
26
- setup(context) {
27
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
28
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
29
- const objectExpression = node.expression.expression;
30
- if (!ts$1.isNewExpression(objectExpression) || !ts$1.isIdentifier(objectExpression.expression) || !isGlobalDeclarationOfName(objectExpression.expression, "Array", typeChecker)) return;
31
- const args = objectExpression.arguments;
32
- if (args?.length !== 1) return;
33
- const firstArgument = args[0];
34
- if (!isNumericLiteral$1(firstArgument) || !hasCallbackArgument(node)) return;
35
- context.report({
36
- message: "neverInvoked",
37
- range: getTSNodeRange(node.expression.name, sourceFile)
38
- });
39
- } } };
40
- }
41
- });
42
- //#endregion
43
- export { arrayEmptyCallbackSlots_default as default };
44
-
45
- //# sourceMappingURL=arrayEmptyCallbackSlots.js.map
@@ -1,10 +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;
10
- //# sourceMappingURL=arrayExistenceChecksConsistency.d.ts.map
@@ -1,86 +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 = 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 };
85
-
86
- //# sourceMappingURL=arrayExistenceChecksConsistency.js.map
@@ -1,10 +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;
10
- //# sourceMappingURL=arrayFilteredFinds.d.ts.map
@@ -1,80 +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/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
- function isNegativeOneIndex(node) {
10
- return ts$1.isPrefixUnaryExpression(node) && node.operator === ts$1.SyntaxKind.MinusToken && ts$1.isNumericLiteral(node.operand) && node.operand.text === "1";
11
- }
12
- function isZeroIndex(node) {
13
- return ts$1.isNumericLiteral(node) && node.text === "0";
14
- }
15
- var arrayFilteredFinds_default = ruleCreator.createRule(typescriptLanguage, {
16
- about: {
17
- description: "Reports using `.filter()` when only the first or last matching element is needed.",
18
- id: "arrayFilteredFinds",
19
- presets: ["logical", "logicalStrict"]
20
- },
21
- messages: {
22
- preferFind: {
23
- primary: "Prefer `.find()` over `.filter()[0]`.",
24
- 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."],
25
- suggestions: ["Replace `.filter(callback)[0]` with `.find(callback)`."]
26
- },
27
- preferFindLast: {
28
- primary: "Prefer `.findLast()` over `.filter().pop()` or `.filter().at(-1)`.",
29
- 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."],
30
- suggestions: ["Replace `.filter(callback).pop()` or `.filter(callback).at(-1)` with `.findLast(callback)`."]
31
- }
32
- },
33
- setup(context) {
34
- return { visitors: {
35
- CallExpression: (node, { sourceFile, typeChecker }) => {
36
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
37
- const methodName = node.expression.name.text;
38
- const objectExpression = node.expression.expression;
39
- switch (methodName) {
40
- case "pop":
41
- if (!node.arguments.length && isArrayFilterCall(objectExpression, typeChecker)) context.report({
42
- message: "preferFindLast",
43
- range: getTSNodeRange(node, sourceFile)
44
- });
45
- return;
46
- case "shift":
47
- if (!node.arguments.length && isArrayFilterCall(objectExpression, typeChecker)) context.report({
48
- message: "preferFind",
49
- range: getTSNodeRange(node, sourceFile)
50
- });
51
- return;
52
- case "at": if (node.arguments.length === 1) {
53
- const arg = node.arguments[0];
54
- if (isZeroIndex(arg) && isArrayFilterCall(objectExpression, typeChecker)) {
55
- context.report({
56
- message: "preferFind",
57
- range: getTSNodeRange(node, sourceFile)
58
- });
59
- return;
60
- }
61
- if (isNegativeOneIndex(arg) && isArrayFilterCall(objectExpression, typeChecker)) context.report({
62
- message: "preferFindLast",
63
- range: getTSNodeRange(node, sourceFile)
64
- });
65
- }
66
- }
67
- },
68
- ElementAccessExpression: (node, { sourceFile, typeChecker }) => {
69
- if (isZeroIndex(node.argumentExpression) && isArrayFilterCall(node.expression, typeChecker)) context.report({
70
- message: "preferFind",
71
- range: getTSNodeRange(node, sourceFile)
72
- });
73
- }
74
- } };
75
- }
76
- });
77
- //#endregion
78
- export { arrayFilteredFinds_default as default };
79
-
80
- //# sourceMappingURL=arrayFilteredFinds.js.map
@@ -1,10 +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;
10
- //# sourceMappingURL=arrayFinds.d.ts.map
@@ -1,41 +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 };
40
-
41
- //# sourceMappingURL=arrayFinds.js.map
@@ -1,10 +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;
10
- //# sourceMappingURL=arrayFlatMapMethods.d.ts.map
@@ -1,47 +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/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 ts$1.isNumericLiteral(firstArgument) && firstArgument.text === "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 };
46
-
47
- //# sourceMappingURL=arrayFlatMapMethods.js.map
@@ -1,10 +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;
10
- //# sourceMappingURL=arrayFlatMethods.d.ts.map