@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,63 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- //#region src/rules/getterReturns.ts
5
- var getterReturns_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports getter functions that do not return values.",
8
- id: "getterReturns",
9
- presets: ["javascript"]
10
- },
11
- messages: { missingReturn: {
12
- primary: "This getter implicitly returns `undefined` because it does not explicitly `return` a value.",
13
- secondary: ["A `get` accessor is expected to return a value when the property is accessed.", "A getter without a return statement will implicitly return `undefined`, which is likely unintentional."],
14
- suggestions: ["Add a return statement with the desired value.", "If the property should not have a value, consider using a regular method instead."]
15
- } },
16
- setup(context) {
17
- return { visitors: { GetAccessor: (node, { sourceFile }) => {
18
- if (node.body && !statementsReturnValue(node.body.statements)) context.report({
19
- message: "missingReturn",
20
- range: {
21
- begin: node.name.getStart(sourceFile),
22
- end: node.name.getEnd()
23
- }
24
- });
25
- } } };
26
- }
27
- });
28
- function ifStatementReturnsValue(statement) {
29
- return !!(statement.elseStatement && statementReturnsValue(statement.thenStatement) && statementReturnsValue(statement.elseStatement));
30
- }
31
- function statementReturnsValue(statement) {
32
- switch (statement.kind) {
33
- case SyntaxKind.Block: return statementsReturnValue(statement.statements);
34
- case SyntaxKind.IfStatement: return ifStatementReturnsValue(statement);
35
- case SyntaxKind.ReturnStatement: return statement.expression !== void 0;
36
- case SyntaxKind.SwitchStatement: return switchStatementReturnsValue(statement);
37
- case SyntaxKind.ThrowStatement: return true;
38
- case SyntaxKind.TryStatement: return tryStatementReturnsValue(statement);
39
- default: return false;
40
- }
41
- }
42
- function statementsReturnValue(statements) {
43
- return statements.some(statementReturnsValue);
44
- }
45
- function switchStatementReturnsValue(statement) {
46
- const clauses = statement.caseBlock.clauses;
47
- if (!clauses.length) return false;
48
- let hasDefault = false;
49
- for (const clause of clauses) {
50
- if (clause.kind === SyntaxKind.DefaultClause) hasDefault = true;
51
- if (!statementsReturnValue(clause.statements)) return false;
52
- }
53
- return hasDefault;
54
- }
55
- function tryStatementReturnsValue(statement) {
56
- if (statement.finallyBlock && statementsReturnValue(statement.finallyBlock.statements)) return true;
57
- const tryReturns = statementsReturnValue(statement.tryBlock.statements);
58
- if (!statement.catchClause) return tryReturns;
59
- const catchReturns = statementsReturnValue(statement.catchClause.block.statements);
60
- return tryReturns && catchReturns;
61
- }
62
- //#endregion
63
- export { getterReturns_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports attempting to assign to read-only global variables such as undefined, NaN, Infinity, Object, etc.";
3
- readonly id: "globalAssignments";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noGlobalAssign", undefined>;
9
- export default _default;
@@ -1,45 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, isGlobalVariable, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- //#region src/rules/globalAssignments.ts
6
- var globalAssignments_default = ruleCreator.createRule(typescriptLanguage, {
7
- about: {
8
- description: "Reports attempting to assign to read-only global variables such as undefined, NaN, Infinity, Object, etc.",
9
- id: "globalAssignments",
10
- presets: ["javascript"]
11
- },
12
- messages: { noGlobalAssign: {
13
- primary: "Read-only global variables should not be reassigned or modified.",
14
- secondary: [
15
- "Global variables like undefined, NaN, Infinity, and built-in objects like Object and Array are read-only and should not be modified.",
16
- "Attempting to reassign these globals can lead to confusing behavior and potential bugs in your code.",
17
- "In strict mode, reassigning these globals will throw a TypeError at runtime."
18
- ],
19
- suggestions: ["Use a different variable name instead of shadowing or reassigning globals.", "If you need a similar name, consider using a more specific name that doesn't conflict with global variables."]
20
- } },
21
- setup(context) {
22
- return { visitors: {
23
- BinaryExpression: (node, { program, sourceFile, typeChecker }) => {
24
- if (tsutils.isAssignmentKind(node.operatorToken.kind) && isGlobalVariable(node.left, typeChecker, program)) context.report({
25
- message: "noGlobalAssign",
26
- range: getTSNodeRange(node.left, sourceFile)
27
- });
28
- },
29
- PostfixUnaryExpression: (node, { program, sourceFile, typeChecker }) => {
30
- if (isGlobalVariable(node.operand, typeChecker, program)) context.report({
31
- message: "noGlobalAssign",
32
- range: getTSNodeRange(node.operand, sourceFile)
33
- });
34
- },
35
- PrefixUnaryExpression: (node, { program, sourceFile, typeChecker }) => {
36
- if ((node.operator === SyntaxKind.PlusPlusToken || node.operator === SyntaxKind.MinusMinusToken) && isGlobalVariable(node.operand, typeChecker, program)) context.report({
37
- message: "noGlobalAssign",
38
- range: getTSNodeRange(node.operand, sourceFile)
39
- });
40
- }
41
- } };
42
- }
43
- });
44
- //#endregion
45
- export { globalAssignments_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports calling global objects like Math, JSON, or Reflect as functions.";
3
- readonly id: "globalObjectCalls";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noGlobalObjectCall", undefined>;
9
- export default _default;
@@ -1,40 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- //#region src/rules/globalObjectCalls.ts
5
- const globalObjects = /* @__PURE__ */ new Set([
6
- "Atomics",
7
- "JSON",
8
- "Math",
9
- "Reflect"
10
- ]);
11
- var globalObjectCalls_default = ruleCreator.createRule(typescriptLanguage, {
12
- about: {
13
- description: "Reports calling global objects like Math, JSON, or Reflect as functions.",
14
- id: "globalObjectCalls",
15
- presets: ["javascript"]
16
- },
17
- messages: { noGlobalObjectCall: {
18
- primary: "{{ name }} is not a function and cannot be called directly.",
19
- secondary: ["{{ name }} is a built-in global object that provides utility methods and properties.", "It is not a constructor or function and cannot be called or instantiated."],
20
- suggestions: ["Use the static methods available on {{ name }} instead (e.g., {{ name }}.methodName())."]
21
- } },
22
- setup(context) {
23
- function reportGlobalObjectCall(expression, name, sourceFile) {
24
- context.report({
25
- data: { name },
26
- message: "noGlobalObjectCall",
27
- range: getTSNodeRange(expression, sourceFile)
28
- });
29
- }
30
- function checkNode({ expression }, { sourceFile }) {
31
- if (expression.kind === SyntaxKind.Identifier && globalObjects.has(expression.text)) reportGlobalObjectCall(expression, expression.text, sourceFile);
32
- }
33
- return { visitors: {
34
- CallExpression: checkNode,
35
- NewExpression: checkNode
36
- } };
37
- }
38
- });
39
- //#endregion
40
- export { globalObjectCalls_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using window, self, or global instead of globalThis.";
3
- readonly id: "globalThisAliases";
4
- readonly presets: readonly ["stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferGlobalThis", undefined>;
9
- export default _default;
@@ -1,45 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { declarationIncludesGlobal, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { isPropertyAccessExpression, isShorthandPropertyAssignment } from "typescript";
4
- //#region src/rules/globalThisAliases.ts
5
- const globalAliases = /* @__PURE__ */ new Set([
6
- "global",
7
- "self",
8
- "window"
9
- ]);
10
- function isOnlyGlobalDeclaration(node, typeChecker, program) {
11
- const symbol = typeChecker.getSymbolAtLocation(node);
12
- if (!symbol) return false;
13
- const declarations = symbol.getDeclarations();
14
- if (!declarations?.length) return false;
15
- return declarations.every((declaration) => declarationIncludesGlobal(declaration, program));
16
- }
17
- function isPropertyAccess(node) {
18
- return isPropertyAccessExpression(node.parent) && node.parent.name === node;
19
- }
20
- function isPropertyShorthand(node) {
21
- return isShorthandPropertyAssignment(node.parent) && node.parent.name === node;
22
- }
23
- var globalThisAliases_default = ruleCreator.createRule(typescriptLanguage, {
24
- about: {
25
- description: "Reports using window, self, or global instead of globalThis.",
26
- id: "globalThisAliases",
27
- presets: ["stylisticStrict"]
28
- },
29
- messages: { preferGlobalThis: {
30
- primary: "Prefer the standard `globalThis` over the platform-specific `{{ name }}` for accessing the global object.",
31
- secondary: ["`globalThis` is the standard way to access the global object across all JavaScript environments.", "Using `window`, `self`, or `global` ties your code to specific environments (browser, web worker, or Node.js)."],
32
- suggestions: ["Replace `{{ name }}` with `globalThis`."]
33
- } },
34
- setup(context) {
35
- return { visitors: { Identifier: (node, { program, sourceFile, typeChecker }) => {
36
- if (globalAliases.has(node.text) && !isPropertyAccess(node) && !isPropertyShorthand(node) && isOnlyGlobalDeclaration(node, typeChecker, program)) context.report({
37
- data: { name: node.text },
38
- message: "preferGlobalThis",
39
- range: getTSNodeRange(node, sourceFile)
40
- });
41
- } } };
42
- }
43
- });
44
- //#endregion
45
- export { globalThisAliases_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using string arguments in setTimeout, setInterval, setImmediate, execScript, or the Function constructor.";
3
- readonly id: "impliedEvals";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "functionConstructor" | "impliedEval", undefined>;
9
- export default _default;
@@ -1,128 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isBuiltinSymbolLike } from "./utils/isBuiltinSymbolLike.js";
3
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import { SignatureKind, SymbolFlags, SyntaxKind, TypeFlags, isElementAccessExpression, isIdentifier, isPropertyAccessExpression, isStringLiteral } from "typescript";
5
- import * as tsutils from "ts-api-utils";
6
- //#region src/rules/impliedEvals.ts
7
- const globalCandidates = /* @__PURE__ */ new Set([
8
- "global",
9
- "globalThis",
10
- "window"
11
- ]);
12
- const evalLikeFunctions = /* @__PURE__ */ new Set([
13
- "execScript",
14
- "setImmediate",
15
- "setInterval",
16
- "setTimeout"
17
- ]);
18
- function getCalleeName(node) {
19
- switch (node.kind) {
20
- case SyntaxKind.ElementAccessExpression:
21
- if (isIdentifier(node.expression) && globalCandidates.has(node.expression.text) && isStringLiteral(node.argumentExpression)) return node.argumentExpression.text;
22
- break;
23
- case SyntaxKind.Identifier: return node.text;
24
- case SyntaxKind.PropertyAccessExpression:
25
- if (isIdentifier(node.expression) && globalCandidates.has(node.expression.text)) return node.name.text;
26
- break;
27
- }
28
- }
29
- function isBind(node) {
30
- switch (node.kind) {
31
- case SyntaxKind.Identifier: return node.text === "bind";
32
- case SyntaxKind.PropertyAccessExpression: return isBind(node.name);
33
- default: return false;
34
- }
35
- }
36
- function isDefinitelyString(type) {
37
- if (tsutils.isTypeFlagSet(type, TypeFlags.Any | TypeFlags.Unknown | TypeFlags.Never)) return false;
38
- if (type.isUnion()) return type.types.every(isDefinitelyString);
39
- return tsutils.isTypeFlagSet(type, TypeFlags.StringLike);
40
- }
41
- function isFunction$1(node, typeChecker, program) {
42
- switch (node.kind) {
43
- case SyntaxKind.ArrowFunction:
44
- case SyntaxKind.FunctionDeclaration:
45
- case SyntaxKind.FunctionExpression: return true;
46
- case SyntaxKind.CallExpression:
47
- if (isBind(node.expression)) return true;
48
- return !isDefinitelyString(typeChecker.getTypeAtLocation(node)) && isFunctionType(node, typeChecker, program);
49
- case SyntaxKind.NoSubstitutionTemplateLiteral:
50
- case SyntaxKind.StringLiteral:
51
- case SyntaxKind.TemplateExpression: return false;
52
- default: return !isDefinitelyString(typeChecker.getTypeAtLocation(node)) && isFunctionType(node, typeChecker, program);
53
- }
54
- }
55
- function isFunctionType(node, typeChecker, program) {
56
- const type = typeChecker.getTypeAtLocation(node);
57
- if (tsutils.isTypeFlagSet(type, TypeFlags.Any | TypeFlags.Unknown) || isBuiltinSymbolLike(program, type, "Function")) return true;
58
- const symbol = type.getSymbol();
59
- if (symbol && tsutils.isSymbolFlagSet(symbol, SymbolFlags.Function | SymbolFlags.Method)) return true;
60
- return !!typeChecker.getSignaturesOfType(type, SignatureKind.Call).length;
61
- }
62
- function isReferenceToGlobalFunction(node, typeChecker, program) {
63
- if (isPropertyAccessExpression(node.expression) || isElementAccessExpression(node.expression)) return true;
64
- const symbol = typeChecker.getSymbolAtLocation(node.expression);
65
- if (!symbol) return true;
66
- return !!symbol.getDeclarations()?.some((declaration) => {
67
- const sourceFile = declaration.getSourceFile();
68
- return program.isSourceFileDefaultLibrary(sourceFile) || sourceFile.fileName.includes("node_modules/@types/node/") || /\/lib\.[^/]*\.d\.ts$/.test(sourceFile.fileName);
69
- });
70
- }
71
- var impliedEvals_default = ruleCreator.createRule(typescriptLanguage, {
72
- about: {
73
- description: "Reports using string arguments in setTimeout, setInterval, setImmediate, execScript, or the Function constructor.",
74
- id: "impliedEvals",
75
- presets: ["logical", "logicalStrict"]
76
- },
77
- messages: {
78
- functionConstructor: {
79
- primary: "Avoid using the unsafe Function constructor to create functions.",
80
- secondary: ["The Function constructor evaluates strings as code, similar to eval().", "This makes the code harder to analyze, optimize, and can introduce security vulnerabilities."],
81
- suggestions: ["Use a function expression or arrow function instead."]
82
- },
83
- impliedEval: {
84
- primary: "Avoid passing unsafe strings to {{ name }}; pass a function instead.",
85
- secondary: ["Passing a string to {{ name }} causes it to be evaluated as code, similar to eval().", "This makes the code harder to analyze, optimize, and can introduce security vulnerabilities."],
86
- suggestions: ["Pass a function expression or arrow function as the first argument."]
87
- }
88
- },
89
- setup(context) {
90
- function checkCalleeFunction(node, { program, sourceFile, typeChecker }) {
91
- if (!node.arguments?.length) return;
92
- if (!isBuiltinSymbolLike(program, typeChecker.getTypeAtLocation(node.expression), "FunctionConstructor")) return;
93
- context.report({
94
- message: "functionConstructor",
95
- range: getTSNodeRange(node.expression, sourceFile)
96
- });
97
- }
98
- function checkCalleeEval(node, calleeName, { program, sourceFile, typeChecker }) {
99
- const args = node.arguments;
100
- if (!args?.length) return;
101
- const handler = args[0];
102
- if (!evalLikeFunctions.has(calleeName) || isFunction$1(handler, typeChecker, program) || !isReferenceToGlobalFunction(node, typeChecker, program)) return;
103
- context.report({
104
- data: { name: calleeName },
105
- message: "impliedEval",
106
- range: getTSNodeRange(handler, sourceFile)
107
- });
108
- }
109
- function checkNode(node, services) {
110
- const calleeName = getCalleeName(node.expression);
111
- switch (calleeName) {
112
- case "Function":
113
- checkCalleeFunction(node, services);
114
- break;
115
- case void 0: return;
116
- default:
117
- checkCalleeEval(node, calleeName, services);
118
- break;
119
- }
120
- }
121
- return { visitors: {
122
- CallExpression: checkNode,
123
- NewExpression: checkNode
124
- } };
125
- }
126
- });
127
- //#endregion
128
- export { impliedEvals_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports empty named import blocks.";
3
- readonly id: "importEmptyBlocks";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noEmptyNamedBlocksOnly" | "noEmptyNamedBlocksWithOther", undefined>;
9
- export default _default;
@@ -1,51 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- //#region src/rules/importEmptyBlocks.ts
5
- var importEmptyBlocks_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports empty named import blocks.",
8
- id: "importEmptyBlocks",
9
- presets: ["logical", "logicalStrict"]
10
- },
11
- messages: {
12
- noEmptyNamedBlocksOnly: {
13
- primary: "Empty named import blocks are unnecessary.",
14
- secondary: ["An empty `{ }` in an import statement has no effect and can be removed."],
15
- suggestions: ["Remove the entire import statement.", "Convert to a side-effect only import."]
16
- },
17
- noEmptyNamedBlocksWithOther: {
18
- primary: "Empty named import blocks are unnecessary.",
19
- secondary: ["An empty `{ }` in an import statement has no effect and can be removed."],
20
- suggestions: ["Remove the empty block."]
21
- }
22
- },
23
- setup(context) {
24
- return { visitors: { ImportDeclaration: (node, { sourceFile }) => {
25
- if (!node.importClause?.namedBindings || !ts.isNamedImports(node.importClause.namedBindings) || node.importClause.namedBindings.elements.length) return;
26
- if (!node.importClause.name) context.report({
27
- fix: {
28
- range: getTSNodeRange(node, sourceFile),
29
- text: `import ${node.moduleSpecifier.getText(sourceFile)};`
30
- },
31
- message: "noEmptyNamedBlocksOnly",
32
- range: getTSNodeRange(node.importClause.namedBindings, sourceFile)
33
- });
34
- const commaToken = node.importClause.getChildren(sourceFile).find((child) => child.kind === ts.SyntaxKind.CommaToken);
35
- if (!commaToken) return;
36
- context.report({
37
- fix: {
38
- range: {
39
- begin: commaToken.getStart(sourceFile),
40
- end: node.importClause.namedBindings.getEnd()
41
- },
42
- text: ""
43
- },
44
- message: "noEmptyNamedBlocksWithOther",
45
- range: getTSNodeRange(node.importClause.namedBindings, sourceFile)
46
- });
47
- } } };
48
- }
49
- });
50
- //#endregion
51
- export { importEmptyBlocks_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports imports that use inline type qualifiers on all specifiers when a top-level type qualifier should be used instead.";
3
- readonly id: "importTypeSideEffects";
4
- readonly presets: readonly ["logical"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "useTopLevelQualifier", undefined>;
9
- export default _default;
@@ -1,29 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts, { SyntaxKind } from "typescript";
4
- //#region src/rules/importTypeSideEffects.ts
5
- var importTypeSideEffects_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports imports that use inline type qualifiers on all specifiers when a top-level type qualifier should be used instead.",
8
- id: "importTypeSideEffects",
9
- presets: ["logical"]
10
- },
11
- messages: { useTopLevelQualifier: {
12
- primary: "Every specifier in this import is a type, so a single top-level `import type` would be cleaner.",
13
- secondary: ["When all specifiers in an import have inline `type` qualifiers, TypeScript's `verbatimModuleSyntax` leaves behind an empty import statement.", "This creates an unnecessary side-effect import at runtime."],
14
- suggestions: ["Replace `import { type A, type B }` with `import type { A, B }`."]
15
- } },
16
- setup(context) {
17
- return { visitors: { ImportDeclaration: (node, { sourceFile }) => {
18
- if (!node.importClause || node.importClause.name || node.importClause.phaseModifier === SyntaxKind.TypeKeyword) return;
19
- const namedBindings = node.importClause.namedBindings;
20
- if (!namedBindings || !ts.isNamedImports(namedBindings) || !namedBindings.elements.length || namedBindings.elements.some((element) => !element.isTypeOnly)) return;
21
- context.report({
22
- message: "useTopLevelQualifier",
23
- range: getTSNodeRange(node, sourceFile)
24
- });
25
- } } };
26
- }
27
- });
28
- //#endregion
29
- export { importTypeSideEffects_default as default };
@@ -1,15 +0,0 @@
1
- import { z } from "zod/v4";
2
- declare const _default: import("@flint.fyi/core").Rule<{
3
- readonly description: "Reports indexed object types that don't match the configured style.";
4
- readonly id: "indexedObjectTypes";
5
- readonly presets: readonly ["stylistic", "stylisticStrict"];
6
- } & {
7
- readonly pluginId: string;
8
- readonly url: string;
9
- }, "preferIndexSignature" | "preferRecord", {
10
- style: z.ZodDefault<z.ZodEnum<{
11
- record: "record";
12
- "index-signature": "index-signature";
13
- }>>;
14
- }>;
15
- export default _default;
@@ -1,81 +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/indexedObjectTypes.ts
6
- function getSingleIndexSignature(members) {
7
- if (members.length !== 1) return;
8
- const member = members[0];
9
- if (member.kind !== ts$1.SyntaxKind.IndexSignature) return;
10
- return member;
11
- }
12
- function getTypeName(node) {
13
- if (node.kind === ts$1.SyntaxKind.InterfaceDeclaration) return node.name.text;
14
- let current = node.parent;
15
- while (current) {
16
- if (ts$1.isTypeAliasDeclaration(current)) return current.name.text;
17
- current = current.parent;
18
- }
19
- }
20
- function isDirectlyRecursive(node, parentTypeName) {
21
- switch (node.kind) {
22
- case ts$1.SyntaxKind.ConditionalType: return isDirectlyRecursive(node.checkType, parentTypeName) || isDirectlyRecursive(node.extendsType, parentTypeName) || isDirectlyRecursive(node.trueType, parentTypeName) || isDirectlyRecursive(node.falseType, parentTypeName);
23
- case ts$1.SyntaxKind.IndexedAccessType: return isDirectlyRecursive(node.objectType, parentTypeName) || isDirectlyRecursive(node.indexType, parentTypeName);
24
- case ts$1.SyntaxKind.IntersectionType:
25
- case ts$1.SyntaxKind.UnionType: return node.types.some((type) => isDirectlyRecursive(type, parentTypeName));
26
- case ts$1.SyntaxKind.ParenthesizedType: return isDirectlyRecursive(node.type, parentTypeName);
27
- case ts$1.SyntaxKind.TypeReference:
28
- if (node.typeName.kind === ts$1.SyntaxKind.Identifier && node.typeName.text === parentTypeName) return true;
29
- if (node.typeArguments) return node.typeArguments.some((arg) => isDirectlyRecursive(arg, parentTypeName));
30
- return false;
31
- default: return false;
32
- }
33
- }
34
- var indexedObjectTypes_default = ruleCreator.createRule(typescriptLanguage, {
35
- about: {
36
- description: "Reports indexed object types that don't match the configured style.",
37
- id: "indexedObjectTypes",
38
- presets: ["stylistic", "stylisticStrict"]
39
- },
40
- messages: {
41
- preferIndexSignature: {
42
- primary: "Prefer an index signature over `Record<K, V>`.",
43
- secondary: ["TypeScript provides two equivalent ways to define indexed object types: `Record<K, V>` and `{ [key: K]: V }`.", "Using index signatures consistently matches the more traditional TypeScript syntax."],
44
- suggestions: ["Replace `Record<K, V>` with `{ [key: K]: V }`."]
45
- },
46
- preferRecord: {
47
- primary: "Prefer `Record<K, V>` over an index signature.",
48
- secondary: ["TypeScript provides two equivalent ways to define indexed object types: `Record<K, V>` and `{ [key: K]: V }`.", "Using `Record<K, V>` consistently is more concise and idiomatic."],
49
- suggestions: ["Replace the index signature with `Record<K, V>`."]
50
- }
51
- },
52
- options: { style: z$1.enum(["index-signature", "record"]).default("record").describe("Which indexed object type syntax to enforce: 'record' for `Record<K, V>`, or 'index-signature' for `{ [key: K]: V }`.") },
53
- setup(context) {
54
- function checkForRecord(node, members, sourceFile) {
55
- const member = getSingleIndexSignature(members);
56
- if (!member?.type) return;
57
- const typeName = getTypeName(node);
58
- if (typeName && isDirectlyRecursive(member.type, typeName)) return;
59
- context.report({
60
- message: "preferRecord",
61
- range: getTSNodeRange(node, sourceFile)
62
- });
63
- }
64
- return { visitors: {
65
- InterfaceDeclaration: (node, { options, sourceFile }) => {
66
- if (options.style === "record" && !node.heritageClauses?.length) checkForRecord(node, node.members, sourceFile);
67
- },
68
- TypeLiteral: (node, { options, sourceFile }) => {
69
- if (options.style === "record") checkForRecord(node, node.members, sourceFile);
70
- },
71
- TypeReference: (node, { options, program, sourceFile, typeChecker }) => {
72
- if (options.style === "index-signature" && node.typeName.kind === ts$1.SyntaxKind.Identifier && node.typeName.text === "Record" && isGlobalDeclaration(node.typeName, typeChecker, program) && node.typeArguments?.length === 2) context.report({
73
- message: "preferIndexSignature",
74
- range: getTSNodeRange(node, sourceFile)
75
- });
76
- }
77
- } };
78
- }
79
- });
80
- //#endregion
81
- export { indexedObjectTypes_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using `instanceof Array` instead of `Array.isArray()`.";
3
- readonly id: "instanceOfArrays";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "useArrayIsArray", undefined>;
9
- export default _default;
@@ -1,29 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- //#region src/rules/instanceOfArrays.ts
5
- var instanceOfArrays_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports using `instanceof Array` instead of `Array.isArray()`.",
8
- id: "instanceOfArrays",
9
- presets: ["logical", "logicalStrict"]
10
- },
11
- messages: { useArrayIsArray: {
12
- primary: "Use `Array.isArray()` instead of `instanceof Array`.",
13
- secondary: ["The `instanceof Array` check can fail across different execution contexts (e.g., iframes or realms).", "It may also give incorrect results for array-like objects."],
14
- suggestions: ["Use `Array.isArray(value)` for reliable array detection."]
15
- } },
16
- setup(context) {
17
- return { visitors: { BinaryExpression: (node, { program, sourceFile, typeChecker }) => {
18
- if (node.operatorToken.kind !== SyntaxKind.InstanceOfKeyword) return;
19
- const right = unwrapParenthesizedNode(node.right);
20
- if (right.kind !== SyntaxKind.Identifier || right.text !== "Array" || !isGlobalDeclarationOfName(right, "Array", typeChecker, program)) return;
21
- context.report({
22
- message: "useArrayIsArray",
23
- range: getTSNodeRange(node, sourceFile)
24
- });
25
- } } };
26
- }
27
- });
28
- //#endregion
29
- export { instanceOfArrays_default as default };
@@ -1,15 +0,0 @@
1
- import { z } from "zod/v4";
2
- declare const _default: import("@flint.fyi/core").Rule<{
3
- readonly description: "Reports irregular whitespace characters that can cause issues with code parsing and display.";
4
- readonly id: "irregularWhitespaces";
5
- readonly presets: readonly ["logical"];
6
- } & {
7
- readonly pluginId: string;
8
- readonly url: string;
9
- }, "irregularWhitespace", {
10
- skipComments: z.ZodDefault<z.ZodBoolean>;
11
- skipJSXText: z.ZodDefault<z.ZodBoolean>;
12
- skipRegularExpressions: z.ZodDefault<z.ZodBoolean>;
13
- skipTemplates: z.ZodDefault<z.ZodBoolean>;
14
- }>;
15
- export default _default;