@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,97 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- import { z } from "zod/v4";
5
- //#region src/rules/irregularWhitespaces.ts
6
- function findIrregularWhitespaces(text) {
7
- const irregularWhitespacePattern = /[\f\v\x85\ufeff\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000\u2028\u2029]/gu;
8
- const matches = [];
9
- let match;
10
- while ((match = irregularWhitespacePattern.exec(text)) !== null) matches.push({
11
- index: match.index,
12
- length: match[0].length
13
- });
14
- return matches;
15
- }
16
- function isInRange(position, start, end) {
17
- return position >= start && position < end;
18
- }
19
- var irregularWhitespaces_default = ruleCreator.createRule(typescriptLanguage, {
20
- about: {
21
- description: "Reports irregular whitespace characters that can cause issues with code parsing and display.",
22
- id: "irregularWhitespaces",
23
- presets: ["logical"]
24
- },
25
- messages: { irregularWhitespace: {
26
- primary: "Irregular whitespace characters can cause unexpected behavior and display issues.",
27
- secondary: [
28
- "Irregular whitespace includes characters like non-breaking spaces (\\u00A0), zero-width spaces (\\u200B), and various Unicode space characters.",
29
- "These characters are often invisible or look like regular spaces, but may be interpreted differently by tools and parsers.",
30
- "They can be accidentally introduced through copy-paste from external sources."
31
- ],
32
- suggestions: ["Replace irregular whitespace with regular spaces or tabs.", "Remove the whitespace if it is unnecessary."]
33
- } },
34
- options: {
35
- skipComments: z.boolean().default(false).describe("Whether to allow irregular whitespace in comments."),
36
- skipJSXText: z.boolean().default(false).describe("Whether to allow irregular whitespace in JSX text content."),
37
- skipRegularExpressions: z.boolean().default(false).describe("Whether to allow irregular whitespace in regular expression literals."),
38
- skipTemplates: z.boolean().default(false).describe("Whether to allow irregular whitespace in template literals.")
39
- },
40
- setup(context) {
41
- return { visitors: { SourceFile: (node, { options, sourceFile }) => {
42
- const text = sourceFile.getFullText();
43
- const allMatches = findIrregularWhitespaces(text);
44
- if (!allMatches.length) return;
45
- const excludedRanges = [];
46
- function collectExcludedRanges(astNode) {
47
- if (astNode.kind === ts$1.SyntaxKind.StringLiteral) excludedRanges.push({
48
- end: astNode.getEnd(),
49
- start: astNode.getStart(sourceFile)
50
- });
51
- if (options.skipRegularExpressions && astNode.kind === ts$1.SyntaxKind.RegularExpressionLiteral) excludedRanges.push({
52
- end: astNode.getEnd(),
53
- start: astNode.getStart(sourceFile)
54
- });
55
- if (options.skipTemplates && (astNode.kind === ts$1.SyntaxKind.NoSubstitutionTemplateLiteral || astNode.kind === ts$1.SyntaxKind.TemplateHead || astNode.kind === ts$1.SyntaxKind.TemplateMiddle || astNode.kind === ts$1.SyntaxKind.TemplateTail)) excludedRanges.push({
56
- end: astNode.getEnd(),
57
- start: astNode.getStart(sourceFile)
58
- });
59
- if (options.skipJSXText && astNode.kind === ts$1.SyntaxKind.JsxText) excludedRanges.push({
60
- end: astNode.getEnd(),
61
- start: astNode.getFullStart()
62
- });
63
- ts$1.forEachChild(astNode, collectExcludedRanges);
64
- }
65
- collectExcludedRanges(node);
66
- if (options.skipComments) {
67
- const commentRanges = [...ts$1.getLeadingCommentRanges(text, 0) ?? []];
68
- function collectCommentRanges(astNode) {
69
- const leading = ts$1.getLeadingCommentRanges(text, astNode.getFullStart());
70
- if (leading) commentRanges.push(...leading);
71
- const trailing = ts$1.getTrailingCommentRanges(text, astNode.getEnd());
72
- if (trailing) commentRanges.push(...trailing);
73
- ts$1.forEachChild(astNode, collectCommentRanges);
74
- }
75
- collectCommentRanges(node);
76
- for (const range of commentRanges) excludedRanges.push({
77
- end: range.end,
78
- start: range.pos
79
- });
80
- }
81
- for (const match of allMatches) {
82
- if (excludedRanges.some((range) => isInRange(match.index, range.start, range.end))) continue;
83
- context.report({
84
- message: "irregularWhitespace",
85
- range: {
86
- begin: match.index,
87
- end: match.index + match.length
88
- }
89
- });
90
- }
91
- } } };
92
- }
93
- });
94
- //#endregion
95
- export { irregularWhitespaces_default as default };
96
-
97
- //# sourceMappingURL=irregularWhitespaces.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports comparisons with NaN, which should use Number.isNaN() instead.";
3
- readonly id: "isNaNComparisons";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "useIsNaN", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=isNaNComparisons.d.ts.map
@@ -1,43 +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/isNaNComparisons.ts
5
- const comparisonOperators = new Set([
6
- SyntaxKind.EqualsEqualsEqualsToken,
7
- SyntaxKind.EqualsEqualsToken,
8
- SyntaxKind.ExclamationEqualsEqualsToken,
9
- SyntaxKind.ExclamationEqualsToken,
10
- SyntaxKind.GreaterThanEqualsToken,
11
- SyntaxKind.GreaterThanToken,
12
- SyntaxKind.LessThanEqualsToken,
13
- SyntaxKind.LessThanToken
14
- ]);
15
- var isNaNComparisons_default = ruleCreator.createRule(typescriptLanguage, {
16
- about: {
17
- description: "Reports comparisons with NaN, which should use Number.isNaN() instead.",
18
- id: "isNaNComparisons",
19
- presets: ["logical", "logicalStrict"]
20
- },
21
- messages: { useIsNaN: {
22
- primary: "Use `Number.isNaN()` instead of comparing with `NaN`.",
23
- secondary: ["`NaN` is not equal to anything, including itself, so comparisons with `NaN` always return `false`."],
24
- suggestions: ["Use `Number.isNaN(value)` for reliable NaN detection."]
25
- } },
26
- setup(context) {
27
- return { visitors: { BinaryExpression: (node, { sourceFile, typeChecker }) => {
28
- if (!comparisonOperators.has(node.operatorToken.kind)) return;
29
- if (isNaNIdentifier(node.left, typeChecker) || isNaNIdentifier(node.right, typeChecker)) context.report({
30
- message: "useIsNaN",
31
- range: getTSNodeRange(node, sourceFile)
32
- });
33
- } } };
34
- function isNaNIdentifier(node, typeChecker) {
35
- const unwrapped = unwrapParenthesizedNode(node);
36
- return unwrapped.kind === SyntaxKind.Identifier && unwrapped.text === "NaN" && isGlobalDeclarationOfName(unwrapped, "NaN", typeChecker);
37
- }
38
- }
39
- });
40
- //#endregion
41
- export { isNaNComparisons_default as default };
42
-
43
- //# sourceMappingURL=isNaNComparisons.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Prefers literal syntax over constructor function calls for primitive values.";
3
- readonly id: "literalConstructorWrappers";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferLiteral", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=literalConstructorWrappers.d.ts.map
@@ -1,64 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/literalConstructorWrappers.ts
5
- const literalConstructors = new Set([
6
- "BigInt",
7
- "Boolean",
8
- "Number",
9
- "String"
10
- ]);
11
- function isBooleanLiteral(node) {
12
- return node.kind === ts$1.SyntaxKind.TrueKeyword || node.kind === ts$1.SyntaxKind.FalseKeyword;
13
- }
14
- function isLiteralArgument(node, constructorName) {
15
- switch (constructorName) {
16
- case "BigInt": return isNumericLiteralForBigInt(node);
17
- case "Boolean": return ts$1.isLiteralExpression(node) || isBooleanLiteral(node);
18
- case "Number": return ts$1.isStringLiteral(node) && isValidNumericString(node.text);
19
- case "String": return ts$1.isNumericLiteral(node) || isBooleanLiteral(node) || ts$1.isBigIntLiteral(node);
20
- default: return false;
21
- }
22
- }
23
- function isNumericLiteralForBigInt(node) {
24
- return node.kind === ts$1.SyntaxKind.NumericLiteral && /^-?\d+$/.test(node.text);
25
- }
26
- function isValidNumericString(value) {
27
- const trimmed = value.trim();
28
- if (trimmed === "") return false;
29
- const number = Number(trimmed);
30
- return !Number.isNaN(number) && Number.isFinite(number);
31
- }
32
- var literalConstructorWrappers_default = ruleCreator.createRule(typescriptLanguage, {
33
- about: {
34
- description: "Prefers literal syntax over constructor function calls for primitive values.",
35
- id: "literalConstructorWrappers",
36
- presets: ["stylistic", "stylisticStrict"]
37
- },
38
- messages: { preferLiteral: {
39
- primary: "Prefer literal syntax over `{{ name }}()` for creating primitive values.",
40
- secondary: ["Literal syntax like `123n` for BigInt or `!!value` for Boolean is more concise and idiomatic.", "Constructor calls can be replaced with operators or template literals."],
41
- suggestions: ["Use literal syntax instead of `{{ name }}()`."]
42
- } },
43
- setup(context) {
44
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
45
- if (!ts$1.isIdentifier(node.expression)) return;
46
- const name = node.expression.text;
47
- if (!literalConstructors.has(name) || node.arguments.length !== 1 || !isGlobalDeclarationOfName(node.expression, name, typeChecker)) return;
48
- const argument = node.arguments[0];
49
- if (!isLiteralArgument(argument, name)) return;
50
- context.report({
51
- data: { name },
52
- message: "preferLiteral",
53
- range: {
54
- begin: node.getStart(sourceFile),
55
- end: node.expression.getEnd()
56
- }
57
- });
58
- } } };
59
- }
60
- });
61
- //#endregion
62
- export { literalConstructorWrappers_default as default };
63
-
64
- //# sourceMappingURL=literalConstructorWrappers.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Prefer modern Math methods over legacy patterns.";
3
- readonly id: "mathMethods";
4
- readonly presets: readonly ["stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferModernMath", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=mathMethods.d.ts.map
@@ -1,128 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { skipParentheses } from "./utils/skipParentheses.js";
3
- import { getTSNodeRange, hasSameTokens, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import { SyntaxKind } from "typescript";
5
- //#region src/rules/mathMethods.ts
6
- function checkLogDivideConstant(node, typeChecker, constantName, replacementMethod) {
7
- if (node.operatorToken.kind !== SyntaxKind.SlashToken) return;
8
- const left = skipParentheses(node.left);
9
- const right = skipParentheses(node.right);
10
- if (getMathMethodArgument(left, "log", typeChecker) && isMathProperty(right, constantName, typeChecker)) return {
11
- description: `Math.log(…) / Math.${constantName}`,
12
- replacement: `Math.${replacementMethod}(…)`
13
- };
14
- }
15
- function checkLogTimesConstant(node, typeChecker, constantName, replacementMethod) {
16
- if (node.operatorToken.kind !== SyntaxKind.AsteriskToken) return;
17
- const left = skipParentheses(node.left);
18
- const right = skipParentheses(node.right);
19
- if (getMathMethodArgument(left, "log", typeChecker) && isMathProperty(right, constantName, typeChecker)) return {
20
- description: `Math.log(…) * Math.${constantName}`,
21
- replacement: `Math.${replacementMethod}(…)`
22
- };
23
- if (isMathProperty(left, constantName, typeChecker) && getMathMethodArgument(right, "log", typeChecker)) return {
24
- description: `Math.${constantName} * Math.log(…)`,
25
- replacement: `Math.${replacementMethod}(…)`
26
- };
27
- }
28
- function flattenPlusExpression(node) {
29
- const unwrapped = skipParentheses(node);
30
- if (unwrapped.kind === SyntaxKind.BinaryExpression && unwrapped.operatorToken.kind === SyntaxKind.PlusToken) return [...flattenPlusExpression(unwrapped.left), ...flattenPlusExpression(unwrapped.right)];
31
- return [unwrapped];
32
- }
33
- function getMathMethodArgument(node, methodName, typeChecker) {
34
- if (node.kind !== SyntaxKind.CallExpression || node.questionDotToken || node.arguments.length !== 1) return false;
35
- const argument = node.arguments[0];
36
- if (argument.kind === SyntaxKind.SpreadElement || !isMathProperty(node.expression, methodName, typeChecker)) return;
37
- return argument;
38
- }
39
- function isMathProperty(node, propertyName, typeChecker) {
40
- return node.kind === SyntaxKind.PropertyAccessExpression && !node.questionDotToken && node.name.kind === SyntaxKind.Identifier && node.name.text === propertyName && node.expression.kind === SyntaxKind.Identifier && isGlobalDeclarationOfName(node.expression, "Math", typeChecker);
41
- }
42
- function isPowerTwoExpression(node, sourceFile) {
43
- const unwrapped = skipParentheses(node);
44
- if (unwrapped.kind !== SyntaxKind.BinaryExpression) return false;
45
- if (unwrapped.operatorToken.kind === SyntaxKind.AsteriskToken) return hasSameTokens(unwrapped.left, unwrapped.right, sourceFile);
46
- if (unwrapped.operatorToken.kind === SyntaxKind.AsteriskAsteriskToken) {
47
- const right = skipParentheses(unwrapped.right);
48
- return right.kind === SyntaxKind.NumericLiteral && right.text === "2";
49
- }
50
- return false;
51
- }
52
- var mathMethods_default = ruleCreator.createRule(typescriptLanguage, {
53
- about: {
54
- description: "Prefer modern Math methods over legacy patterns.",
55
- id: "mathMethods",
56
- presets: ["stylisticStrict"]
57
- },
58
- messages: { preferModernMath: {
59
- primary: "Prefer `{{ replacement }}` over `{{ description }}`.",
60
- secondary: ["Modern Math methods are clearer and more explicit about their purpose.", "These methods have been available since ES2015 and are well-supported in all modern environments."],
61
- suggestions: ["Replace the legacy pattern with the modern Math method."]
62
- } },
63
- setup(context) {
64
- return { visitors: {
65
- BinaryExpression: (node, { sourceFile, typeChecker }) => {
66
- for (const { constantName, replacementMethod } of [{
67
- constantName: "LOG10E",
68
- replacementMethod: "log10"
69
- }, {
70
- constantName: "LOG2E",
71
- replacementMethod: "log2"
72
- }]) {
73
- const match = checkLogTimesConstant(node, typeChecker, constantName, replacementMethod);
74
- if (match) {
75
- context.report({
76
- data: {
77
- description: match.description,
78
- replacement: match.replacement
79
- },
80
- message: "preferModernMath",
81
- range: getTSNodeRange(node, sourceFile)
82
- });
83
- return;
84
- }
85
- }
86
- for (const { constantName, replacementMethod } of [{
87
- constantName: "LN10",
88
- replacementMethod: "log10"
89
- }, {
90
- constantName: "LN2",
91
- replacementMethod: "log2"
92
- }]) {
93
- const match = checkLogDivideConstant(node, typeChecker, constantName, replacementMethod);
94
- if (match) {
95
- context.report({
96
- data: {
97
- description: match.description,
98
- replacement: match.replacement
99
- },
100
- message: "preferModernMath",
101
- range: getTSNodeRange(node, sourceFile)
102
- });
103
- return;
104
- }
105
- }
106
- },
107
- CallExpression: (node, { sourceFile, typeChecker }) => {
108
- const argument = getMathMethodArgument(node, "sqrt", typeChecker);
109
- if (!argument) return;
110
- const expressions = flattenPlusExpression(argument);
111
- if (!expressions.every((expr) => isPowerTwoExpression(expr, sourceFile))) return;
112
- const replacementMethod = expressions.length === 1 ? "abs" : "hypot";
113
- context.report({
114
- data: {
115
- description: "Math.sqrt(…)",
116
- replacement: `Math.${replacementMethod}(…)`
117
- },
118
- message: "preferModernMath",
119
- range: getTSNodeRange(node, sourceFile)
120
- });
121
- }
122
- } };
123
- }
124
- });
125
- //#endregion
126
- export { mathMethods_default as default };
127
-
128
- //# sourceMappingURL=mathMethods.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using the void operator on expressions that are already void or undefined.";
3
- readonly id: "meaninglessVoidOperators";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "meaninglessVoid", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=meaninglessVoidOperators.d.ts.map
@@ -1,39 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
3
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import ts from "typescript";
5
- import * as tsutils from "ts-api-utils";
6
- //#region src/rules/meaninglessVoidOperators.ts
7
- function isVoidOrUndefinedType(type) {
8
- return tsutils.isTypeFlagSet(type, ts.TypeFlags.Void | ts.TypeFlags.Undefined);
9
- }
10
- var meaninglessVoidOperators_default = ruleCreator.createRule(typescriptLanguage, {
11
- about: {
12
- description: "Reports using the void operator on expressions that are already void or undefined.",
13
- id: "meaninglessVoidOperators",
14
- presets: ["logical", "logicalStrict"]
15
- },
16
- messages: { meaninglessVoid: {
17
- primary: "Using the `void` operator on a value of type `{{ type }}` does nothing.",
18
- secondary: ["The `void` operator is meant to discard a return value and produce `undefined`.", "Applying `void` to a value that is already `void` or `undefined` has no effect."],
19
- suggestions: ["Remove the `void` operator.", "If you need to explicitly return `undefined`, use the value directly."]
20
- } },
21
- setup(context) {
22
- return { visitors: { VoidExpression: (node, { sourceFile, typeChecker }) => {
23
- const argumentType = getConstrainedTypeAtLocation(node.expression, typeChecker);
24
- if (!tsutils.unionConstituents(argumentType).every(isVoidOrUndefinedType)) return;
25
- context.report({
26
- data: { type: typeChecker.typeToString(argumentType) },
27
- message: "meaninglessVoid",
28
- range: {
29
- begin: node.getStart(sourceFile),
30
- end: node.getEnd()
31
- }
32
- });
33
- } } };
34
- }
35
- });
36
- //#endregion
37
- export { meaninglessVoidOperators_default as default };
38
-
39
- //# sourceMappingURL=meaninglessVoidOperators.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Require expressions of type void to appear in statement position.";
3
- readonly id: "misleadingVoidExpressions";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "voidExpressionArrow" | "voidExpressionReturn" | "voidExpressionValue", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=misleadingVoidExpressions.d.ts.map
@@ -1,128 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
3
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import * as ts$1 from "typescript";
5
- import * as tsutils from "ts-api-utils";
6
- //#region src/rules/misleadingVoidExpressions.ts
7
- function getParentFunction(node) {
8
- let current = node.parent;
9
- while (current) {
10
- if (ts$1.isFunctionDeclaration(current) || ts$1.isFunctionExpression(current) || ts$1.isArrowFunction(current) || ts$1.isMethodDeclaration(current)) return current;
11
- current = current.parent;
12
- }
13
- }
14
- function isInValidPosition(node) {
15
- if (ts$1.isExpressionStatement(node.parent)) return { valid: true };
16
- if (ts$1.isBinaryExpression(node.parent) && node.parent.operatorToken.kind === ts$1.SyntaxKind.CommaToken) {
17
- if (node.parent.right === node) return isInValidPosition(node.parent);
18
- return { valid: true };
19
- }
20
- if (ts$1.isParenthesizedExpression(node.parent)) return isInValidPosition(node.parent);
21
- if (ts$1.isConditionalExpression(node.parent) && (node.parent.whenTrue === node || node.parent.whenFalse === node)) return isInValidPosition(node.parent);
22
- if (ts$1.isBinaryExpression(node.parent) && (node.parent.operatorToken.kind === ts$1.SyntaxKind.AmpersandAmpersandToken || node.parent.operatorToken.kind === ts$1.SyntaxKind.BarBarToken || node.parent.operatorToken.kind === ts$1.SyntaxKind.QuestionQuestionToken) && node.parent.right === node) return isInValidPosition(node.parent);
23
- if (ts$1.isVoidExpression(node.parent)) return { valid: true };
24
- if (ts$1.isArrowFunction(node.parent) && node.parent.body === node) return {
25
- invalidAncestor: node.parent,
26
- valid: false
27
- };
28
- if (ts$1.isReturnStatement(node.parent)) return {
29
- invalidAncestor: node.parent,
30
- valid: false
31
- };
32
- return {
33
- invalidAncestor: node,
34
- valid: false
35
- };
36
- }
37
- function isVoidLike(type) {
38
- return tsutils.isTypeFlagSet(type, ts$1.TypeFlags.VoidLike);
39
- }
40
- var misleadingVoidExpressions_default = ruleCreator.createRule(typescriptLanguage, {
41
- about: {
42
- description: "Require expressions of type void to appear in statement position.",
43
- id: "misleadingVoidExpressions",
44
- presets: ["logical", "logicalStrict"]
45
- },
46
- messages: {
47
- voidExpressionArrow: {
48
- primary: "Returning a void expression from an arrow function shorthand is misleading.",
49
- secondary: ["Arrow function shorthand returns a value, but void expressions are meant to be ignored.", "This can confuse readers who expect a meaningful return value."],
50
- suggestions: ["Add braces to the arrow function to make the void expression a statement."]
51
- },
52
- voidExpressionReturn: {
53
- primary: "Returning a void expression from a function is misleading.",
54
- secondary: ["Return statements imply a value is being returned, but void expressions have no meaningful value.", "This can confuse readers about the function's intent."],
55
- suggestions: ["Move the void expression before the return statement.", "Remove the return keyword if this is the last statement."]
56
- },
57
- voidExpressionValue: {
58
- primary: "Void expressions should not be used as values.",
59
- secondary: ["A `void` expression evaluates to `undefined` but its intent is to be ignored.", "Using void expressions as values can lead to confusing code and potential bugs."],
60
- suggestions: ["Move the void expression to its own statement.", "Wrap with `void` operator to indicate the value is intentionally ignored."]
61
- }
62
- },
63
- setup(context) {
64
- function checkVoidExpression(node, { sourceFile, typeChecker }) {
65
- if (!isVoidLike(getConstrainedTypeAtLocation(node, typeChecker))) return;
66
- const positionResult = isInValidPosition(node);
67
- if (positionResult.valid) return;
68
- const { invalidAncestor } = positionResult;
69
- if (ts$1.isArrowFunction(invalidAncestor)) {
70
- const arrowBodyText = sourceFile.text.slice(invalidAncestor.body.getStart(sourceFile), invalidAncestor.body.getEnd());
71
- const nodeText = sourceFile.text.slice(node.getStart(sourceFile), node.getEnd());
72
- context.report({
73
- message: "voidExpressionArrow",
74
- range: getTSNodeRange(node, sourceFile),
75
- suggestions: [{
76
- id: "addBraces",
77
- range: getTSNodeRange(invalidAncestor.body, sourceFile),
78
- text: `{ ${arrowBodyText}; }`
79
- }, {
80
- id: "wrapWithVoid",
81
- range: getTSNodeRange(node, sourceFile),
82
- text: `void ${nodeText}`
83
- }]
84
- });
85
- return;
86
- }
87
- const nodeText = sourceFile.text.slice(node.getStart(sourceFile), node.getEnd());
88
- const suggestionBase = {
89
- id: "wrapWithVoid",
90
- range: getTSNodeRange(node, sourceFile),
91
- text: `void ${nodeText}`
92
- };
93
- if (!ts$1.isReturnStatement(invalidAncestor)) {
94
- context.report({
95
- message: "voidExpressionValue",
96
- range: getTSNodeRange(node, sourceFile),
97
- suggestions: [suggestionBase]
98
- });
99
- return;
100
- }
101
- const functionNode = getParentFunction(invalidAncestor);
102
- const isLastStatement = functionNode && ts$1.isBlock(invalidAncestor.parent) && invalidAncestor.parent.parent === functionNode && invalidAncestor.parent.statements.at(-1) === invalidAncestor;
103
- const returnValueText = invalidAncestor.expression ? sourceFile.text.slice(invalidAncestor.expression.getStart(sourceFile), invalidAncestor.expression.getEnd()) : "";
104
- context.report({
105
- message: "voidExpressionReturn",
106
- range: getTSNodeRange(node, sourceFile),
107
- suggestions: [isLastStatement ? {
108
- id: "removeReturn",
109
- range: getTSNodeRange(invalidAncestor, sourceFile),
110
- text: `${returnValueText};`
111
- } : {
112
- id: "moveBeforeReturn",
113
- range: getTSNodeRange(invalidAncestor, sourceFile),
114
- text: `${returnValueText}; return;`
115
- }, suggestionBase]
116
- });
117
- }
118
- return { visitors: {
119
- AwaitExpression: checkVoidExpression,
120
- CallExpression: checkVoidExpression,
121
- TaggedTemplateExpression: checkVoidExpression
122
- } };
123
- }
124
- });
125
- //#endregion
126
- export { misleadingVoidExpressions_default as default };
127
-
128
- //# sourceMappingURL=misleadingVoidExpressions.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Require non-empty specifier lists in import and export statements.";
3
- readonly id: "moduleSpecifierLists";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "emptyExportSpecifiers" | "emptyImportSpecifiers", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=moduleSpecifierLists.d.ts.map
@@ -1,92 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/moduleSpecifierLists.ts
5
- function hasNamedBindings(node) {
6
- const namedBindings = node.importClause?.namedBindings;
7
- if (!namedBindings) return false;
8
- return !ts$1.isNamedImports(namedBindings) || !!namedBindings.elements.length;
9
- }
10
- function hasNamespaceImport(node) {
11
- const namedBindings = node.importClause?.namedBindings;
12
- return namedBindings && ts$1.isNamespaceImport(namedBindings);
13
- }
14
- function isEmptyNamedImports(node) {
15
- const namedBindings = node.importClause?.namedBindings;
16
- return namedBindings && ts$1.isNamedImports(namedBindings) && !namedBindings.elements.length;
17
- }
18
- var moduleSpecifierLists_default = ruleCreator.createRule(typescriptLanguage, {
19
- about: {
20
- description: "Require non-empty specifier lists in import and export statements.",
21
- id: "moduleSpecifierLists",
22
- presets: ["logical", "logicalStrict"]
23
- },
24
- messages: {
25
- emptyExportSpecifiers: {
26
- primary: "Export statement with empty specifier list is unnecessary.",
27
- secondary: ["Empty export braces serve no purpose and can be removed.", "If re-exporting from a module, ensure you specify what to export."],
28
- suggestions: ["Remove the empty export statement."]
29
- },
30
- emptyImportSpecifiers: {
31
- primary: "Import statement with empty specifier list is unnecessary.",
32
- secondary: ["Empty import braces serve no purpose and can confuse readers.", "Use a side-effect import if you only need to run the module's code."],
33
- suggestions: ["Remove the empty braces or convert to a side-effect import."]
34
- }
35
- },
36
- setup(context) {
37
- function createExportSuggestions(moduleSpecifier, node, sourceFile) {
38
- const moduleSpecifierText = sourceFile.text.slice(moduleSpecifier.getStart(sourceFile), moduleSpecifier.getEnd());
39
- return [{
40
- id: "removeStatement",
41
- range: getTSNodeRange(node, sourceFile),
42
- text: ""
43
- }, ...moduleSpecifierText ? [{
44
- id: "convertToSideEffectImport",
45
- range: getTSNodeRange(node, sourceFile),
46
- text: `import ${moduleSpecifierText};`
47
- }] : []];
48
- }
49
- function createImportSuggestions(importClause, node, sourceFile) {
50
- const moduleSpecifier = sourceFile.text.slice(node.moduleSpecifier.getStart(sourceFile), node.moduleSpecifier.getEnd());
51
- if (importClause.name) {
52
- const defaultImportName = importClause.name.getText(sourceFile);
53
- return [{
54
- id: "removeEmptyBraces",
55
- range: getTSNodeRange(node, sourceFile),
56
- text: `import ${defaultImportName} from ${moduleSpecifier};`
57
- }];
58
- }
59
- return [{
60
- id: "removeStatement",
61
- range: getTSNodeRange(node, sourceFile),
62
- text: ""
63
- }, ...importClause.phaseModifier === ts$1.SyntaxKind.TypeKeyword ? [] : [{
64
- id: "convertToSideEffectImport",
65
- range: getTSNodeRange(node, sourceFile),
66
- text: `import ${moduleSpecifier};`
67
- }]];
68
- }
69
- return { visitors: {
70
- ExportDeclaration: (node, { sourceFile }) => {
71
- if (node.moduleSpecifier === void 0 || !ts$1.isExportDeclaration(node) || !node.exportClause || !ts$1.isNamedExports(node.exportClause) || !!node.exportClause.elements.length) return;
72
- context.report({
73
- message: "emptyExportSpecifiers",
74
- range: getTSNodeRange(node, sourceFile),
75
- suggestions: createExportSuggestions(node.moduleSpecifier, node, sourceFile)
76
- });
77
- },
78
- ImportDeclaration: (node, { sourceFile }) => {
79
- if (hasNamedBindings(node) || hasNamespaceImport(node) || !isEmptyNamedImports(node) || !node.importClause) return;
80
- context.report({
81
- message: "emptyImportSpecifiers",
82
- range: getTSNodeRange(node.importClause.namedBindings ?? node.importClause, sourceFile),
83
- suggestions: createImportSuggestions(node.importClause, node, sourceFile)
84
- });
85
- }
86
- } };
87
- }
88
- });
89
- //#endregion
90
- export { moduleSpecifierLists_default as default };
91
-
92
- //# sourceMappingURL=moduleSpecifierLists.js.map