@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,124 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- import { z } from "zod/v4";
5
- //#region src/rules/classMethodsThis.ts
6
- function classImplementsSomething(classNode) {
7
- return classNode.heritageClauses?.some((clause) => clause.token === ts.SyntaxKind.ImplementsKeyword) ?? false;
8
- }
9
- function containsThis(node) {
10
- switch (node.kind) {
11
- case ts.SyntaxKind.ClassDeclaration:
12
- case ts.SyntaxKind.ClassExpression: {
13
- const classNode = node;
14
- for (const member of classNode.members) if (ts.isPropertyDeclaration(member) && ts.isComputedPropertyName(member.name) && containsThis(member.name.expression)) return true;
15
- return false;
16
- }
17
- case ts.SyntaxKind.ClassStaticBlockDeclaration:
18
- case ts.SyntaxKind.FunctionDeclaration:
19
- case ts.SyntaxKind.FunctionExpression: return false;
20
- case ts.SyntaxKind.SuperKeyword:
21
- case ts.SyntaxKind.ThisKeyword: return true;
22
- default: return ts.forEachChild(node, containsThis) ?? false;
23
- }
24
- }
25
- function getMemberDisplayName(member, sourceFile) {
26
- const name = member.name;
27
- if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) return name.text;
28
- if (ts.isPrivateIdentifier(name)) return name.text;
29
- if (ts.isComputedPropertyName(name)) {
30
- const expr = name.expression;
31
- if (ts.isStringLiteral(expr) || ts.isNoSubstitutionTemplateLiteral(expr) || ts.isNumericLiteral(expr)) return expr.text;
32
- return `[${expr.getText(sourceFile)}]`;
33
- }
34
- }
35
- function hasModifier(modifiers, kind) {
36
- return modifiers?.some((modifier) => modifier.kind === kind) ?? false;
37
- }
38
- function isPublicMember(member) {
39
- if (ts.isPrivateIdentifier(member.name)) return false;
40
- const modifiers = member.modifiers;
41
- if (!modifiers) return true;
42
- if (modifiers.some((m) => m.kind === ts.SyntaxKind.PrivateKeyword || m.kind === ts.SyntaxKind.ProtectedKeyword)) return false;
43
- return true;
44
- }
45
- function shouldSkipMember(member, classNode, options) {
46
- if (hasModifier(member.modifiers, ts.SyntaxKind.StaticKeyword)) return true;
47
- if (options.ignoreOverrideMethods && hasModifier(member.modifiers, ts.SyntaxKind.OverrideKeyword)) return true;
48
- const implementsInterface = classImplementsSomething(classNode);
49
- const ignoreImpl = options.ignoreClassesThatImplementAnInterface;
50
- if (implementsInterface && ignoreImpl) {
51
- if (ignoreImpl === true) return true;
52
- if (isPublicMember(member)) return true;
53
- }
54
- return false;
55
- }
56
- var classMethodsThis_default = ruleCreator.createRule(typescriptLanguage, {
57
- about: {
58
- description: "Reports class methods that do not use `this`.",
59
- id: "classMethodsThis",
60
- presets: ["stylistic", "stylisticStrict"]
61
- },
62
- messages: { missingThis: {
63
- primary: "Expected 'this' to be used by class {{ kind }} '{{ name }}'.",
64
- secondary: ["Methods that don't use `this` could be static methods or standalone functions.", "Using instance methods that don't access instance state can be misleading."],
65
- suggestions: ["Add the `static` keyword to make this a static method.", "Extract this to a standalone function if it doesn't need class context."]
66
- } },
67
- options: {
68
- ignoreClassesThatImplementAnInterface: z.union([z.boolean(), z.literal("public-fields")]).default(false).describe("Whether to ignore classes that implement interfaces. Set to 'public-fields' to only ignore public members."),
69
- ignoreOverrideMethods: z.boolean().default(false).describe("Whether to ignore members with the 'override' modifier.")
70
- },
71
- setup(context) {
72
- function reportMember(member, kind, sourceFile, reportFromStart) {
73
- const name = getMemberDisplayName(member, sourceFile);
74
- if (!name) return;
75
- const beginNode = reportFromStart ? member : member.name;
76
- context.report({
77
- data: {
78
- kind,
79
- name
80
- },
81
- message: "missingThis",
82
- range: {
83
- begin: beginNode.getStart(sourceFile),
84
- end: member.name.getEnd()
85
- }
86
- });
87
- }
88
- function checkMethod(member, classNode, sourceFile, options) {
89
- if (member.body && !shouldSkipMember(member, classNode, options) && !containsThis(member.body)) reportMember(member, "method", sourceFile, false);
90
- }
91
- function checkAccessor(member, classNode, sourceFile, options, kind) {
92
- if (member.body && !shouldSkipMember(member, classNode, options) && !containsThis(member.body)) reportMember(member, kind, sourceFile, true);
93
- }
94
- function checkPropertyInitializerFunction(member, classNode, sourceFile, options) {
95
- if (!member.initializer) return;
96
- if (member.initializer.kind !== ts.SyntaxKind.ArrowFunction && member.initializer.kind !== ts.SyntaxKind.FunctionExpression) return;
97
- if (!shouldSkipMember(member, classNode, options) && !containsThis(member.initializer.body)) reportMember(member, "method", sourceFile, false);
98
- }
99
- function checkClass(node, { options, sourceFile }) {
100
- for (const member of node.members) switch (member.kind) {
101
- case ts.SyntaxKind.GetAccessor:
102
- checkAccessor(member, node, sourceFile, options, "getter");
103
- break;
104
- case ts.SyntaxKind.MethodDeclaration:
105
- checkMethod(member, node, sourceFile, options);
106
- break;
107
- case ts.SyntaxKind.PropertyDeclaration:
108
- checkPropertyInitializerFunction(member, node, sourceFile, options);
109
- break;
110
- case ts.SyntaxKind.SetAccessor:
111
- checkAccessor(member, node, sourceFile, options, "setter");
112
- break;
113
- }
114
- }
115
- return { visitors: {
116
- ClassDeclaration: checkClass,
117
- ClassExpression: checkClass
118
- } };
119
- }
120
- });
121
- //#endregion
122
- export { classMethodsThis_default as default };
123
-
124
- //# sourceMappingURL=classMethodsThis.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports consecutive array.push() calls that could be combined into a single call.";
3
- readonly id: "combinedPushes";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "combinePushes", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=combinedPushes.d.ts.map
@@ -1,56 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- //#region src/rules/combinedPushes.ts
5
- var combinedPushes_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports consecutive array.push() calls that could be combined into a single call.",
8
- id: "combinedPushes",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { combinePushes: {
12
- primary: "Consecutive `.push()` calls can be combined into a single call.",
13
- secondary: ["Multiple consecutive `.push()` calls on the same array can be combined.", "Use `.push(a, b, c)` instead of separate `.push(a)`, `.push(b)`, `.push(c)` calls."],
14
- suggestions: ["Combine consecutive `.push()` calls into one."]
15
- } },
16
- setup(context) {
17
- function isArrayPushCall(node, typeChecker) {
18
- return ts.isPropertyAccessExpression(node.expression) && node.expression.name.text === "push" && typeChecker.isArrayType(typeChecker.getTypeAtLocation(node.expression.expression));
19
- }
20
- function getArrayName(node, sourceFile) {
21
- return ts.isPropertyAccessExpression(node.expression) && node.expression.expression.getText(sourceFile);
22
- }
23
- function isPushCallStatement(statement, sourceFile, typeChecker) {
24
- if (!ts.isExpressionStatement(statement) || !ts.isCallExpression(statement.expression) || !isArrayPushCall(statement.expression, typeChecker)) return;
25
- const arrayName = getArrayName(statement.expression, sourceFile);
26
- if (!arrayName) return;
27
- return {
28
- arrayName,
29
- callExpression: statement.expression
30
- };
31
- }
32
- function checkNode({ statements }, { sourceFile, typeChecker }) {
33
- for (let i = 0; i < statements.length - 1; i += 1) {
34
- const currentStatement = statements[i];
35
- const currentPush = isPushCallStatement(currentStatement, sourceFile, typeChecker);
36
- if (!currentPush) continue;
37
- const nextStatement = statements[i + 1];
38
- if (isPushCallStatement(nextStatement, sourceFile, typeChecker)?.arrayName === currentPush.arrayName) context.report({
39
- message: "combinePushes",
40
- range: {
41
- begin: currentStatement.getStart(sourceFile),
42
- end: nextStatement.getEnd()
43
- }
44
- });
45
- }
46
- }
47
- return { visitors: {
48
- Block: checkNode,
49
- SourceFile: checkNode
50
- } };
51
- }
52
- });
53
- //#endregion
54
- export { combinedPushes_default as default };
55
-
56
- //# sourceMappingURL=combinedPushes.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports unnecessary extra non-null assertions.";
3
- readonly id: "consecutiveNonNullAssertions";
4
- readonly presets: readonly ["logical"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "consecutiveNonNullAssertion", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=consecutiveNonNullAssertions.d.ts.map
@@ -1,39 +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/consecutiveNonNullAssertions.ts
5
- var consecutiveNonNullAssertions_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports unnecessary extra non-null assertions.",
8
- id: "consecutiveNonNullAssertions",
9
- presets: ["logical"]
10
- },
11
- messages: { consecutiveNonNullAssertion: {
12
- primary: "Consecutive non-null assertion operators are unnecessary.",
13
- secondary: ["The non-null assertion operator (`!`) is used to assert that a value is not null or undefined.", "Using it multiple times in a row does not do anything, and just takes up space unnecessarily."],
14
- suggestions: ["Remove the redundant non-null assertion operator."]
15
- } },
16
- setup(context) {
17
- return { visitors: { NonNullExpression: (node) => {
18
- if (node.parent.kind !== SyntaxKind.NonNullExpression) return;
19
- context.report({
20
- fix: {
21
- range: {
22
- begin: node.end,
23
- end: node.parent.end
24
- },
25
- text: ""
26
- },
27
- message: "consecutiveNonNullAssertion",
28
- range: {
29
- begin: node.end - 1,
30
- end: node.parent.end
31
- }
32
- });
33
- } } };
34
- }
35
- });
36
- //#endregion
37
- export { consecutiveNonNullAssertions_default as default };
38
-
39
- //# sourceMappingURL=consecutiveNonNullAssertions.js.map
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports calls to console methods.";
3
- readonly id: "consoleCalls";
4
- } & {
5
- readonly pluginId: string;
6
- readonly url: string;
7
- }, "noConsole", undefined>;
8
- export default _default;
9
- //# sourceMappingURL=consoleCalls.d.ts.map
@@ -1,28 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, isGlobalVariable, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- //#region src/rules/consoleCalls.ts
5
- var consoleCalls_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports calls to console methods.",
8
- id: "consoleCalls"
9
- },
10
- messages: { noConsole: {
11
- primary: "Console method calls should not be used in production code.",
12
- secondary: ["Console methods like `console.log`, `console.warn`, and `console.error` are useful during development but should typically be removed before shipping to production.", "Consider using a proper logging library that can be configured for different environments."],
13
- suggestions: ["Remove the console call before shipping this code to users."]
14
- } },
15
- setup(context) {
16
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
17
- if (!ts.isPropertyAccessExpression(node.expression) || !ts.isIdentifier(node.expression.expression) || node.expression.expression.text !== "console" || !isGlobalVariable(node.expression.expression, typeChecker)) return;
18
- context.report({
19
- message: "noConsole",
20
- range: getTSNodeRange(node, sourceFile)
21
- });
22
- } } };
23
- }
24
- });
25
- //#endregion
26
- export { consoleCalls_default as default };
27
-
28
- //# sourceMappingURL=consoleCalls.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports attempting to reassign variables declared with const.";
3
- readonly id: "constantAssignments";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noConstAssign", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=constantAssignments.d.ts.map
@@ -1,41 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getModifyingReferences, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts, { SyntaxKind } from "typescript";
4
- //#region src/rules/constantAssignments.ts
5
- var constantAssignments_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports attempting to reassign variables declared with const.",
8
- id: "constantAssignments",
9
- presets: ["javascript"]
10
- },
11
- messages: { noConstAssign: {
12
- primary: "Variables declared with const cannot be reassigned; use let or var instead if reassignment is needed.",
13
- secondary: ["The const keyword creates a read-only reference to a value, preventing reassignment.", "While properties of const objects and elements of const arrays can be mutated, the binding itself cannot be reassigned."],
14
- suggestions: ["Use let instead of const if you need to reassign the variable."]
15
- } },
16
- setup(context) {
17
- function collectBindingElements(name) {
18
- if (name.kind === SyntaxKind.Identifier) return [name];
19
- const identifiers = [];
20
- for (const element of name.elements) if (element.kind === SyntaxKind.BindingElement) identifiers.push(...collectBindingElements(element.name));
21
- return identifiers;
22
- }
23
- return { visitors: { VariableDeclarationList: (node, { sourceFile }) => {
24
- if (!(node.flags & ts.NodeFlags.Const) || !node.declarations.length) return;
25
- for (const declaration of node.declarations) {
26
- const identifiers = collectBindingElements(declaration.name);
27
- for (const identifier of identifiers) {
28
- const modifyingReferences = getModifyingReferences(identifier, sourceFile);
29
- for (const reference of modifyingReferences) context.report({
30
- message: "noConstAssign",
31
- range: getTSNodeRange(reference, sourceFile)
32
- });
33
- }
34
- }
35
- } } };
36
- }
37
- });
38
- //#endregion
39
- export { constantAssignments_default as default };
40
-
41
- //# sourceMappingURL=constantAssignments.js.map
@@ -1,16 +0,0 @@
1
- import { z } from "zod/v4";
2
- declare const _default: import("@flint.fyi/core").Rule<{
3
- readonly description: "Reports inconsistent placement of type arguments in constructor calls.";
4
- readonly id: "constructorGenericCalls";
5
- readonly presets: readonly ["stylistic", "stylisticStrict"];
6
- } & {
7
- readonly pluginId: string;
8
- readonly url: string;
9
- }, "preferConstructor" | "preferTypeAnnotation", {
10
- style: z.ZodDefault<z.ZodEnum<{
11
- constructor: "constructor";
12
- "type-annotation": "type-annotation";
13
- }>>;
14
- }>;
15
- export default _default;
16
- //# sourceMappingURL=constructorGenericCalls.d.ts.map
@@ -1,138 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- import { z } from "zod/v4";
5
- //#region src/rules/constructorGenericCalls.ts
6
- const builtInTypedArrays = new Set([
7
- "Float32Array",
8
- "Float64Array",
9
- "Int8Array",
10
- "Int16Array",
11
- "Int32Array",
12
- "Uint8Array",
13
- "Uint8ClampedArray",
14
- "Uint16Array",
15
- "Uint32Array"
16
- ]);
17
- function getTypeArgumentsRange(parent, typeArguments, sourceFile) {
18
- const children = parent.getChildren(sourceFile);
19
- let begin = typeArguments.pos;
20
- let end = typeArguments.end;
21
- for (const child of children) if (child.kind === ts.SyntaxKind.LessThanToken) begin = child.getStart(sourceFile);
22
- else if (child.kind === ts.SyntaxKind.GreaterThanToken) end = child.getEnd();
23
- return {
24
- begin,
25
- end
26
- };
27
- }
28
- function getTypeArgumentsText(parent, typeArguments, sourceFile) {
29
- const range = getTypeArgumentsRange(parent, typeArguments, sourceFile);
30
- return sourceFile.text.slice(range.begin, range.end);
31
- }
32
- function isBuiltInTypedArray(name) {
33
- return builtInTypedArrays.has(name);
34
- }
35
- const options = { style: z.enum(["constructor", "type-annotation"]).default("constructor").describe("Where to prefer type arguments: 'constructor' for the constructor call, 'type-annotation' for the type annotation.") };
36
- var constructorGenericCalls_default = ruleCreator.createRule(typescriptLanguage, {
37
- about: {
38
- description: "Reports inconsistent placement of type arguments in constructor calls.",
39
- id: "constructorGenericCalls",
40
- presets: ["stylistic", "stylisticStrict"]
41
- },
42
- messages: {
43
- preferConstructor: {
44
- primary: "Prefer specifying the type argument on the constructor call instead of the type annotation.",
45
- secondary: ["When type arguments are needed, specifying them on the constructor is more explicit.", "This makes the code more readable by keeping the type information with the value."],
46
- suggestions: ["Move the type argument from the type annotation to the constructor call."]
47
- },
48
- preferTypeAnnotation: {
49
- primary: "Prefer specifying the type argument on the type annotation instead of the constructor call.",
50
- secondary: ["Specifying type arguments on the type annotation keeps the variable's type explicit.", "This approach can make refactoring easier when changing the right-hand side."],
51
- suggestions: ["Move the type argument from the constructor call to the type annotation."]
52
- }
53
- },
54
- options,
55
- setup(context) {
56
- function checkNode(node, { options, sourceFile }) {
57
- const identifier = node.name;
58
- const typeAnnotation = node.type;
59
- const initializer = node.initializer;
60
- const style = options.style;
61
- if (!initializer || !ts.isNewExpression(initializer) || !ts.isIdentifier(initializer.expression)) return;
62
- const constructorName = initializer.expression.text;
63
- if (!typeAnnotation) {
64
- if (style === "type-annotation" && initializer.typeArguments) {
65
- const typeArgsText = getTypeArgumentsText(initializer, initializer.typeArguments, sourceFile);
66
- const identifierEnd = identifier.getEnd();
67
- const typeAnnotationText = `${constructorName}${typeArgsText}`;
68
- const typeArgumentsRange = getTypeArgumentsRange(initializer, initializer.typeArguments, sourceFile);
69
- context.report({
70
- fix: [{
71
- range: typeArgumentsRange,
72
- text: ""
73
- }, {
74
- range: {
75
- begin: identifierEnd,
76
- end: identifierEnd
77
- },
78
- text: `: ${typeAnnotationText}`
79
- }],
80
- message: "preferTypeAnnotation",
81
- range: typeArgumentsRange
82
- });
83
- }
84
- return;
85
- }
86
- if (!ts.isTypeReferenceNode(typeAnnotation) || !ts.isIdentifier(typeAnnotation.typeName) || typeAnnotation.typeName.text !== constructorName || isBuiltInTypedArray(typeAnnotation.typeName.text) || !!typeAnnotation.typeArguments !== !initializer.typeArguments) return;
87
- if (style === "constructor" && typeAnnotation.typeArguments && !initializer.typeArguments) {
88
- const typeArgsText = getTypeArgumentsText(typeAnnotation, typeAnnotation.typeArguments, sourceFile);
89
- const typeArgsRange = getTypeArgumentsRange(typeAnnotation, typeAnnotation.typeArguments, sourceFile);
90
- const constructorEnd = initializer.expression.getEnd();
91
- const hasParens = initializer.arguments !== void 0;
92
- context.report({
93
- fix: [{
94
- range: {
95
- begin: typeAnnotation.getStart(sourceFile),
96
- end: typeAnnotation.getEnd()
97
- },
98
- text: constructorName
99
- }, {
100
- range: {
101
- begin: constructorEnd,
102
- end: constructorEnd
103
- },
104
- text: typeArgsText + (hasParens ? "" : "()")
105
- }],
106
- message: "preferConstructor",
107
- range: typeArgsRange
108
- });
109
- } else if (style === "type-annotation" && !typeAnnotation.typeArguments && initializer.typeArguments) {
110
- const typeArgumentsText = getTypeArgumentsText(initializer, initializer.typeArguments, sourceFile);
111
- const typeArgumentsRange = getTypeArgumentsRange(initializer, initializer.typeArguments, sourceFile);
112
- const newTypeAnnotation = `${typeAnnotation.typeName.text}${typeArgumentsText}`;
113
- context.report({
114
- fix: [{
115
- range: {
116
- begin: typeAnnotation.getStart(sourceFile),
117
- end: typeAnnotation.getEnd()
118
- },
119
- text: newTypeAnnotation
120
- }, {
121
- range: typeArgumentsRange,
122
- text: ""
123
- }],
124
- message: "preferTypeAnnotation",
125
- range: typeArgumentsRange
126
- });
127
- }
128
- }
129
- return { visitors: {
130
- PropertyDeclaration: checkNode,
131
- VariableDeclaration: checkNode
132
- } };
133
- }
134
- });
135
- //#endregion
136
- export { constructorGenericCalls_default as default };
137
-
138
- //# sourceMappingURL=constructorGenericCalls.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports returning values from constructor functions.";
3
- readonly id: "constructorReturns";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noConstructorReturn", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=constructorReturns.d.ts.map
@@ -1,41 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- //#region src/rules/constructorReturns.ts
6
- var constructorReturns_default = ruleCreator.createRule(typescriptLanguage, {
7
- about: {
8
- description: "Reports returning values from constructor functions.",
9
- id: "constructorReturns",
10
- presets: ["javascript"]
11
- },
12
- messages: { noConstructorReturn: {
13
- primary: "Returning a value from a constructor function overrides the newly created instance.",
14
- secondary: ["This behavior is often unintentional and can lead to unexpected results.", "If you need to return a different object, consider using a factory function instead."],
15
- suggestions: ["Remove the return statement, or return without a value to exit early."]
16
- } },
17
- setup(context) {
18
- return { visitors: { Constructor: (node, { sourceFile }) => {
19
- if (!node.body) return;
20
- function checkForReturnStatements(node) {
21
- if (ts.isReturnStatement(node)) {
22
- if (node.expression) context.report({
23
- message: "noConstructorReturn",
24
- range: {
25
- begin: node.getStart(sourceFile),
26
- end: node.getEnd()
27
- }
28
- });
29
- return;
30
- }
31
- if (tsutils.isFunctionScopeBoundary(node)) return;
32
- ts.forEachChild(node, checkForReturnStatements);
33
- }
34
- ts.forEachChild(node.body, checkForReturnStatements);
35
- } } };
36
- }
37
- });
38
- //#endregion
39
- export { constructorReturns_default as default };
40
-
41
- //# sourceMappingURL=constructorReturns.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports constructors of derived classes that do not call `super()`, and constructors of non-derived classes that call `super()`.";
3
- readonly id: "constructorSupers";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "missingSuperCall" | "unexpectedSuperCall", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=constructorSupers.d.ts.map
@@ -1,77 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- //#region src/rules/constructorSupers.ts
6
- function classHasExtendsClause(node) {
7
- return node.heritageClauses?.some((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword);
8
- }
9
- function containsSuperCall(node) {
10
- if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.SuperKeyword) return true;
11
- if (tsutils.isFunctionScopeBoundary(node)) return false;
12
- return ts.forEachChild(node, containsSuperCall) ?? false;
13
- }
14
- var constructorSupers_default = ruleCreator.createRule(typescriptLanguage, {
15
- about: {
16
- description: "Reports constructors of derived classes that do not call `super()`, and constructors of non-derived classes that call `super()`.",
17
- id: "constructorSupers",
18
- presets: ["javascript"]
19
- },
20
- messages: {
21
- missingSuperCall: {
22
- primary: "Constructors of derived classes must call `super()` before using `this` or returning.",
23
- secondary: ["The derived class constructor must initialize the parent class by calling `super()` before accessing `this`.", "Failing to call `super()` in a derived class constructor causes a runtime error."],
24
- suggestions: ["Add a `super()` call at the beginning of the constructor.", "Pass required arguments to `super()` if the parent constructor expects them."]
25
- },
26
- unexpectedSuperCall: {
27
- primary: "Constructors of non-derived classes must not call `super()`.",
28
- secondary: ["This class does not extend another class, so there is no parent constructor to call.", "Calling `super()` in a non-derived class causes a syntax error."],
29
- suggestions: ["Remove the `super()` call.", "If this class should inherit from another class, add an `extends` clause."]
30
- }
31
- },
32
- setup(context) {
33
- function checkConstructor(classNode, constructor, sourceFile) {
34
- if (!constructor.body) return;
35
- const isDerivedClass = classHasExtendsClause(classNode) ?? false;
36
- const hasSuperCall = containsSuperCall(constructor.body);
37
- if (isDerivedClass && !hasSuperCall) {
38
- const constructorKeyword = constructor.getChildren(sourceFile).find((child) => child.kind === ts.SyntaxKind.Constructor);
39
- context.report({
40
- message: "missingSuperCall",
41
- range: {
42
- begin: constructorKeyword?.getStart(sourceFile) ?? constructor.getStart(sourceFile),
43
- end: constructorKeyword?.getEnd() ?? constructor.getStart(sourceFile) + 11
44
- }
45
- });
46
- }
47
- if (!isDerivedClass && hasSuperCall) findAndReportSuperCalls(constructor.body, sourceFile);
48
- }
49
- function findAndReportSuperCalls(node, sourceFile) {
50
- if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.SuperKeyword) {
51
- context.report({
52
- message: "unexpectedSuperCall",
53
- range: {
54
- begin: node.getStart(sourceFile),
55
- end: node.getEnd()
56
- }
57
- });
58
- return;
59
- }
60
- if (tsutils.isFunctionScopeBoundary(node)) return;
61
- ts.forEachChild(node, (child) => {
62
- findAndReportSuperCalls(child, sourceFile);
63
- });
64
- }
65
- function checkClass(node, { sourceFile }) {
66
- for (const member of node.members) if (member.kind === ts.SyntaxKind.Constructor) checkConstructor(node, member, sourceFile);
67
- }
68
- return { visitors: {
69
- ClassDeclaration: checkClass,
70
- ClassExpression: checkClass
71
- } };
72
- }
73
- });
74
- //#endregion
75
- export { constructorSupers_default as default };
76
-
77
- //# sourceMappingURL=constructorSupers.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Prefer passing a `Date` directly to the `Date` constructor when cloning, rather than calling `getTime()`.";
3
- readonly id: "dateConstructorClones";
4
- readonly presets: readonly ["logical"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unnecessaryGetTime", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=dateConstructorClones.d.ts.map