@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,49 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, hasSameTokens, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/arraySliceUnnecessaryEnd.ts
5
- var arraySliceUnnecessaryEnd_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports unnecessary `end` argument in `.slice()` calls when it equals the length or is `Infinity`.",
8
- id: "arraySliceUnnecessaryEnd",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { unnecessaryEnd: {
12
- primary: "The `end` argument is unnecessary when slicing to the end of the array or string.",
13
- secondary: ["Passing `.length` or `Infinity` as the `end` argument is unnecessary.", "The `.slice()` method defaults to the end when the second argument is omitted."],
14
- suggestions: ["Remove the unnecessary `end` argument."]
15
- } },
16
- setup(context) {
17
- return { visitors: { CallExpression: (node, { sourceFile }) => {
18
- if (!ts$1.isPropertyAccessExpression(node.expression) || node.expression.name.text !== "slice" || node.arguments.length !== 2) return;
19
- const endArgument = node.arguments[1];
20
- if (!isUnnecessaryEnd(node.expression.expression, endArgument, sourceFile)) return;
21
- context.report({
22
- fix: {
23
- range: {
24
- begin: node.arguments[0].getEnd(),
25
- end: endArgument.getEnd()
26
- },
27
- text: ""
28
- },
29
- message: "unnecessaryEnd",
30
- range: getTSNodeRange(endArgument, sourceFile)
31
- });
32
- } } };
33
- }
34
- });
35
- function isInfinity(node) {
36
- switch (node.kind) {
37
- case ts$1.SyntaxKind.Identifier: return node.text === "Infinity";
38
- case ts$1.SyntaxKind.PropertyAccessExpression: return ts$1.isIdentifier(node.expression) && node.expression.text === "Number" && node.name.text === "POSITIVE_INFINITY";
39
- default: return false;
40
- }
41
- }
42
- function isLengthOfReceiver(receiver, endArgument, sourceFile) {
43
- return ts$1.isPropertyAccessExpression(endArgument) && endArgument.name.text === "length" && hasSameTokens(receiver, endArgument.expression, sourceFile);
44
- }
45
- function isUnnecessaryEnd(receiver, endArgument, sourceFile) {
46
- return isInfinity(endArgument) || isLengthOfReceiver(receiver, endArgument, sourceFile);
47
- }
48
- //#endregion
49
- export { arraySliceUnnecessaryEnd_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports patterns that can be replaced with `.some()` for checking array element existence.";
3
- readonly id: "arraySomeMethods";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferSome", undefined>;
9
- export default _default;
@@ -1,75 +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/arraySomeMethods.ts
5
- var arraySomeMethods_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports patterns that can be replaced with `.some()` for checking array element existence.",
8
- id: "arraySomeMethods",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { preferSome: {
12
- primary: "Prefer `.some()` to more cleanly check if an array contains a matching element.",
13
- secondary: ["The `.some()` method is more explicit and efficient for existence checks.", "It stops iterating as soon as a match is found."],
14
- suggestions: ["Replace with `.some()`."]
15
- } },
16
- setup(context) {
17
- return { visitors: { BinaryExpression: (node, { sourceFile, typeChecker }) => {
18
- const result = checkFilterLengthComparison(node, typeChecker) ?? checkFindIndexComparison(node, typeChecker);
19
- if (!result) return;
20
- const arrayText = result.arrayExpression.getText(sourceFile);
21
- const callbackText = result.callback.getText(sourceFile);
22
- const range = getTSNodeRange(node, sourceFile);
23
- context.report({
24
- fix: {
25
- range,
26
- text: `${arrayText}.some(${callbackText})`
27
- },
28
- message: "preferSome",
29
- range
30
- });
31
- } } };
32
- }
33
- });
34
- function checkFilterLengthComparison(node, typeChecker) {
35
- const lengthAccess = isNonZeroLengthCheck(node) && getLengthAccess(node);
36
- return lengthAccess ? getFilterCall(lengthAccess.expression, typeChecker) : void 0;
37
- }
38
- function checkFindIndexComparison(node, typeChecker) {
39
- return isFindIndexNegativeOneCheck(node) && ts$1.isCallExpression(node.left) && getFindIndexCall(node.left, typeChecker);
40
- }
41
- function getFilterCall(node, typeChecker) {
42
- if (!ts$1.isCallExpression(node) || !ts$1.isPropertyAccessExpression(node.expression) || node.expression.name.text !== "filter" || !node.arguments.length || !isArrayType(node.expression.expression, typeChecker)) return;
43
- return {
44
- arrayExpression: node.expression.expression,
45
- callback: node.arguments[0]
46
- };
47
- }
48
- function getFindIndexCall(node, typeChecker) {
49
- if (!ts$1.isPropertyAccessExpression(node.expression) || !["findIndex", "findLastIndex"].includes(node.expression.name.text) || !node.arguments.length || !isArrayType(node.expression.expression, typeChecker)) return;
50
- return {
51
- arrayExpression: node.expression.expression,
52
- callback: node.arguments[0]
53
- };
54
- }
55
- function getLengthAccess(node) {
56
- return ts$1.isPropertyAccessExpression(node.left) && node.left.name.text === "length" && node.left;
57
- }
58
- function isArrayType(node, typeChecker) {
59
- const type = typeChecker.getTypeAtLocation(node);
60
- return typeChecker.isArrayType(type);
61
- }
62
- function isFindIndexNegativeOneCheck(node) {
63
- if (node.operatorToken.kind !== ts$1.SyntaxKind.ExclamationEqualsEqualsToken || !ts$1.isPrefixUnaryExpression(node.right) || node.right.operator !== ts$1.SyntaxKind.MinusToken || !ts$1.isNumericLiteral(node.right.operand)) return false;
64
- return node.right.operand.text === "1";
65
- }
66
- function isNonZeroLengthCheck(node) {
67
- const { left, operatorToken, right } = node;
68
- if (operatorToken.kind === ts$1.SyntaxKind.GreaterThanToken && ts$1.isNumericLiteral(right) && right.text === "0") return true;
69
- if (operatorToken.kind === ts$1.SyntaxKind.ExclamationEqualsEqualsToken && ts$1.isNumericLiteral(right) && right.text === "0") return true;
70
- if (operatorToken.kind === ts$1.SyntaxKind.GreaterThanEqualsToken && ts$1.isNumericLiteral(right) && right.text === "1") return true;
71
- if (operatorToken.kind === ts$1.SyntaxKind.LessThanToken && ts$1.isNumericLiteral(left) && left.text === "0") return true;
72
- return false;
73
- }
74
- //#endregion
75
- export { arraySomeMethods_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports inconsistent types when spreading a ternary in an array literal.";
3
- readonly id: "arrayTernarySpreadingConsistency";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "inconsistentTypes", undefined>;
9
- export default _default;
@@ -1,72 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/arrayTernarySpreadingConsistency.ts
5
- var arrayTernarySpreadingConsistency_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports inconsistent types when spreading a ternary in an array literal.",
8
- id: "arrayTernarySpreadingConsistency",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { inconsistentTypes: {
12
- primary: "Prefer consistent types in both branches when spreading a ternary in an array.",
13
- secondary: ["Mixing array and string types in ternary spread branches reduces code clarity.", "Both branches should use the same type: either arrays or strings."],
14
- suggestions: ["Replace the empty string with an empty array."]
15
- } },
16
- setup(context) {
17
- return { visitors: { ArrayLiteralExpression: (node, { sourceFile }) => {
18
- for (const element of node.elements) {
19
- if (!ts$1.isSpreadElement(element) || !ts$1.isParenthesizedExpression(element.expression)) continue;
20
- const inner = element.expression.expression;
21
- if (!ts$1.isConditionalExpression(inner)) continue;
22
- const whenTrue = unwrapParentheses(inner.whenTrue);
23
- const whenFalse = unwrapParentheses(inner.whenFalse);
24
- if (ts$1.isArrayLiteralExpression(whenTrue) && isStringLike(whenFalse) && isEmptyStringLike(whenFalse)) {
25
- context.report({
26
- fix: {
27
- range: {
28
- begin: whenFalse.getStart(sourceFile),
29
- end: whenFalse.getEnd()
30
- },
31
- text: "[]"
32
- },
33
- message: "inconsistentTypes",
34
- range: {
35
- begin: whenFalse.getStart(sourceFile),
36
- end: whenFalse.getEnd()
37
- }
38
- });
39
- continue;
40
- }
41
- if (isStringLike(whenTrue) && ts$1.isArrayLiteralExpression(whenFalse) && isEmptyArray(whenFalse)) context.report({
42
- fix: {
43
- range: {
44
- begin: whenFalse.getStart(sourceFile),
45
- end: whenFalse.getEnd()
46
- },
47
- text: "''"
48
- },
49
- message: "inconsistentTypes",
50
- range: {
51
- begin: whenFalse.getStart(sourceFile),
52
- end: whenFalse.getEnd()
53
- }
54
- });
55
- }
56
- } } };
57
- }
58
- });
59
- function isEmptyArray(node) {
60
- return ts$1.isArrayLiteralExpression(node) && !node.elements.length;
61
- }
62
- function isEmptyStringLike(node) {
63
- return isStringLike(node) && node.text === "";
64
- }
65
- function isStringLike(node) {
66
- return ts$1.isStringLiteral(node) || ts$1.isNoSubstitutionTemplateLiteral(node);
67
- }
68
- function unwrapParentheses(node) {
69
- return ts$1.isParenthesizedExpression(node) ? unwrapParentheses(node.expression) : node;
70
- }
71
- //#endregion
72
- export { arrayTernarySpreadingConsistency_default as default };
@@ -1,16 +0,0 @@
1
- import { z } from "zod/v4";
2
- declare const _default: import("@flint.fyi/core").Rule<{
3
- readonly description: "Reports array type syntax that doesn't match the configured style.";
4
- readonly id: "arrayTypes";
5
- readonly presets: readonly ["stylistic", "stylisticStrict"];
6
- } & {
7
- readonly pluginId: string;
8
- readonly url: string;
9
- }, "preferArraySyntax" | "preferGenericSyntax" | "preferReadonlyArraySyntax" | "preferReadonlyGenericSyntax", {
10
- style: z.ZodDefault<z.ZodEnum<{
11
- array: "array";
12
- "array-simple": "array-simple";
13
- generic: "generic";
14
- }>>;
15
- }>;
16
- export default _default;
@@ -1,109 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, isGlobalDeclaration, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- import { z as z$1 } from "zod/v4";
5
- //#region src/rules/arrayTypes.ts
6
- function isSimpleType(typeNode) {
7
- switch (typeNode?.kind) {
8
- case ts$1.SyntaxKind.AnyKeyword:
9
- case ts$1.SyntaxKind.BigIntKeyword:
10
- case ts$1.SyntaxKind.BooleanKeyword:
11
- case ts$1.SyntaxKind.NeverKeyword:
12
- case ts$1.SyntaxKind.NumberKeyword:
13
- case ts$1.SyntaxKind.ObjectKeyword:
14
- case ts$1.SyntaxKind.StringKeyword:
15
- case ts$1.SyntaxKind.SymbolKeyword:
16
- case ts$1.SyntaxKind.TypeReference:
17
- case ts$1.SyntaxKind.UndefinedKeyword:
18
- case ts$1.SyntaxKind.UnknownKeyword:
19
- case ts$1.SyntaxKind.VoidKeyword: return true;
20
- case ts$1.SyntaxKind.ArrayType: return isSimpleType(typeNode.elementType);
21
- default: return false;
22
- }
23
- }
24
- var arrayTypes_default = ruleCreator.createRule(typescriptLanguage, {
25
- about: {
26
- description: "Reports array type syntax that doesn't match the configured style.",
27
- id: "arrayTypes",
28
- presets: ["stylistic", "stylisticStrict"]
29
- },
30
- messages: {
31
- preferArraySyntax: {
32
- primary: "Prefer `T[]` over `Array<T>`.",
33
- secondary: ["TypeScript provides two equivalent ways to define an array type: `T[]` and `Array<T>`.", "Using the shorthand `T[]` syntax consistently is more concise and idiomatic."],
34
- suggestions: ["Replace `Array<T>` with `T[]`."]
35
- },
36
- preferGenericSyntax: {
37
- primary: "Prefer `Array<T>` over `T[]`.",
38
- secondary: ["TypeScript provides two equivalent ways to define an array type: `T[]` and `Array<T>`.", "Using the generic `Array<T>` syntax consistently can be clearer for complex types."],
39
- suggestions: ["Replace `T[]` with `Array<T>`."]
40
- },
41
- preferReadonlyArraySyntax: {
42
- primary: "Prefer `readonly T[]` over `ReadonlyArray<T>`.",
43
- secondary: ["TypeScript provides two equivalent ways to define a readonly array type: `readonly T[]` and `ReadonlyArray<T>`.", "Using the shorthand `readonly T[]` syntax consistently is more concise and idiomatic."],
44
- suggestions: ["Replace `ReadonlyArray<T>` with `readonly T[]`."]
45
- },
46
- preferReadonlyGenericSyntax: {
47
- primary: "Prefer `ReadonlyArray<T>` over `readonly T[]`.",
48
- secondary: ["TypeScript provides two equivalent ways to define a readonly array type: `readonly T[]` and `ReadonlyArray<T>`.", "Using the generic `ReadonlyArray<T>` syntax consistently can be clearer for complex types."],
49
- suggestions: ["Replace `readonly T[]` with `ReadonlyArray<T>`."]
50
- }
51
- },
52
- options: { style: z$1.enum([
53
- "array",
54
- "array-simple",
55
- "generic"
56
- ]).default("array").describe("Which array type syntax to enforce: 'array' for `T[]`, 'generic' for `Array<T>`, or 'array-simple' for `T[]` only with simple types.") },
57
- setup(context) {
58
- return { visitors: {
59
- ArrayType: (node, { options, sourceFile }) => {
60
- if (node.parent.kind === ts$1.SyntaxKind.TypeOperator && node.parent.operator === ts$1.SyntaxKind.ReadonlyKeyword) return;
61
- switch (options.style) {
62
- case "array": return;
63
- case "array-simple":
64
- if (isSimpleType(node.elementType)) return;
65
- break;
66
- case "generic": break;
67
- }
68
- context.report({
69
- message: "preferGenericSyntax",
70
- range: getTSNodeRange(node, sourceFile)
71
- });
72
- },
73
- TypeOperator: (node, { options, sourceFile }) => {
74
- if (node.operator !== ts$1.SyntaxKind.ReadonlyKeyword || node.type.kind !== ts$1.SyntaxKind.ArrayType) return;
75
- const arrayType = node.type;
76
- switch (options.style) {
77
- case "array": return;
78
- case "array-simple":
79
- if (isSimpleType(arrayType.elementType)) return;
80
- break;
81
- case "generic": break;
82
- }
83
- context.report({
84
- message: "preferReadonlyGenericSyntax",
85
- range: getTSNodeRange(node, sourceFile)
86
- });
87
- },
88
- TypeReference: (node, { options, program, sourceFile, typeChecker }) => {
89
- if (node.typeName.kind !== ts$1.SyntaxKind.Identifier || !isGlobalDeclaration(node.typeName, typeChecker, program)) return;
90
- const typeName = node.typeName.text;
91
- if (typeName !== "Array" && typeName !== "ReadonlyArray") return;
92
- const typeArg = node.typeArguments?.[0];
93
- switch (options.style) {
94
- case "array": break;
95
- case "array-simple":
96
- if (!isSimpleType(typeArg)) return;
97
- break;
98
- case "generic": return;
99
- }
100
- context.report({
101
- message: typeName === "Array" ? "preferArraySyntax" : "preferReadonlyArraySyntax",
102
- range: getTSNodeRange(node, sourceFile)
103
- });
104
- }
105
- } };
106
- }
107
- });
108
- //#endregion
109
- export { arrayTypes_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports unnecessary array length checks before `.some()` or `.every()` calls.";
3
- readonly id: "arrayUnnecessaryLengthChecks";
4
- readonly presets: readonly ["logical"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unnecessaryLengthCheckEvery" | "unnecessaryLengthCheckSome", undefined>;
9
- export default _default;
@@ -1,95 +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/arrayUnnecessaryLengthChecks.ts
5
- function haveSameArrayExpression(expr1, expr2, sourceFile) {
6
- return expr1.getText(sourceFile) === expr2.getText(sourceFile);
7
- }
8
- function isLengthNonZeroCheck(node) {
9
- const { left, operatorToken, right } = node;
10
- if (operatorToken.kind === ts$1.SyntaxKind.ExclamationEqualsToken || operatorToken.kind === ts$1.SyntaxKind.ExclamationEqualsEqualsToken) {
11
- if (isLengthProperty(left) && isZero(right)) return { arrayExpression: left.expression };
12
- if (isZero(left) && isLengthProperty(right)) return { arrayExpression: right.expression };
13
- }
14
- if (operatorToken.kind === ts$1.SyntaxKind.GreaterThanToken && isLengthProperty(left) && isZero(right)) return { arrayExpression: left.expression };
15
- }
16
- function isLengthProperty(node) {
17
- return ts$1.isPropertyAccessExpression(node) && node.name.text === "length";
18
- }
19
- function isLengthZeroCheck(node) {
20
- const { left, operatorToken, right } = node;
21
- if (operatorToken.kind === ts$1.SyntaxKind.EqualsEqualsToken || operatorToken.kind === ts$1.SyntaxKind.EqualsEqualsEqualsToken) {
22
- if (isLengthProperty(left) && isZero(right)) return {
23
- arrayExpression: left.expression,
24
- isZeroCheck: true
25
- };
26
- if (isZero(left) && isLengthProperty(right)) return {
27
- arrayExpression: right.expression,
28
- isZeroCheck: true
29
- };
30
- }
31
- }
32
- function isSomeOrEveryCall(node, methodName) {
33
- if (!ts$1.isCallExpression(node)) return;
34
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
35
- if (node.expression.name.text !== methodName) return;
36
- return node.expression.expression;
37
- }
38
- function isZero(node) {
39
- return ts$1.isNumericLiteral(node) && node.text === "0";
40
- }
41
- var arrayUnnecessaryLengthChecks_default = ruleCreator.createRule(typescriptLanguage, {
42
- about: {
43
- description: "Reports unnecessary array length checks before `.some()` or `.every()` calls.",
44
- id: "arrayUnnecessaryLengthChecks",
45
- presets: ["logical"]
46
- },
47
- messages: {
48
- unnecessaryLengthCheckEvery: {
49
- primary: "Unnecessary length check before `.every()`.",
50
- secondary: ["`.every()` returns `true` for an empty array, so checking `array.length === 0` before calling `.every()` is redundant."],
51
- suggestions: ["Remove the length check."]
52
- },
53
- unnecessaryLengthCheckSome: {
54
- primary: "Unnecessary length check before `.some()`.",
55
- secondary: ["`.some()` returns `false` for an empty array, so checking `array.length !== 0` or `array.length > 0` before calling `.some()` is redundant."],
56
- suggestions: ["Remove the length check."]
57
- }
58
- },
59
- setup(context) {
60
- return { visitors: { BinaryExpression: (node, { sourceFile }) => {
61
- if (node.operatorToken.kind === ts$1.SyntaxKind.AmpersandAmpersandToken) {
62
- const { left, right } = node;
63
- if (!ts$1.isBinaryExpression(left)) return;
64
- const nonZeroCheck = isLengthNonZeroCheck(left);
65
- if (!nonZeroCheck) return;
66
- const someArrayExpr = isSomeOrEveryCall(right, "some");
67
- if (someArrayExpr && haveSameArrayExpression(nonZeroCheck.arrayExpression, someArrayExpr, sourceFile)) context.report({
68
- fix: {
69
- range: getTSNodeRange(node, sourceFile),
70
- text: right.getText(sourceFile)
71
- },
72
- message: "unnecessaryLengthCheckSome",
73
- range: getTSNodeRange(left, sourceFile)
74
- });
75
- }
76
- if (node.operatorToken.kind === ts$1.SyntaxKind.BarBarToken) {
77
- const { left, right } = node;
78
- if (!ts$1.isBinaryExpression(left)) return;
79
- const zeroCheck = isLengthZeroCheck(left);
80
- if (!zeroCheck) return;
81
- const everyArrayExpr = isSomeOrEveryCall(right, "every");
82
- if (everyArrayExpr && haveSameArrayExpression(zeroCheck.arrayExpression, everyArrayExpr, sourceFile)) context.report({
83
- fix: {
84
- range: getTSNodeRange(node, sourceFile),
85
- text: right.getText(sourceFile)
86
- },
87
- message: "unnecessaryLengthCheckEvery",
88
- range: getTSNodeRange(left, sourceFile)
89
- });
90
- }
91
- } } };
92
- }
93
- });
94
- //#endregion
95
- export { arrayUnnecessaryLengthChecks_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using explicit literal types when `as const` can be used.";
3
- readonly id: "asConstAssertions";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferAsConst" | "preferAsConstAnnotation", undefined>;
9
- export default _default;
@@ -1,55 +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/asConstAssertions.ts
5
- function getTextValue(node) {
6
- switch (node.kind) {
7
- case ts$1.SyntaxKind.FalseKeyword: return "false";
8
- case ts$1.SyntaxKind.LiteralType: return getTextValue(node.literal);
9
- case ts$1.SyntaxKind.NumericLiteral: return node.text;
10
- case ts$1.SyntaxKind.StringLiteral: return node.text;
11
- case ts$1.SyntaxKind.TrueKeyword: return "true";
12
- }
13
- }
14
- function isLiteralType(node) {
15
- return ts$1.isLiteralTypeNode(node) && (ts$1.isStringLiteral(node.literal) || ts$1.isNumericLiteral(node.literal) || node.literal.kind === ts$1.SyntaxKind.TrueKeyword || node.literal.kind === ts$1.SyntaxKind.FalseKeyword);
16
- }
17
- var asConstAssertions_default = ruleCreator.createRule(typescriptLanguage, {
18
- about: {
19
- description: "Reports using explicit literal types when `as const` can be used.",
20
- id: "asConstAssertions",
21
- presets: ["stylistic", "stylisticStrict"]
22
- },
23
- messages: {
24
- preferAsConst: {
25
- primary: "Prefer `as const` over an explicit literal type assertion.",
26
- secondary: ["`as const` tells TypeScript to infer the literal type automatically.", "This avoids repeating the literal value and is more concise."],
27
- suggestions: ["Replace the explicit literal type with `as const`."]
28
- },
29
- preferAsConstAnnotation: {
30
- primary: "Prefer `as const` over a literal type annotation.",
31
- secondary: ["When the literal type matches the initializer value, use `as const` instead.", "This avoids repeating the literal value and is more concise."],
32
- suggestions: ["Remove the type annotation and add `as const` to the initializer."]
33
- }
34
- },
35
- setup(context) {
36
- function compareTypes(expressionNode, typeNode, message, sourceFile) {
37
- if (getTextValue(typeNode) === void 0) return;
38
- if (getTextValue(expressionNode) === void 0) return;
39
- context.report({
40
- message,
41
- range: getTSNodeRange(typeNode, sourceFile)
42
- });
43
- }
44
- return { visitors: {
45
- AsExpression: (node, { sourceFile }) => {
46
- if (isLiteralType(node.type)) compareTypes(node.expression, node.type, "preferAsConst", sourceFile);
47
- },
48
- VariableDeclaration: (node, { sourceFile }) => {
49
- if (node.initializer && node.type && isLiteralType(node.type)) compareTypes(node.initializer, node.type, "preferAsConstAnnotation", sourceFile);
50
- }
51
- } };
52
- }
53
- });
54
- //#endregion
55
- export { asConstAssertions_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Prefer logical assignment operator shorthand expressions.";
3
- readonly id: "assignmentOperatorShorthands";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferShorthand", undefined>;
9
- export default _default;
@@ -1,45 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, hasSameTokens, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/assignmentOperatorShorthands.ts
5
- var assignmentOperatorShorthands_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Prefer logical assignment operator shorthand expressions.",
8
- id: "assignmentOperatorShorthands",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { preferShorthand: {
12
- primary: "Prefer the logical assignment operator shorthand `{{ operator }}`.",
13
- secondary: ["Logical assignment operators are more concise and express the intent more clearly.", "They were introduced in ES2021 and are supported in all modern environments."],
14
- suggestions: ["Use the shorthand operator `{{ operator }}`."]
15
- } },
16
- setup(context) {
17
- function getShorthand(kind) {
18
- switch (kind) {
19
- case ts$1.SyntaxKind.AmpersandAmpersandToken: return "&&=";
20
- case ts$1.SyntaxKind.BarBarToken: return "||=";
21
- case ts$1.SyntaxKind.QuestionQuestionToken: return "??=";
22
- default: return;
23
- }
24
- }
25
- return { visitors: { BinaryExpression: (node, { sourceFile }) => {
26
- if (node.operatorToken.kind !== ts$1.SyntaxKind.EqualsToken || !ts$1.isBinaryExpression(node.right)) return;
27
- const shorthand = getShorthand(node.right.operatorToken.kind);
28
- if (!shorthand) return;
29
- if (!hasSameTokens(node.left, node.right.left, sourceFile)) return;
30
- const range = getTSNodeRange(node, sourceFile);
31
- const fixedText = `${node.left.getText(sourceFile)} ${shorthand} ${node.right.right.getText(sourceFile)}`;
32
- context.report({
33
- data: { operator: shorthand },
34
- fix: {
35
- range,
36
- text: fixedText
37
- },
38
- message: "preferShorthand",
39
- range
40
- });
41
- } } };
42
- }
43
- });
44
- //#endregion
45
- export { assignmentOperatorShorthands_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports async functions that do not use await.";
3
- readonly id: "asyncFunctionAwaits";
4
- readonly presets: readonly ["logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "missingAwait", undefined>;
9
- export default _default;
@@ -1,53 +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
- import * as tsutils from "ts-api-utils";
5
- //#region src/rules/asyncFunctionAwaits.ts
6
- var asyncFunctionAwaits_default = ruleCreator.createRule(typescriptLanguage, {
7
- about: {
8
- description: "Reports async functions that do not use await.",
9
- id: "asyncFunctionAwaits",
10
- presets: ["logicalStrict"]
11
- },
12
- messages: { missingAwait: {
13
- primary: "This function is marked `async` but does not contain an `await` expression or return a Promise.",
14
- secondary: ["Async functions always wrap their return value in a Promise, which adds overhead if you're not using await.", "This may indicate incomplete implementation or leftover code after refactoring."],
15
- suggestions: ["Add an `await` expression if you need to wait for asynchronous operations.", "Remove the `async` keyword if the function doesn't need to be asynchronous."]
16
- } },
17
- setup(context) {
18
- function checkFunction(node, { sourceFile, typeChecker }) {
19
- const asyncModifier = node.modifiers?.find((modifier) => modifier.kind === ts$1.SyntaxKind.AsyncKeyword);
20
- if (!asyncModifier || node.asteriskToken || !node.body || isEmptyBody(node.body) || checkForAwait(node.body) || bodyReturnsThenable(node.body, typeChecker)) return;
21
- context.report({
22
- message: "missingAwait",
23
- range: getTSNodeRange(asyncModifier, sourceFile)
24
- });
25
- }
26
- return { visitors: {
27
- ArrowFunction: checkFunction,
28
- FunctionDeclaration: checkFunction,
29
- FunctionExpression: checkFunction,
30
- MethodDeclaration: checkFunction
31
- } };
32
- }
33
- });
34
- function bodyReturnsThenable(body, typeChecker) {
35
- if (!ts$1.isBlock(body)) return tsutils.isThenableType(typeChecker, body);
36
- function checkReturnStatements(node) {
37
- if (ts$1.isReturnStatement(node) && node.expression && tsutils.isThenableType(typeChecker, node.expression)) return true;
38
- if (tsutils.isFunctionScopeBoundary(node)) return false;
39
- return ts$1.forEachChild(node, checkReturnStatements);
40
- }
41
- return ts$1.forEachChild(body, checkReturnStatements);
42
- }
43
- function checkForAwait(node) {
44
- if (ts$1.isAwaitExpression(node)) return true;
45
- if (ts$1.isForOfStatement(node) && node.awaitModifier) return true;
46
- if (tsutils.isFunctionScopeBoundary(node)) return false;
47
- return ts$1.forEachChild(node, checkForAwait);
48
- }
49
- function isEmptyBody(body) {
50
- return ts$1.isBlock(body) && !body.statements.length;
51
- }
52
- //#endregion
53
- export { asyncFunctionAwaits_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using async functions as Promise executor functions.";
3
- readonly id: "asyncPromiseExecutors";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "asyncPromiseExecutor", undefined>;
9
- export default _default;