@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,265 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { AnyType, discriminateAnyType } from "./utils/discriminateAnyType.js";
3
- import { formatReportedType } from "./utils/formatReportedType.js";
4
- import { isUnsafeAssignment } from "./utils/isUnsafeAssignment.js";
5
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
6
- import * as ts$1 from "typescript";
7
- import * as tsutils from "ts-api-utils";
8
- //#region src/rules/anyAssignments.ts
9
- function isTypeAny(type) {
10
- return tsutils.isTypeFlagSet(type, ts$1.TypeFlags.Any) && !tsutils.isIntrinsicErrorType(type);
11
- }
12
- function isTypeAnyArray(type, checker) {
13
- if (!checker.isArrayType(type)) return false;
14
- const elementType = checker.getTypeArguments(type)[0];
15
- return elementType !== void 0 && isTypeAny(elementType);
16
- }
17
- function isTypeAnyOrUnknown(type) {
18
- return tsutils.isTypeFlagSet(type, ts$1.TypeFlags.Any | ts$1.TypeFlags.Unknown);
19
- }
20
- var anyAssignments_default = ruleCreator.createRule(typescriptLanguage, {
21
- about: {
22
- description: "Reports assigning a value with type `any` to variables and properties.",
23
- id: "anyAssignments",
24
- presets: ["logical", "logicalStrict"]
25
- },
26
- messages: {
27
- unsafeArrayDestructure: {
28
- primary: "Unsafe array destructuring of a value of type {{ type }}.",
29
- secondary: ["Destructuring an `any[]` array defeats TypeScript's type safety guarantees.", "This can allow unexpected types to propagate through your codebase, potentially causing runtime errors."],
30
- suggestions: ["Ensure the array has a well-defined, specific element type."]
31
- },
32
- unsafeArrayPatternFromTuple: {
33
- primary: "Unsafe array destructuring of a tuple element with type {{ type }}.",
34
- secondary: ["Destructuring a tuple with `any` elements defeats TypeScript's type safety guarantees.", "This can allow unexpected types to propagate through your codebase, potentially causing runtime errors."],
35
- suggestions: ["Ensure the tuple has well-defined, specific element types."]
36
- },
37
- unsafeArraySpread: {
38
- primary: "Unsafe spread of type `{{ sender }}` into array of type `{{ receiver }}`.",
39
- secondary: ["Spreading an `any[]` into a typed array defeats TypeScript's type safety guarantees.", "This can allow unexpected types to propagate through your codebase, potentially causing runtime errors."],
40
- suggestions: ["Ensure the spread array has compatible element types."]
41
- },
42
- unsafeAssignment: {
43
- primary: "Unsafe assignment of a value of type `{{ type }}`.",
44
- secondary: ["Assigning a value of type `any` or a similar unsafe type defeats TypeScript's type safety guarantees.", "This can allow unexpected types to propagate through your codebase, potentially causing runtime errors."],
45
- suggestions: ["Ensure the assigned value has a well-defined, specific type."]
46
- },
47
- unsafeAssignmentToVariable: {
48
- primary: "Unsafe assignment of type `{{ sender }}` to variable of type `{{ receiver }}`.",
49
- secondary: ["The variable's declared type does not safely accept the value being assigned.", "This can allow unexpected types to propagate through your codebase, potentially causing runtime errors."],
50
- suggestions: ["Adjust the type of the variable to match the assigned value, if appropriate.", "Otherwise, refine the assigned value to ensure it matches the expected type."]
51
- },
52
- unsafeObjectPattern: {
53
- primary: "Unsafe object destructuring of a property with type {{ type }}.",
54
- secondary: ["Destructuring an object with `any` properties defeats TypeScript's type safety guarantees.", "This can allow unexpected types to propagate through your codebase, potentially causing runtime errors."],
55
- suggestions: ["Ensure the object has well-defined, specific property types."]
56
- }
57
- },
58
- setup(context) {
59
- function checkArrayDestructureWorker(pattern, senderType, sourceFile, typeChecker) {
60
- if (isTypeAnyArray(senderType, typeChecker)) {
61
- context.report({
62
- data: { type: "`any[]`" },
63
- message: "unsafeArrayDestructure",
64
- range: {
65
- begin: pattern.getStart(sourceFile),
66
- end: pattern.getEnd()
67
- }
68
- });
69
- return true;
70
- }
71
- if (!typeChecker.isTupleType(senderType)) return false;
72
- const tupleElements = typeChecker.getTypeArguments(senderType);
73
- let didReport = false;
74
- for (let i = 0; i < pattern.elements.length; i++) {
75
- const element = pattern.elements[i];
76
- if (!element || ts$1.isOmittedExpression(element)) continue;
77
- if (element.dotDotDotToken) continue;
78
- const elementType = tupleElements[i];
79
- if (!elementType) continue;
80
- const name = element.name;
81
- if (isTypeAny(elementType)) {
82
- context.report({
83
- data: { type: "`any`" },
84
- message: "unsafeArrayPatternFromTuple",
85
- range: {
86
- begin: name.getStart(sourceFile),
87
- end: name.getEnd()
88
- }
89
- });
90
- didReport = true;
91
- } else if (ts$1.isArrayBindingPattern(name)) didReport = checkArrayDestructureWorker(name, elementType, sourceFile, typeChecker) || didReport;
92
- else if (ts$1.isObjectBindingPattern(name)) didReport = checkObjectDestructureWorker(name, elementType, sourceFile, typeChecker) || didReport;
93
- }
94
- return didReport;
95
- }
96
- function checkObjectDestructureWorker(pattern, senderType, sourceFile, typeChecker) {
97
- let didReport = false;
98
- for (const element of pattern.elements) {
99
- if (element.dotDotDotToken) continue;
100
- let key;
101
- const propertyName = element.propertyName ?? element.name;
102
- if (ts$1.isIdentifier(propertyName) || ts$1.isStringLiteral(propertyName) || ts$1.isNumericLiteral(propertyName)) key = propertyName.text;
103
- else if (ts$1.isComputedPropertyName(propertyName)) {
104
- const expression = propertyName.expression;
105
- if (ts$1.isStringLiteral(expression) || ts$1.isNoSubstitutionTemplateLiteral(expression)) key = expression.text;
106
- }
107
- if (key === void 0) continue;
108
- const propertySymbol = senderType.getProperty(key);
109
- if (!propertySymbol) continue;
110
- const propertyType = typeChecker.getTypeOfSymbolAtLocation(propertySymbol, pattern);
111
- const name = element.name;
112
- if (isTypeAny(propertyType)) {
113
- context.report({
114
- data: { type: "`any`" },
115
- message: "unsafeObjectPattern",
116
- range: {
117
- begin: name.getStart(sourceFile),
118
- end: name.getEnd()
119
- }
120
- });
121
- didReport = true;
122
- } else if (ts$1.isArrayBindingPattern(name)) didReport = checkArrayDestructureWorker(name, propertyType, sourceFile, typeChecker) || didReport;
123
- else if (ts$1.isObjectBindingPattern(name)) didReport = checkObjectDestructureWorker(name, propertyType, sourceFile, typeChecker) || didReport;
124
- }
125
- return didReport;
126
- }
127
- function checkArrayDestructure(pattern, senderType, sourceFile, typeChecker) {
128
- return checkArrayDestructureWorker(pattern, senderType, sourceFile, typeChecker);
129
- }
130
- function checkObjectDestructure(pattern, senderType, sourceFile, typeChecker) {
131
- return checkObjectDestructureWorker(pattern, senderType, sourceFile, typeChecker);
132
- }
133
- function checkAssignment(initializerType, declaredType, initializer, reportNode, sourceFile, typeChecker) {
134
- if (tsutils.isIntrinsicErrorType(initializerType)) return false;
135
- const anyType = discriminateAnyType(initializerType, typeChecker, initializer);
136
- if (declaredType === void 0) {
137
- if (anyType !== AnyType.Safe) {
138
- context.report({
139
- data: { type: anyType },
140
- message: "unsafeAssignment",
141
- range: {
142
- begin: reportNode.getStart(sourceFile),
143
- end: reportNode.getEnd()
144
- }
145
- });
146
- return true;
147
- }
148
- return false;
149
- }
150
- if (isTypeAnyOrUnknown(declaredType)) return false;
151
- const result = isUnsafeAssignment(initializerType, declaredType, initializer);
152
- if (!result) return false;
153
- context.report({
154
- data: {
155
- receiver: formatReportedType(result.receiver, typeChecker),
156
- sender: formatReportedType(result.sender, typeChecker)
157
- },
158
- message: "unsafeAssignmentToVariable",
159
- range: {
160
- begin: reportNode.getStart(sourceFile),
161
- end: reportNode.getEnd()
162
- }
163
- });
164
- return true;
165
- }
166
- return { visitors: {
167
- ArrayLiteralExpression: (node, { sourceFile, typeChecker }) => {
168
- for (const element of node.elements) {
169
- if (!ts$1.isSpreadElement(element)) continue;
170
- const spreadType = typeChecker.getTypeAtLocation(element.expression);
171
- if (!typeChecker.isArrayType(spreadType)) continue;
172
- const spreadElementType = typeChecker.getTypeArguments(spreadType)[0];
173
- if (!spreadElementType || !isTypeAny(spreadElementType)) continue;
174
- const parentType = typeChecker.getContextualType(node);
175
- if (!parentType || !typeChecker.isArrayType(parentType)) continue;
176
- const parentElementType = typeChecker.getTypeArguments(parentType)[0];
177
- if (!parentElementType || isTypeAnyOrUnknown(parentElementType)) continue;
178
- context.report({
179
- data: {
180
- receiver: typeChecker.typeToString(parentType),
181
- sender: typeChecker.typeToString(spreadType)
182
- },
183
- message: "unsafeArraySpread",
184
- range: {
185
- begin: element.getStart(sourceFile),
186
- end: element.getEnd()
187
- }
188
- });
189
- }
190
- },
191
- Parameter: (node, { sourceFile, typeChecker }) => {
192
- if (!node.initializer) return;
193
- const initializerType = typeChecker.getTypeAtLocation(node.initializer);
194
- if (ts$1.isArrayBindingPattern(node.name)) {
195
- checkArrayDestructure(node.name, initializerType, sourceFile, typeChecker);
196
- return;
197
- }
198
- if (ts$1.isObjectBindingPattern(node.name)) {
199
- checkObjectDestructure(node.name, initializerType, sourceFile, typeChecker);
200
- return;
201
- }
202
- checkAssignment(initializerType, node.type ? typeChecker.getTypeAtLocation(node.name) : void 0, node.initializer, node, sourceFile, typeChecker);
203
- },
204
- PropertyAssignment: (node, { sourceFile, typeChecker }) => {
205
- if (!isTypeAny(typeChecker.getTypeAtLocation(node.initializer))) return;
206
- if (!ts$1.isObjectLiteralExpression(node.parent)) return;
207
- const contextualType = typeChecker.getContextualType(node.parent);
208
- if (!contextualType) return;
209
- let key;
210
- if (ts$1.isIdentifier(node.name) || ts$1.isStringLiteral(node.name) || ts$1.isNumericLiteral(node.name)) key = node.name.text;
211
- if (key === void 0) return;
212
- const propertySymbol = contextualType.getProperty(key);
213
- if (!propertySymbol) return;
214
- if (isTypeAnyOrUnknown(typeChecker.getTypeOfSymbolAtLocation(propertySymbol, node))) return;
215
- context.report({
216
- data: { type: "any" },
217
- message: "unsafeAssignment",
218
- range: {
219
- begin: node.getStart(sourceFile),
220
- end: node.getEnd()
221
- }
222
- });
223
- },
224
- PropertyDeclaration: (node, { sourceFile, typeChecker }) => {
225
- if (!node.initializer) return;
226
- checkAssignment(typeChecker.getTypeAtLocation(node.initializer), node.type ? typeChecker.getTypeAtLocation(node.name) : void 0, node.initializer, node, sourceFile, typeChecker);
227
- },
228
- ShorthandPropertyAssignment: (node, { sourceFile, typeChecker }) => {
229
- if (!isTypeAny(typeChecker.getTypeAtLocation(node.name))) return;
230
- const parent = node.parent;
231
- if (!ts$1.isObjectLiteralExpression(parent)) return;
232
- const contextualType = typeChecker.getContextualType(parent);
233
- if (!contextualType) return;
234
- const propertySymbol = contextualType.getProperty(node.name.text);
235
- if (!propertySymbol) return;
236
- if (isTypeAnyOrUnknown(typeChecker.getTypeOfSymbolAtLocation(propertySymbol, node))) return;
237
- context.report({
238
- data: { type: "any" },
239
- message: "unsafeAssignment",
240
- range: {
241
- begin: node.getStart(sourceFile),
242
- end: node.getEnd()
243
- }
244
- });
245
- },
246
- VariableDeclaration: (node, { sourceFile, typeChecker }) => {
247
- if (!node.initializer) return;
248
- const initializerType = typeChecker.getTypeAtLocation(node.initializer);
249
- if (ts$1.isArrayBindingPattern(node.name)) {
250
- checkArrayDestructure(node.name, initializerType, sourceFile, typeChecker);
251
- return;
252
- }
253
- if (ts$1.isObjectBindingPattern(node.name)) {
254
- checkObjectDestructure(node.name, initializerType, sourceFile, typeChecker);
255
- return;
256
- }
257
- checkAssignment(initializerType, node.type ? typeChecker.getTypeAtLocation(node.name) : void 0, node.initializer, node, sourceFile, typeChecker);
258
- }
259
- } };
260
- }
261
- });
262
- //#endregion
263
- export { anyAssignments_default as default };
264
-
265
- //# sourceMappingURL=anyAssignments.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports calling a value with type `any`.";
3
- readonly id: "anyCalls";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unsafeCall" | "unsafeNew" | "unsafeTemplateTag", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=anyCalls.d.ts.map
@@ -1,68 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
3
- import { isBuiltinSymbolLike } from "./utils/isBuiltinSymbolLike.js";
4
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
5
- import * as ts$1 from "typescript";
6
- import * as tsutils from "ts-api-utils";
7
- //#region src/rules/anyCalls.ts
8
- var anyCalls_default = ruleCreator.createRule(typescriptLanguage, {
9
- about: {
10
- description: "Reports calling a value with type `any`.",
11
- id: "anyCalls",
12
- presets: ["logical", "logicalStrict"]
13
- },
14
- messages: {
15
- unsafeCall: {
16
- primary: "Unsafe call of {{ type }} typed value.",
17
- secondary: ["Calling a value typed as `any` or `Function` bypasses TypeScript's type checking.", "TypeScript cannot verify that the value is actually a function, what parameters it expects, or what it returns."],
18
- suggestions: ["Ensure the called value has a well-defined function type."]
19
- },
20
- unsafeNew: {
21
- primary: "Unsafe construction of {{ type }} typed value.",
22
- secondary: ["Constructing a value typed as `any` or `Function` bypasses TypeScript's type checking.", "TypeScript cannot verify that the value is actually a constructor, what parameters it expects, or what it returns."],
23
- suggestions: ["Ensure the constructed value has a well-defined constructor type."]
24
- },
25
- unsafeTemplateTag: {
26
- primary: "Unsafe use of {{ type }} typed template tag.",
27
- secondary: ["Using a value typed as `any` or `Function` as a template tag bypasses TypeScript's type checking.", "TypeScript cannot verify that the value is a valid template tag function."],
28
- suggestions: ["Ensure the template tag has a well-defined function type."]
29
- }
30
- },
31
- setup(context) {
32
- function checkNode(node, { program, sourceFile, typeChecker }, message, allowVoid) {
33
- const type = getConstrainedTypeAtLocation(node, typeChecker);
34
- if (tsutils.isTypeFlagSet(type, ts$1.TypeFlags.Any)) {
35
- if (tsutils.isIntrinsicErrorType(type)) return;
36
- context.report({
37
- data: { type: "`any`" },
38
- message,
39
- range: getTSNodeRange(node, sourceFile)
40
- });
41
- return;
42
- }
43
- if (!isBuiltinSymbolLike(program, type, "Function") || type.getConstructSignatures().length) return;
44
- const callSignatures = type.getCallSignatures();
45
- if (callSignatures.length && (!allowVoid || callSignatures.some((signature) => !tsutils.isIntrinsicVoidType(signature.getReturnType())))) return;
46
- context.report({
47
- data: { type: "`Function`" },
48
- message,
49
- range: getTSNodeRange(node, sourceFile)
50
- });
51
- }
52
- return { visitors: {
53
- CallExpression: (node, services) => {
54
- if (node.expression.kind !== ts$1.SyntaxKind.ImportKeyword) checkNode(node.expression, services, "unsafeCall");
55
- },
56
- NewExpression: (node, services) => {
57
- checkNode(node.expression, services, "unsafeNew", true);
58
- },
59
- TaggedTemplateExpression: (node, services) => {
60
- checkNode(node.tag, services, "unsafeTemplateTag");
61
- }
62
- } };
63
- }
64
- });
65
- //#endregion
66
- export { anyCalls_default as default };
67
-
68
- //# sourceMappingURL=anyCalls.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports member access on a value with type `any`.";
3
- readonly id: "anyMemberAccess";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unsafeComputedMemberAccess" | "unsafeMemberAccess", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=anyMemberAccess.d.ts.map
@@ -1,85 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
3
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import * as ts$1 from "typescript";
5
- import * as tsutils from "ts-api-utils";
6
- //#region src/rules/anyMemberAccess.ts
7
- var anyMemberAccess_default = ruleCreator.createRule(typescriptLanguage, {
8
- about: {
9
- description: "Reports member access on a value with type `any`.",
10
- id: "anyMemberAccess",
11
- presets: ["logical", "logicalStrict"]
12
- },
13
- messages: {
14
- unsafeComputedMemberAccess: {
15
- primary: "Computed key is {{ type }} typed.",
16
- secondary: ["Using a value typed as `any` as a computed property key bypasses TypeScript's type checking.", "TypeScript cannot verify that the key is valid for the object being accessed."],
17
- suggestions: ["Ensure the computed key has a well-defined type."]
18
- },
19
- unsafeMemberAccess: {
20
- primary: "Unsafe member access on {{ type }} typed value.",
21
- secondary: ["Accessing a member of a value typed as `any` bypasses TypeScript's type checking.", "TypeScript cannot verify that the member exists or what type it has."],
22
- suggestions: ["Ensure the accessed value has a well-defined type with known properties."]
23
- }
24
- },
25
- setup(context) {
26
- const reportedChains = /* @__PURE__ */ new WeakSet();
27
- function isInHeritageClause(node) {
28
- let current = node.parent;
29
- while (current) {
30
- if (ts$1.isHeritageClause(current)) return true;
31
- current = current.parent;
32
- }
33
- return false;
34
- }
35
- function findRootAnyAccess(node, typeChecker) {
36
- const objectType = getConstrainedTypeAtLocation(node.expression, typeChecker);
37
- if (!tsutils.isTypeFlagSet(objectType, ts$1.TypeFlags.Any)) return;
38
- if (ts$1.isPropertyAccessExpression(node.expression) || ts$1.isElementAccessExpression(node.expression)) {
39
- const deeper = findRootAnyAccess(node.expression, typeChecker);
40
- if (deeper) return deeper;
41
- }
42
- return node;
43
- }
44
- function markChainAsReported(node) {
45
- reportedChains.add(node);
46
- if (ts$1.isPropertyAccessExpression(node.expression) || ts$1.isElementAccessExpression(node.expression)) markChainAsReported(node.expression);
47
- }
48
- function checkMemberExpression(node, sourceFile, typeChecker) {
49
- if (reportedChains.has(node) || isInHeritageClause(node)) return;
50
- const rootAccess = findRootAnyAccess(node, typeChecker);
51
- if (!rootAccess) return;
52
- markChainAsReported(node);
53
- const objectType = getConstrainedTypeAtLocation(rootAccess.expression, typeChecker);
54
- const reportNode = rootAccess.kind === ts$1.SyntaxKind.PropertyAccessExpression ? rootAccess.name : rootAccess.argumentExpression;
55
- context.report({
56
- data: { type: tsutils.isIntrinsicErrorType(objectType) ? "`error`" : "`any`" },
57
- message: "unsafeMemberAccess",
58
- range: getTSNodeRange(reportNode, sourceFile)
59
- });
60
- }
61
- function checkComputedKey(node, sourceFile, typeChecker) {
62
- const keyNode = node.argumentExpression;
63
- if (ts$1.isStringLiteral(keyNode) || ts$1.isNumericLiteral(keyNode) || ts$1.isNoSubstitutionTemplateLiteral(keyNode)) return;
64
- const keyType = getConstrainedTypeAtLocation(keyNode, typeChecker);
65
- if (tsutils.isTypeFlagSet(keyType, ts$1.TypeFlags.Any)) context.report({
66
- data: { type: tsutils.isIntrinsicErrorType(keyType) ? "`error`" : "`any`" },
67
- message: "unsafeComputedMemberAccess",
68
- range: getTSNodeRange(keyNode, sourceFile)
69
- });
70
- }
71
- return { visitors: {
72
- ElementAccessExpression: (node, { sourceFile, typeChecker }) => {
73
- checkMemberExpression(node, sourceFile, typeChecker);
74
- checkComputedKey(node, sourceFile, typeChecker);
75
- },
76
- PropertyAccessExpression: (node, { sourceFile, typeChecker }) => {
77
- checkMemberExpression(node, sourceFile, typeChecker);
78
- }
79
- } };
80
- }
81
- });
82
- //#endregion
83
- export { anyMemberAccess_default as default };
84
-
85
- //# sourceMappingURL=anyMemberAccess.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports returning a value with type `any` from a function.";
3
- readonly id: "anyReturns";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unsafeReturn" | "unsafeReturnAssignment" | "unsafeReturnThis", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=anyReturns.d.ts.map
@@ -1,102 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { AnyType, discriminateAnyType } from "./utils/discriminateAnyType.js";
3
- import { isUnsafeAssignment } from "./utils/isUnsafeAssignment.js";
4
- import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
5
- import { getThisExpression } from "./utils/getThisExpression.js";
6
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
7
- import ts, { SyntaxKind } from "typescript";
8
- import * as tsutils from "ts-api-utils";
9
- import { nullThrows } from "@flint.fyi/utils";
10
- //#region src/rules/anyReturns.ts
11
- var anyReturns_default = ruleCreator.createRule(typescriptLanguage, {
12
- about: {
13
- description: "Reports returning a value with type `any` from a function.",
14
- id: "anyReturns",
15
- presets: ["logical", "logicalStrict"]
16
- },
17
- messages: {
18
- unsafeReturn: {
19
- primary: "Unsafe return of a value of type `{{ type }}`.",
20
- secondary: ["Returning a value of type `any` or a similar unsafe type defeats TypeScript's type safety guarantees.", "This can allow unexpected types to propagate through your codebase, potentially causing runtime errors."],
21
- suggestions: ["Ensure the returned value has a well-defined, specific type."]
22
- },
23
- unsafeReturnAssignment: {
24
- primary: "Unsafe return of type `{{ sender }}` from function with return type `{{ receiver }}`.",
25
- secondary: ["The function's declared return type does not safely accept the value being returned.", "This can allow unexpected types to propagate through your codebase, potentially causing runtime errors."],
26
- suggestions: ["Adjust the return type of the function to match the returned value, if appropriate.", "Otherwise, refine the returned value to ensure it matches the expected return type."]
27
- },
28
- unsafeReturnThis: {
29
- primary: "Unsafe return of a value of type `{{ type }}`. `this` is typed as `any`.",
30
- secondary: ["Returning `this` when it is implicitly typed as `any` introduces type-unsafe behavior.", "This can allow unexpected types to propagate through your codebase, potentially causing runtime errors."],
31
- suggestions: ["Enable the `noImplicitThis` compiler option to enforce explicit `this` types.", "Add an explicit `this` parameter to the function to clarify its type."]
32
- }
33
- },
34
- setup(context) {
35
- function checkReturn(returnNode, reportingNode, { program, sourceFile, typeChecker }) {
36
- const type = typeChecker.getTypeAtLocation(returnNode);
37
- const functionNode = ts.findAncestor(returnNode, tsutils.isFunctionLikeDeclaration);
38
- if (!functionNode) return;
39
- const returnNodeType = getConstrainedTypeAtLocation(returnNode, typeChecker);
40
- const anyType = tsutils.isIntrinsicErrorType(returnNodeType) ? AnyType.Error : discriminateAnyType(type, typeChecker, returnNode);
41
- let functionType = functionNode.kind === SyntaxKind.FunctionExpression || functionNode.kind === SyntaxKind.ArrowFunction ? typeChecker.getContextualType(functionNode) : typeChecker.getTypeAtLocation(functionNode);
42
- functionType ??= typeChecker.getTypeAtLocation(functionNode);
43
- const callSignatures = tsutils.getCallSignaturesOfType(functionType);
44
- if (functionNode.type) for (const signature of callSignatures) {
45
- const signatureReturnType = signature.getReturnType();
46
- if (returnNodeType === signatureReturnType || tsutils.isTypeFlagSet(signatureReturnType, ts.TypeFlags.Any | ts.TypeFlags.Unknown)) return;
47
- if (tsutils.includesModifier(functionNode.modifiers, SyntaxKind.AsyncKeyword)) {
48
- const awaitedSignatureReturnType = typeChecker.getAwaitedType(signatureReturnType);
49
- if (typeChecker.getAwaitedType(returnNodeType) === awaitedSignatureReturnType || awaitedSignatureReturnType && tsutils.isTypeFlagSet(awaitedSignatureReturnType, ts.TypeFlags.Any | ts.TypeFlags.Unknown)) return;
50
- }
51
- }
52
- if (anyType !== AnyType.Safe) {
53
- for (const signature of callSignatures) {
54
- const functionReturnType = signature.getReturnType();
55
- if ((anyType === AnyType.Any || anyType === AnyType.Error) && tsutils.isTypeFlagSet(functionReturnType, ts.TypeFlags.Unknown)) return;
56
- if (anyType === AnyType.AnyArray && typeChecker.isArrayType(functionReturnType) && tsutils.isTypeFlagSet(nullThrows(typeChecker.getTypeArguments(functionReturnType)[0], "Array type should have at least one type argument"), ts.TypeFlags.Unknown)) return;
57
- const awaitedType = typeChecker.getAwaitedType(functionReturnType);
58
- if (awaitedType && anyType === AnyType.PromiseAny && tsutils.isTypeFlagSet(awaitedType, ts.TypeFlags.Unknown)) return;
59
- }
60
- if (anyType === AnyType.PromiseAny && !tsutils.includesModifier(functionNode.modifiers, SyntaxKind.AsyncKeyword)) return;
61
- let message = "unsafeReturn";
62
- if (!tsutils.isStrictCompilerOptionEnabled(program.getCompilerOptions(), "noImplicitThis")) {
63
- const thisExpression = getThisExpression(returnNode);
64
- if (thisExpression && tsutils.isTypeFlagSet(getConstrainedTypeAtLocation(thisExpression, typeChecker), ts.TypeFlags.Any)) message = "unsafeReturnThis";
65
- }
66
- context.report({
67
- data: { type: anyType },
68
- message,
69
- range: getTSNodeRange(reportingNode, sourceFile)
70
- });
71
- return;
72
- }
73
- const signature = functionType.getCallSignatures().at(0);
74
- if (signature) {
75
- const result = isUnsafeAssignment(returnNodeType, signature.getReturnType(), returnNode);
76
- if (!result) return;
77
- const { receiver, sender } = result;
78
- context.report({
79
- data: {
80
- receiver: typeChecker.typeToString(receiver),
81
- sender: typeChecker.typeToString(sender)
82
- },
83
- message: "unsafeReturnAssignment",
84
- range: getTSNodeRange(reportingNode, sourceFile)
85
- });
86
- return;
87
- }
88
- }
89
- return { visitors: {
90
- ArrowFunction: (node, fileService) => {
91
- if (node.body.kind !== SyntaxKind.Block) checkReturn(node.body, node.body, fileService);
92
- },
93
- ReturnStatement: (node, fileService) => {
94
- if (node.expression != null) checkReturn(node.expression, node, fileService);
95
- }
96
- } };
97
- }
98
- });
99
- //#endregion
100
- export { anyReturns_default as default };
101
-
102
- //# sourceMappingURL=anyReturns.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using the arguments object instead of rest parameters.";
3
- readonly id: "arguments";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferRestParameters", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=arguments.d.ts.map
@@ -1,38 +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/arguments.ts
5
- function isNonArrowFunctionBoundary(node) {
6
- if (ts$1.isArrowFunction(node)) return "quit";
7
- return ts$1.isFunctionDeclaration(node) || ts$1.isFunctionExpression(node) || ts$1.isMethodDeclaration(node) || ts$1.isGetAccessorDeclaration(node) || ts$1.isSetAccessorDeclaration(node) || ts$1.isConstructorDeclaration(node);
8
- }
9
- var arguments_default = ruleCreator.createRule(typescriptLanguage, {
10
- about: {
11
- description: "Reports using the arguments object instead of rest parameters.",
12
- id: "arguments",
13
- presets: ["logical", "logicalStrict"]
14
- },
15
- messages: { preferRestParameters: {
16
- primary: "Use rest parameters instead of the `arguments` object.",
17
- secondary: ["The `arguments` object is an array-like object that doesn't have Array methods like `map`, `filter`, or `forEach`.", "Rest parameters provide a real Array, making it easier to work with variadic functions."],
18
- suggestions: ["Replace usage of `arguments` with a rest parameter like `...args`."]
19
- } },
20
- setup(context) {
21
- return { visitors: { Identifier: (node, { sourceFile, typeChecker }) => {
22
- if (node.text !== "arguments") return;
23
- const { parent } = node;
24
- if ((ts$1.isPropertyAccessExpression(parent) || ts$1.isPropertyAssignment(parent) || ts$1.isShorthandPropertyAssignment(parent) || ts$1.isParameter(parent) || ts$1.isVariableDeclaration(parent) || ts$1.isPropertyDeclaration(parent) || ts$1.isBindingElement(parent) || ts$1.isPropertySignature(parent)) && parent.name === node) return;
25
- if (!ts$1.findAncestor(node, isNonArrowFunctionBoundary)) return;
26
- const symbol = typeChecker.getSymbolAtLocation(node);
27
- if (!symbol || symbol.getDeclarations()?.some((declaration) => ts$1.isParameter(declaration) || ts$1.isVariableDeclaration(declaration) || ts$1.isPropertyDeclaration(declaration) || ts$1.isBindingElement(declaration))) return;
28
- context.report({
29
- message: "preferRestParameters",
30
- range: getTSNodeRange(node, sourceFile)
31
- });
32
- } } };
33
- }
34
- });
35
- //#endregion
36
- export { arguments_default as default };
37
-
38
- //# sourceMappingURL=arguments.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports missing return statements in callbacks of array methods.";
3
- readonly id: "arrayCallbackReturns";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "missingReturn", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=arrayCallbackReturns.d.ts.map