@flint.fyi/ts 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (666) hide show
  1. package/{lib/plugin.d.ts → dist/index.d.mts} +1 -1
  2. package/dist/index.mjs +22467 -0
  3. package/package.json +8 -7
  4. package/lib/index.d.ts +0 -2
  5. package/lib/index.js +0 -2
  6. package/lib/plugin.js +0 -619
  7. package/lib/rules/accessorPairGroups.d.ts +0 -9
  8. package/lib/rules/accessorPairGroups.js +0 -46
  9. package/lib/rules/accessorPairTypes.d.ts +0 -9
  10. package/lib/rules/accessorPairTypes.js +0 -70
  11. package/lib/rules/accessorThisRecursion.d.ts +0 -9
  12. package/lib/rules/accessorThisRecursion.js +0 -63
  13. package/lib/rules/anyArguments.d.ts +0 -9
  14. package/lib/rules/anyArguments.js +0 -232
  15. package/lib/rules/anyAssignments.d.ts +0 -9
  16. package/lib/rules/anyAssignments.js +0 -263
  17. package/lib/rules/anyCalls.d.ts +0 -9
  18. package/lib/rules/anyCalls.js +0 -66
  19. package/lib/rules/anyMemberAccess.d.ts +0 -9
  20. package/lib/rules/anyMemberAccess.js +0 -83
  21. package/lib/rules/anyReturns.d.ts +0 -9
  22. package/lib/rules/anyReturns.js +0 -100
  23. package/lib/rules/arguments.d.ts +0 -9
  24. package/lib/rules/arguments.js +0 -36
  25. package/lib/rules/arrayCallbackReturns.d.ts +0 -9
  26. package/lib/rules/arrayCallbackReturns.js +0 -71
  27. package/lib/rules/arrayConstructors.d.ts +0 -9
  28. package/lib/rules/arrayConstructors.js +0 -45
  29. package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -9
  30. package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -52
  31. package/lib/rules/arrayElementDeletions.d.ts +0 -9
  32. package/lib/rules/arrayElementDeletions.js +0 -41
  33. package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -9
  34. package/lib/rules/arrayEmptyCallbackSlots.js +0 -38
  35. package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -9
  36. package/lib/rules/arrayExistenceChecksConsistency.js +0 -84
  37. package/lib/rules/arrayFilteredFinds.d.ts +0 -9
  38. package/lib/rules/arrayFilteredFinds.js +0 -72
  39. package/lib/rules/arrayFinds.d.ts +0 -9
  40. package/lib/rules/arrayFinds.js +0 -39
  41. package/lib/rules/arrayFlatMapMethods.d.ts +0 -9
  42. package/lib/rules/arrayFlatMapMethods.js +0 -45
  43. package/lib/rules/arrayFlatMethods.d.ts +0 -9
  44. package/lib/rules/arrayFlatMethods.js +0 -81
  45. package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -9
  46. package/lib/rules/arrayFlatUnnecessaryDepths.js +0 -31
  47. package/lib/rules/arrayIncludes.d.ts +0 -9
  48. package/lib/rules/arrayIncludes.js +0 -51
  49. package/lib/rules/arrayIncludesMethods.d.ts +0 -9
  50. package/lib/rules/arrayIncludesMethods.js +0 -35
  51. package/lib/rules/arrayIndexOfMethods.d.ts +0 -9
  52. package/lib/rules/arrayIndexOfMethods.js +0 -49
  53. package/lib/rules/arrayLoops.d.ts +0 -9
  54. package/lib/rules/arrayLoops.js +0 -34
  55. package/lib/rules/arrayMapIdentities.d.ts +0 -9
  56. package/lib/rules/arrayMapIdentities.js +0 -72
  57. package/lib/rules/arrayMutableReverses.d.ts +0 -9
  58. package/lib/rules/arrayMutableReverses.js +0 -37
  59. package/lib/rules/arrayMutableSorts.d.ts +0 -9
  60. package/lib/rules/arrayMutableSorts.js +0 -70
  61. package/lib/rules/arrayReduceTypeArguments.d.ts +0 -9
  62. package/lib/rules/arrayReduceTypeArguments.js +0 -62
  63. package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -9
  64. package/lib/rules/arraySliceUnnecessaryEnd.js +0 -49
  65. package/lib/rules/arraySomeMethods.d.ts +0 -9
  66. package/lib/rules/arraySomeMethods.js +0 -75
  67. package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -9
  68. package/lib/rules/arrayTernarySpreadingConsistency.js +0 -72
  69. package/lib/rules/arrayTypes.d.ts +0 -16
  70. package/lib/rules/arrayTypes.js +0 -109
  71. package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -9
  72. package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -95
  73. package/lib/rules/asConstAssertions.d.ts +0 -9
  74. package/lib/rules/asConstAssertions.js +0 -55
  75. package/lib/rules/assignmentOperatorShorthands.d.ts +0 -9
  76. package/lib/rules/assignmentOperatorShorthands.js +0 -45
  77. package/lib/rules/asyncFunctionAwaits.d.ts +0 -9
  78. package/lib/rules/asyncFunctionAwaits.js +0 -53
  79. package/lib/rules/asyncPromiseExecutors.d.ts +0 -9
  80. package/lib/rules/asyncPromiseExecutors.js +0 -39
  81. package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -9
  82. package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -50
  83. package/lib/rules/atAccesses.d.ts +0 -9
  84. package/lib/rules/atAccesses.js +0 -50
  85. package/lib/rules/builtinCoercions.d.ts +0 -9
  86. package/lib/rules/builtinCoercions.js +0 -115
  87. package/lib/rules/builtinConstructorNews.d.ts +0 -9
  88. package/lib/rules/builtinConstructorNews.js +0 -87
  89. package/lib/rules/caseDeclarations.d.ts +0 -9
  90. package/lib/rules/caseDeclarations.js +0 -38
  91. package/lib/rules/caseDuplicates.d.ts +0 -9
  92. package/lib/rules/caseDuplicates.js +0 -34
  93. package/lib/rules/caseFallthroughs.d.ts +0 -9
  94. package/lib/rules/caseFallthroughs.js +0 -74
  95. package/lib/rules/catchCallbackTypes.d.ts +0 -9
  96. package/lib/rules/catchCallbackTypes.js +0 -65
  97. package/lib/rules/caughtVariableNames.d.ts +0 -9
  98. package/lib/rules/caughtVariableNames.js +0 -38
  99. package/lib/rules/chainedAssignments.d.ts +0 -9
  100. package/lib/rules/chainedAssignments.js +0 -31
  101. package/lib/rules/charAtComparisons.d.ts +0 -9
  102. package/lib/rules/charAtComparisons.js +0 -53
  103. package/lib/rules/classAssignments.d.ts +0 -9
  104. package/lib/rules/classAssignments.js +0 -27
  105. package/lib/rules/classFieldDeclarations.d.ts +0 -9
  106. package/lib/rules/classFieldDeclarations.js +0 -38
  107. package/lib/rules/classLiteralProperties.d.ts +0 -9
  108. package/lib/rules/classLiteralProperties.js +0 -43
  109. package/lib/rules/classMemberDuplicates.d.ts +0 -9
  110. package/lib/rules/classMemberDuplicates.js +0 -69
  111. package/lib/rules/classMethodsThis.d.ts +0 -13
  112. package/lib/rules/classMethodsThis.js +0 -122
  113. package/lib/rules/combinedPushes.d.ts +0 -9
  114. package/lib/rules/combinedPushes.js +0 -54
  115. package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -9
  116. package/lib/rules/consecutiveNonNullAssertions.js +0 -37
  117. package/lib/rules/consoleCalls.d.ts +0 -8
  118. package/lib/rules/consoleCalls.js +0 -26
  119. package/lib/rules/constantAssignments.d.ts +0 -9
  120. package/lib/rules/constantAssignments.js +0 -39
  121. package/lib/rules/constructorGenericCalls.d.ts +0 -15
  122. package/lib/rules/constructorGenericCalls.js +0 -136
  123. package/lib/rules/constructorReturns.d.ts +0 -9
  124. package/lib/rules/constructorReturns.js +0 -39
  125. package/lib/rules/constructorSupers.d.ts +0 -9
  126. package/lib/rules/constructorSupers.js +0 -75
  127. package/lib/rules/dateConstructorClones.d.ts +0 -9
  128. package/lib/rules/dateConstructorClones.js +0 -35
  129. package/lib/rules/dateNowTimestamps.d.ts +0 -9
  130. package/lib/rules/dateNowTimestamps.js +0 -55
  131. package/lib/rules/debuggerStatements.d.ts +0 -9
  132. package/lib/rules/debuggerStatements.js +0 -31
  133. package/lib/rules/defaultCaseLast.d.ts +0 -9
  134. package/lib/rules/defaultCaseLast.js +0 -34
  135. package/lib/rules/defaultParameterLast.d.ts +0 -9
  136. package/lib/rules/defaultParameterLast.js +0 -40
  137. package/lib/rules/deprecated.d.ts +0 -9
  138. package/lib/rules/deprecated.js +0 -241
  139. package/lib/rules/destructuringConsistency.d.ts +0 -9
  140. package/lib/rules/destructuringConsistency.js +0 -104
  141. package/lib/rules/duplicateArguments.d.ts +0 -9
  142. package/lib/rules/duplicateArguments.js +0 -43
  143. package/lib/rules/dynamicDeletes.d.ts +0 -9
  144. package/lib/rules/dynamicDeletes.js +0 -35
  145. package/lib/rules/elseIfDuplicates.d.ts +0 -9
  146. package/lib/rules/elseIfDuplicates.js +0 -36
  147. package/lib/rules/elseReturns.d.ts +0 -9
  148. package/lib/rules/elseReturns.js +0 -65
  149. package/lib/rules/emptyBlocks.d.ts +0 -9
  150. package/lib/rules/emptyBlocks.js +0 -54
  151. package/lib/rules/emptyDestructures.d.ts +0 -9
  152. package/lib/rules/emptyDestructures.js +0 -32
  153. package/lib/rules/emptyEnums.d.ts +0 -9
  154. package/lib/rules/emptyEnums.js +0 -28
  155. package/lib/rules/emptyExports.d.ts +0 -9
  156. package/lib/rules/emptyExports.js +0 -58
  157. package/lib/rules/emptyFiles.d.ts +0 -9
  158. package/lib/rules/emptyFiles.js +0 -42
  159. package/lib/rules/emptyFunctions.d.ts +0 -9
  160. package/lib/rules/emptyFunctions.js +0 -59
  161. package/lib/rules/emptyModuleAttributes.d.ts +0 -9
  162. package/lib/rules/emptyModuleAttributes.js +0 -33
  163. package/lib/rules/emptyObjectTypes.d.ts +0 -9
  164. package/lib/rules/emptyObjectTypes.js +0 -45
  165. package/lib/rules/emptyStaticBlocks.d.ts +0 -9
  166. package/lib/rules/emptyStaticBlocks.js +0 -40
  167. package/lib/rules/emptyTypeParameterLists.d.ts +0 -9
  168. package/lib/rules/emptyTypeParameterLists.js +0 -29
  169. package/lib/rules/enumInitializers.d.ts +0 -9
  170. package/lib/rules/enumInitializers.js +0 -52
  171. package/lib/rules/enumMemberLiterals.d.ts +0 -9
  172. package/lib/rules/enumMemberLiterals.js +0 -37
  173. package/lib/rules/enumValueConsistency.d.ts +0 -9
  174. package/lib/rules/enumValueConsistency.js +0 -54
  175. package/lib/rules/enumValueDuplicates.d.ts +0 -9
  176. package/lib/rules/enumValueDuplicates.js +0 -43
  177. package/lib/rules/equalityOperatorNegations.d.ts +0 -8
  178. package/lib/rules/equalityOperatorNegations.js +0 -58
  179. package/lib/rules/equalityOperators.d.ts +0 -9
  180. package/lib/rules/equalityOperators.js +0 -42
  181. package/lib/rules/errorMessages.d.ts +0 -9
  182. package/lib/rules/errorMessages.js +0 -54
  183. package/lib/rules/errorSubclassProperties.d.ts +0 -9
  184. package/lib/rules/errorSubclassProperties.js +0 -142
  185. package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -9
  186. package/lib/rules/errorUnnecessaryCaptureStackTraces.js +0 -53
  187. package/lib/rules/escapeSequenceCasing.d.ts +0 -9
  188. package/lib/rules/escapeSequenceCasing.js +0 -73
  189. package/lib/rules/evals.d.ts +0 -9
  190. package/lib/rules/evals.js +0 -29
  191. package/lib/rules/evolvingVariableTypes.d.ts +0 -9
  192. package/lib/rules/evolvingVariableTypes.js +0 -31
  193. package/lib/rules/exceptionAssignments.d.ts +0 -9
  194. package/lib/rules/exceptionAssignments.js +0 -37
  195. package/lib/rules/explicitAnys.d.ts +0 -9
  196. package/lib/rules/explicitAnys.js +0 -53
  197. package/lib/rules/exponentiationOperators.d.ts +0 -9
  198. package/lib/rules/exponentiationOperators.js +0 -32
  199. package/lib/rules/exportFromImports.d.ts +0 -9
  200. package/lib/rules/exportFromImports.js +0 -117
  201. package/lib/rules/exportMutables.d.ts +0 -9
  202. package/lib/rules/exportMutables.js +0 -31
  203. package/lib/rules/exportUniqueNames.d.ts +0 -9
  204. package/lib/rules/exportUniqueNames.js +0 -63
  205. package/lib/rules/extraneousClasses.d.ts +0 -15
  206. package/lib/rules/extraneousClasses.js +0 -109
  207. package/lib/rules/fetchMethodBodies.d.ts +0 -9
  208. package/lib/rules/fetchMethodBodies.js +0 -70
  209. package/lib/rules/finallyStatementSafety.d.ts +0 -9
  210. package/lib/rules/finallyStatementSafety.js +0 -45
  211. package/lib/rules/forDirections.d.ts +0 -9
  212. package/lib/rules/forDirections.js +0 -73
  213. package/lib/rules/forInArrays.d.ts +0 -9
  214. package/lib/rules/forInArrays.js +0 -44
  215. package/lib/rules/forInGuards.d.ts +0 -8
  216. package/lib/rules/forInGuards.js +0 -42
  217. package/lib/rules/functionApplySpreads.d.ts +0 -9
  218. package/lib/rules/functionApplySpreads.js +0 -61
  219. package/lib/rules/functionAssignments.d.ts +0 -9
  220. package/lib/rules/functionAssignments.js +0 -27
  221. package/lib/rules/functionCurryingRedundancy.d.ts +0 -9
  222. package/lib/rules/functionCurryingRedundancy.js +0 -51
  223. package/lib/rules/functionDeclarationStyles.d.ts +0 -15
  224. package/lib/rules/functionDeclarationStyles.js +0 -65
  225. package/lib/rules/functionNameMatches.d.ts +0 -9
  226. package/lib/rules/functionNameMatches.js +0 -72
  227. package/lib/rules/functionNewCalls.d.ts +0 -9
  228. package/lib/rules/functionNewCalls.js +0 -40
  229. package/lib/rules/generatorFunctionYields.d.ts +0 -9
  230. package/lib/rules/generatorFunctionYields.js +0 -48
  231. package/lib/rules/getterReturns.d.ts +0 -9
  232. package/lib/rules/getterReturns.js +0 -63
  233. package/lib/rules/globalAssignments.d.ts +0 -9
  234. package/lib/rules/globalAssignments.js +0 -45
  235. package/lib/rules/globalObjectCalls.d.ts +0 -9
  236. package/lib/rules/globalObjectCalls.js +0 -40
  237. package/lib/rules/globalThisAliases.d.ts +0 -9
  238. package/lib/rules/globalThisAliases.js +0 -45
  239. package/lib/rules/impliedEvals.d.ts +0 -9
  240. package/lib/rules/impliedEvals.js +0 -128
  241. package/lib/rules/importEmptyBlocks.d.ts +0 -9
  242. package/lib/rules/importEmptyBlocks.js +0 -51
  243. package/lib/rules/importTypeSideEffects.d.ts +0 -9
  244. package/lib/rules/importTypeSideEffects.js +0 -29
  245. package/lib/rules/indexedObjectTypes.d.ts +0 -15
  246. package/lib/rules/indexedObjectTypes.js +0 -81
  247. package/lib/rules/instanceOfArrays.d.ts +0 -9
  248. package/lib/rules/instanceOfArrays.js +0 -29
  249. package/lib/rules/irregularWhitespaces.d.ts +0 -15
  250. package/lib/rules/irregularWhitespaces.js +0 -95
  251. package/lib/rules/isNaNComparisons.d.ts +0 -9
  252. package/lib/rules/isNaNComparisons.js +0 -41
  253. package/lib/rules/literalConstructorWrappers.d.ts +0 -9
  254. package/lib/rules/literalConstructorWrappers.js +0 -62
  255. package/lib/rules/mathMethods.d.ts +0 -9
  256. package/lib/rules/mathMethods.js +0 -126
  257. package/lib/rules/meaninglessVoidOperators.d.ts +0 -9
  258. package/lib/rules/meaninglessVoidOperators.js +0 -37
  259. package/lib/rules/misleadingVoidExpressions.d.ts +0 -9
  260. package/lib/rules/misleadingVoidExpressions.js +0 -126
  261. package/lib/rules/moduleSpecifierLists.d.ts +0 -9
  262. package/lib/rules/moduleSpecifierLists.js +0 -90
  263. package/lib/rules/multilineAmbiguities.d.ts +0 -9
  264. package/lib/rules/multilineAmbiguities.js +0 -62
  265. package/lib/rules/namedDefaultExports.d.ts +0 -9
  266. package/lib/rules/namedDefaultExports.js +0 -58
  267. package/lib/rules/namespaceDeclarations.d.ts +0 -13
  268. package/lib/rules/namespaceDeclarations.js +0 -35
  269. package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -9
  270. package/lib/rules/namespaceImplicitAmbientImports.js +0 -38
  271. package/lib/rules/namespaceKeywords.d.ts +0 -9
  272. package/lib/rules/namespaceKeywords.js +0 -38
  273. package/lib/rules/nativeObjectExtensions.d.ts +0 -9
  274. package/lib/rules/nativeObjectExtensions.js +0 -112
  275. package/lib/rules/negativeIndexLengthMethods.d.ts +0 -9
  276. package/lib/rules/negativeIndexLengthMethods.js +0 -178
  277. package/lib/rules/negativeZeroComparisons.d.ts +0 -9
  278. package/lib/rules/negativeZeroComparisons.js +0 -46
  279. package/lib/rules/nestedStandaloneIfs.d.ts +0 -9
  280. package/lib/rules/nestedStandaloneIfs.js +0 -103
  281. package/lib/rules/newDefinitions.d.ts +0 -9
  282. package/lib/rules/newDefinitions.js +0 -82
  283. package/lib/rules/newExpressions.d.ts +0 -9
  284. package/lib/rules/newExpressions.js +0 -36
  285. package/lib/rules/newNativeNonConstructors.d.ts +0 -9
  286. package/lib/rules/newNativeNonConstructors.js +0 -37
  287. package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -9
  288. package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -61
  289. package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -9
  290. package/lib/rules/nonNullAssertedOptionalChains.js +0 -67
  291. package/lib/rules/nonNullAssertionPlacement.d.ts +0 -9
  292. package/lib/rules/nonNullAssertionPlacement.js +0 -92
  293. package/lib/rules/nonNullableTypeAssertions.d.ts +0 -9
  294. package/lib/rules/nonNullableTypeAssertions.js +0 -76
  295. package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -9
  296. package/lib/rules/nonOctalDecimalEscapes.js +0 -46
  297. package/lib/rules/nullishCheckStyle.d.ts +0 -20
  298. package/lib/rules/nullishCheckStyle.js +0 -142
  299. package/lib/rules/nullishCoalescingOperators.d.ts +0 -21
  300. package/lib/rules/nullishCoalescingOperators.js +0 -321
  301. package/lib/rules/numberMethodRanges.d.ts +0 -9
  302. package/lib/rules/numberMethodRanges.js +0 -72
  303. package/lib/rules/numberStaticMethods.d.ts +0 -9
  304. package/lib/rules/numberStaticMethods.js +0 -51
  305. package/lib/rules/numericErasingOperations.d.ts +0 -9
  306. package/lib/rules/numericErasingOperations.js +0 -44
  307. package/lib/rules/numericLiteralParsing.d.ts +0 -9
  308. package/lib/rules/numericLiteralParsing.js +0 -55
  309. package/lib/rules/numericPrecision.d.ts +0 -9
  310. package/lib/rules/numericPrecision.js +0 -100
  311. package/lib/rules/numericSeparatorGroups.d.ts +0 -9
  312. package/lib/rules/numericSeparatorGroups.js +0 -99
  313. package/lib/rules/objectAssignSpreads.d.ts +0 -9
  314. package/lib/rules/objectAssignSpreads.js +0 -51
  315. package/lib/rules/objectCalls.d.ts +0 -9
  316. package/lib/rules/objectCalls.js +0 -36
  317. package/lib/rules/objectEntriesMethods.d.ts +0 -9
  318. package/lib/rules/objectEntriesMethods.js +0 -80
  319. package/lib/rules/objectHasOwns.d.ts +0 -9
  320. package/lib/rules/objectHasOwns.js +0 -48
  321. package/lib/rules/objectKeyDuplicates.d.ts +0 -9
  322. package/lib/rules/objectKeyDuplicates.js +0 -61
  323. package/lib/rules/objectProto.d.ts +0 -9
  324. package/lib/rules/objectProto.js +0 -48
  325. package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -9
  326. package/lib/rules/objectPrototypeBuiltIns.js +0 -52
  327. package/lib/rules/objectShorthand.d.ts +0 -9
  328. package/lib/rules/objectShorthand.js +0 -82
  329. package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -9
  330. package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -41
  331. package/lib/rules/objectTypeDefinitions.d.ts +0 -9
  332. package/lib/rules/objectTypeDefinitions.js +0 -32
  333. package/lib/rules/octalEscapes.d.ts +0 -9
  334. package/lib/rules/octalEscapes.js +0 -56
  335. package/lib/rules/octalNumbers.d.ts +0 -9
  336. package/lib/rules/octalNumbers.js +0 -53
  337. package/lib/rules/operatorAssignmentShorthand.d.ts +0 -9
  338. package/lib/rules/operatorAssignmentShorthand.js +0 -75
  339. package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -9
  340. package/lib/rules/overloadSignaturesAdjacent.js +0 -138
  341. package/lib/rules/parameterReassignments.d.ts +0 -9
  342. package/lib/rules/parameterReassignments.js +0 -43
  343. package/lib/rules/parseIntRadixes.d.ts +0 -9
  344. package/lib/rules/parseIntRadixes.js +0 -57
  345. package/lib/rules/propertyAccessNotation.d.ts +0 -12
  346. package/lib/rules/propertyAccessNotation.js +0 -117
  347. package/lib/rules/recursionOnlyArguments.d.ts +0 -9
  348. package/lib/rules/recursionOnlyArguments.js +0 -62
  349. package/lib/rules/redundantTypeConstituents.d.ts +0 -9
  350. package/lib/rules/redundantTypeConstituents.js +0 -275
  351. package/lib/rules/regexAllGlobalFlags.d.ts +0 -9
  352. package/lib/rules/regexAllGlobalFlags.js +0 -54
  353. package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -9
  354. package/lib/rules/regexAmbiguousInvalidity.js +0 -295
  355. package/lib/rules/regexCharacterClassRanges.d.ts +0 -9
  356. package/lib/rules/regexCharacterClassRanges.js +0 -135
  357. package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -9
  358. package/lib/rules/regexCharacterClassSetOperations.js +0 -79
  359. package/lib/rules/regexCharacterClasses.d.ts +0 -9
  360. package/lib/rules/regexCharacterClasses.js +0 -232
  361. package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -9
  362. package/lib/rules/regexConciseCharacterClassNegations.js +0 -50
  363. package/lib/rules/regexContradictoryAssertions.d.ts +0 -9
  364. package/lib/rules/regexContradictoryAssertions.js +0 -208
  365. package/lib/rules/regexControlCharacterEscapes.d.ts +0 -9
  366. package/lib/rules/regexControlCharacterEscapes.js +0 -128
  367. package/lib/rules/regexControlCharacters.d.ts +0 -9
  368. package/lib/rules/regexControlCharacters.js +0 -93
  369. package/lib/rules/regexDigitMatchers.d.ts +0 -9
  370. package/lib/rules/regexDigitMatchers.js +0 -178
  371. package/lib/rules/regexDollarEscapes.d.ts +0 -9
  372. package/lib/rules/regexDollarEscapes.js +0 -89
  373. package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -9
  374. package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -126
  375. package/lib/rules/regexEmptyAlternatives.d.ts +0 -9
  376. package/lib/rules/regexEmptyAlternatives.js +0 -138
  377. package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -9
  378. package/lib/rules/regexEmptyCapturingGroups.js +0 -65
  379. package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -9
  380. package/lib/rules/regexEmptyCharacterClasses.js +0 -66
  381. package/lib/rules/regexEmptyGroups.d.ts +0 -9
  382. package/lib/rules/regexEmptyGroups.js +0 -64
  383. package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -9
  384. package/lib/rules/regexEmptyLazyQuantifiers.js +0 -90
  385. package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -9
  386. package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -66
  387. package/lib/rules/regexEmptyStringLiterals.d.ts +0 -9
  388. package/lib/rules/regexEmptyStringLiterals.js +0 -64
  389. package/lib/rules/regexEscapeBackspaces.d.ts +0 -9
  390. package/lib/rules/regexEscapeBackspaces.js +0 -67
  391. package/lib/rules/regexExecutors.d.ts +0 -9
  392. package/lib/rules/regexExecutors.js +0 -56
  393. package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -9
  394. package/lib/rules/regexGraphemeStringLiterals.js +0 -49
  395. package/lib/rules/regexHexadecimalEscapes.d.ts +0 -9
  396. package/lib/rules/regexHexadecimalEscapes.js +0 -69
  397. package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -9
  398. package/lib/rules/regexIgnoreCaseFlags.js +0 -143
  399. package/lib/rules/regexInvisibleCharacters.d.ts +0 -9
  400. package/lib/rules/regexInvisibleCharacters.js +0 -88
  401. package/lib/rules/regexLetterCasing.d.ts +0 -9
  402. package/lib/rules/regexLetterCasing.js +0 -184
  403. package/lib/rules/regexLiterals.d.ts +0 -9
  404. package/lib/rules/regexLiterals.js +0 -87
  405. package/lib/rules/regexLookaroundAssertions.d.ts +0 -9
  406. package/lib/rules/regexLookaroundAssertions.js +0 -161
  407. package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -9
  408. package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -92
  409. package/lib/rules/regexMatchNotation.d.ts +0 -9
  410. package/lib/rules/regexMatchNotation.js +0 -137
  411. package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -9
  412. package/lib/rules/regexMisleadingCapturingGroups.js +0 -227
  413. package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -9
  414. package/lib/rules/regexMisleadingQuantifiers.js +0 -76
  415. package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -9
  416. package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -201
  417. package/lib/rules/regexNamedBackreferences.d.ts +0 -9
  418. package/lib/rules/regexNamedBackreferences.js +0 -46
  419. package/lib/rules/regexNamedCaptureGroups.d.ts +0 -8
  420. package/lib/rules/regexNamedCaptureGroups.js +0 -65
  421. package/lib/rules/regexNamedReplacements.d.ts +0 -9
  422. package/lib/rules/regexNamedReplacements.js +0 -91
  423. package/lib/rules/regexNonStandardFlags.d.ts +0 -9
  424. package/lib/rules/regexNonStandardFlags.js +0 -64
  425. package/lib/rules/regexObscureRanges.d.ts +0 -9
  426. package/lib/rules/regexObscureRanges.js +0 -91
  427. package/lib/rules/regexOctalEscapes.d.ts +0 -9
  428. package/lib/rules/regexOctalEscapes.js +0 -68
  429. package/lib/rules/regexPlusQuantifiers.d.ts +0 -9
  430. package/lib/rules/regexPlusQuantifiers.js +0 -66
  431. package/lib/rules/regexPredefinedAssertions.d.ts +0 -9
  432. package/lib/rules/regexPredefinedAssertions.js +0 -125
  433. package/lib/rules/regexQuestionQuantifiers.d.ts +0 -9
  434. package/lib/rules/regexQuestionQuantifiers.js +0 -102
  435. package/lib/rules/regexRepeatQuantifiers.d.ts +0 -9
  436. package/lib/rules/regexRepeatQuantifiers.js +0 -94
  437. package/lib/rules/regexResultArrayGroups.d.ts +0 -9
  438. package/lib/rules/regexResultArrayGroups.js +0 -185
  439. package/lib/rules/regexSetOperationOptimizations.d.ts +0 -9
  440. package/lib/rules/regexSetOperationOptimizations.js +0 -175
  441. package/lib/rules/regexStandaloneBackslashes.d.ts +0 -9
  442. package/lib/rules/regexStandaloneBackslashes.js +0 -57
  443. package/lib/rules/regexStarQuantifiers.d.ts +0 -9
  444. package/lib/rules/regexStarQuantifiers.js +0 -66
  445. package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -9
  446. package/lib/rules/regexSuperLinearBacktracking.js +0 -96
  447. package/lib/rules/regexSuperLinearMoves.d.ts +0 -9
  448. package/lib/rules/regexSuperLinearMoves.js +0 -140
  449. package/lib/rules/regexTestMethods.d.ts +0 -9
  450. package/lib/rules/regexTestMethods.js +0 -81
  451. package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -9
  452. package/lib/rules/regexUnicodeCodepointEscapes.js +0 -105
  453. package/lib/rules/regexUnicodeEscapes.d.ts +0 -8
  454. package/lib/rules/regexUnicodeEscapes.js +0 -95
  455. package/lib/rules/regexUnicodeFlag.d.ts +0 -8
  456. package/lib/rules/regexUnicodeFlag.js +0 -95
  457. package/lib/rules/regexUnicodeProperties.d.ts +0 -9
  458. package/lib/rules/regexUnicodeProperties.js +0 -131
  459. package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -9
  460. package/lib/rules/regexUnnecessaryAssertions.js +0 -221
  461. package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -9
  462. package/lib/rules/regexUnnecessaryBackreferences.js +0 -123
  463. package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -9
  464. package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -72
  465. package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -9
  466. package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -106
  467. package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -9
  468. package/lib/rules/regexUnnecessaryDisjunctions.js +0 -116
  469. package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -9
  470. package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -142
  471. package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -9
  472. package/lib/rules/regexUnnecessaryEscapes.js +0 -134
  473. package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -9
  474. package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -78
  475. package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -9
  476. package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -196
  477. package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -9
  478. package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -91
  479. package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -9
  480. package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -102
  481. package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -9
  482. package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -67
  483. package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -9
  484. package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -135
  485. package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -9
  486. package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -121
  487. package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -9
  488. package/lib/rules/regexUnnecessarySetOperands.js +0 -134
  489. package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -9
  490. package/lib/rules/regexUnusedCapturingGroups.js +0 -67
  491. package/lib/rules/regexUnusedFlags.d.ts +0 -9
  492. package/lib/rules/regexUnusedFlags.js +0 -114
  493. package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -9
  494. package/lib/rules/regexUnusedLazyQuantifiers.js +0 -61
  495. package/lib/rules/regexUnusedQuantifiers.d.ts +0 -9
  496. package/lib/rules/regexUnusedQuantifiers.js +0 -61
  497. package/lib/rules/regexValidity.d.ts +0 -9
  498. package/lib/rules/regexValidity.js +0 -144
  499. package/lib/rules/regexWordMatchers.d.ts +0 -9
  500. package/lib/rules/regexWordMatchers.js +0 -144
  501. package/lib/rules/regexZeroQuantifiers.d.ts +0 -9
  502. package/lib/rules/regexZeroQuantifiers.js +0 -58
  503. package/lib/rules/requireImports.d.ts +0 -9
  504. package/lib/rules/requireImports.js +0 -46
  505. package/lib/rules/responseJsonMethods.d.ts +0 -9
  506. package/lib/rules/responseJsonMethods.js +0 -49
  507. package/lib/rules/restrictedIdentifiers.d.ts +0 -12
  508. package/lib/rules/restrictedIdentifiers.js +0 -39
  509. package/lib/rules/restrictedImports.d.ts +0 -26
  510. package/lib/rules/restrictedImports.js +0 -164
  511. package/lib/rules/returnAssignments.d.ts +0 -9
  512. package/lib/rules/returnAssignments.js +0 -36
  513. package/lib/rules/returnThisTypes.d.ts +0 -9
  514. package/lib/rules/returnThisTypes.js +0 -92
  515. package/lib/rules/ruleCreator.d.ts +0 -2
  516. package/lib/rules/ruleCreator.js +0 -15
  517. package/lib/rules/selfAssignments.d.ts +0 -9
  518. package/lib/rules/selfAssignments.js +0 -27
  519. package/lib/rules/sequences.d.ts +0 -9
  520. package/lib/rules/sequences.js +0 -26
  521. package/lib/rules/setSizeLengthChecks.d.ts +0 -9
  522. package/lib/rules/setSizeLengthChecks.js +0 -46
  523. package/lib/rules/setterReturns.d.ts +0 -9
  524. package/lib/rules/setterReturns.js +0 -39
  525. package/lib/rules/shadowedRestrictedNames.d.ts +0 -9
  526. package/lib/rules/shadowedRestrictedNames.js +0 -66
  527. package/lib/rules/singleVariableDeclarations.d.ts +0 -9
  528. package/lib/rules/singleVariableDeclarations.js +0 -34
  529. package/lib/rules/sizeComparisonOperators.d.ts +0 -15
  530. package/lib/rules/sizeComparisonOperators.js +0 -146
  531. package/lib/rules/sparseArrays.d.ts +0 -9
  532. package/lib/rules/sparseArrays.js +0 -41
  533. package/lib/rules/staticMemberOnlyClasses.d.ts +0 -9
  534. package/lib/rules/staticMemberOnlyClasses.js +0 -75
  535. package/lib/rules/stringCaseMismatches.d.ts +0 -9
  536. package/lib/rules/stringCaseMismatches.js +0 -53
  537. package/lib/rules/stringCodePoints.d.ts +0 -9
  538. package/lib/rules/stringCodePoints.js +0 -48
  539. package/lib/rules/stringSliceMethods.d.ts +0 -9
  540. package/lib/rules/stringSliceMethods.js +0 -45
  541. package/lib/rules/stringStartsEndsWith.d.ts +0 -9
  542. package/lib/rules/stringStartsEndsWith.js +0 -77
  543. package/lib/rules/structuredCloneMethods.d.ts +0 -9
  544. package/lib/rules/structuredCloneMethods.js +0 -37
  545. package/lib/rules/symbolDescriptions.d.ts +0 -9
  546. package/lib/rules/symbolDescriptions.js +0 -30
  547. package/lib/rules/thisAliases.d.ts +0 -9
  548. package/lib/rules/thisAliases.js +0 -42
  549. package/lib/rules/thisBeforeSuper.d.ts +0 -9
  550. package/lib/rules/thisBeforeSuper.js +0 -84
  551. package/lib/rules/throwErrors.d.ts +0 -9
  552. package/lib/rules/throwErrors.js +0 -59
  553. package/lib/rules/topLevelAwaits.d.ts +0 -9
  554. package/lib/rules/topLevelAwaits.js +0 -47
  555. package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -9
  556. package/lib/rules/tripleSlashReferenceValidity.js +0 -52
  557. package/lib/rules/tripleSlashReferences.d.ts +0 -9
  558. package/lib/rules/tripleSlashReferences.js +0 -32
  559. package/lib/rules/tsComments.d.ts +0 -21
  560. package/lib/rules/tsComments.js +0 -128
  561. package/lib/rules/tslintComments.d.ts +0 -9
  562. package/lib/rules/tslintComments.js +0 -34
  563. package/lib/rules/typeAssertionStyles.d.ts +0 -9
  564. package/lib/rules/typeAssertionStyles.js +0 -30
  565. package/lib/rules/typeImports.d.ts +0 -19
  566. package/lib/rules/typeImports.js +0 -281
  567. package/lib/rules/typeofComparisons.d.ts +0 -9
  568. package/lib/rules/typeofComparisons.js +0 -53
  569. package/lib/rules/unassignedVariables.d.ts +0 -9
  570. package/lib/rules/unassignedVariables.js +0 -32
  571. package/lib/rules/undefinedTypeofChecks.d.ts +0 -9
  572. package/lib/rules/undefinedTypeofChecks.js +0 -39
  573. package/lib/rules/undefinedVariables.d.ts +0 -9
  574. package/lib/rules/undefinedVariables.js +0 -37
  575. package/lib/rules/unicodeBOMs.d.ts +0 -9
  576. package/lib/rules/unicodeBOMs.js +0 -37
  577. package/lib/rules/unnecessaryBinds.d.ts +0 -9
  578. package/lib/rules/unnecessaryBinds.js +0 -76
  579. package/lib/rules/unnecessaryBlocks.d.ts +0 -9
  580. package/lib/rules/unnecessaryBlocks.js +0 -58
  581. package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -9
  582. package/lib/rules/unnecessaryBooleanCasts.js +0 -56
  583. package/lib/rules/unnecessaryCatches.d.ts +0 -9
  584. package/lib/rules/unnecessaryCatches.js +0 -46
  585. package/lib/rules/unnecessaryComparisons.d.ts +0 -9
  586. package/lib/rules/unnecessaryComparisons.js +0 -291
  587. package/lib/rules/unnecessaryConcatenation.d.ts +0 -9
  588. package/lib/rules/unnecessaryConcatenation.js +0 -26
  589. package/lib/rules/unnecessaryEscapes.d.ts +0 -9
  590. package/lib/rules/unnecessaryEscapes.js +0 -132
  591. package/lib/rules/unnecessaryMathClamps.d.ts +0 -9
  592. package/lib/rules/unnecessaryMathClamps.js +0 -106
  593. package/lib/rules/unnecessaryNumericFractions.d.ts +0 -9
  594. package/lib/rules/unnecessaryNumericFractions.js +0 -48
  595. package/lib/rules/unnecessaryRenames.d.ts +0 -9
  596. package/lib/rules/unnecessaryRenames.js +0 -90
  597. package/lib/rules/unnecessaryTernaries.d.ts +0 -9
  598. package/lib/rules/unnecessaryTernaries.js +0 -86
  599. package/lib/rules/unnecessaryUseStricts.d.ts +0 -9
  600. package/lib/rules/unnecessaryUseStricts.js +0 -38
  601. package/lib/rules/unsafeNegations.d.ts +0 -9
  602. package/lib/rules/unsafeNegations.js +0 -36
  603. package/lib/rules/utils/collectAccessorPairs.d.ts +0 -11
  604. package/lib/rules/utils/collectAccessorPairs.js +0 -27
  605. package/lib/rules/utils/countCommentsInRange.d.ts +0 -2
  606. package/lib/rules/utils/countCommentsInRange.js +0 -10
  607. package/lib/rules/utils/discriminateAnyType.d.ts +0 -15
  608. package/lib/rules/utils/discriminateAnyType.js +0 -36
  609. package/lib/rules/utils/equalityOperators.d.ts +0 -8
  610. package/lib/rules/utils/equalityOperators.js +0 -34
  611. package/lib/rules/utils/forEachReturnStatement.d.ts +0 -2
  612. package/lib/rules/utils/forEachReturnStatement.js +0 -27
  613. package/lib/rules/utils/formatReportedType.d.ts +0 -3
  614. package/lib/rules/utils/formatReportedType.js +0 -7
  615. package/lib/rules/utils/getConstrainedType.d.ts +0 -2
  616. package/lib/rules/utils/getConstrainedType.js +0 -7
  617. package/lib/rules/utils/getFunctionName.d.ts +0 -2
  618. package/lib/rules/utils/getFunctionName.js +0 -14
  619. package/lib/rules/utils/getRegExpConstruction.d.ts +0 -8
  620. package/lib/rules/utils/getRegExpConstruction.js +0 -25
  621. package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -6
  622. package/lib/rules/utils/getRegExpLiteralDetails.js +0 -11
  623. package/lib/rules/utils/getThisExpression.d.ts +0 -2
  624. package/lib/rules/utils/getThisExpression.js +0 -14
  625. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -2
  626. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -11
  627. package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -2
  628. package/lib/rules/utils/isBuiltinSymbolLike.js +0 -31
  629. package/lib/rules/utils/isDirectEqualityCheck.d.ts +0 -3
  630. package/lib/rules/utils/isDirectEqualityCheck.js +0 -27
  631. package/lib/rules/utils/isErrorSubclass.d.ts +0 -3
  632. package/lib/rules/utils/isErrorSubclass.js +0 -25
  633. package/lib/rules/utils/isInBooleanContext.d.ts +0 -2
  634. package/lib/rules/utils/isInBooleanContext.js +0 -20
  635. package/lib/rules/utils/isTypeRecursive.d.ts +0 -2
  636. package/lib/rules/utils/isTypeRecursive.js +0 -6
  637. package/lib/rules/utils/isUnsafeAssignment.d.ts +0 -14
  638. package/lib/rules/utils/isUnsafeAssignment.js +0 -43
  639. package/lib/rules/utils/operators.d.ts +0 -4
  640. package/lib/rules/utils/operators.js +0 -33
  641. package/lib/rules/utils/parseRegexpAst.d.ts +0 -1
  642. package/lib/rules/utils/parseRegexpAst.js +0 -15
  643. package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -2
  644. package/lib/rules/utils/parseRegexpAstFull.js +0 -16
  645. package/lib/rules/utils/skipParentheses.d.ts +0 -2
  646. package/lib/rules/utils/skipParentheses.js +0 -8
  647. package/lib/rules/variableDeletions.d.ts +0 -9
  648. package/lib/rules/variableDeletions.js +0 -33
  649. package/lib/rules/voidOperator.d.ts +0 -9
  650. package/lib/rules/voidOperator.js +0 -32
  651. package/lib/rules/withStatements.d.ts +0 -9
  652. package/lib/rules/withStatements.js +0 -28
  653. package/lib/rules/wrapperObjects.d.ts +0 -9
  654. package/lib/rules/wrapperObjects.js +0 -34
  655. package/lib/type-utils/getSpecifierNames.d.ts +0 -2
  656. package/lib/type-utils/getSpecifierNames.js +0 -7
  657. package/lib/type-utils/isDeclaredInModuleBlock.d.ts +0 -2
  658. package/lib/type-utils/isDeclaredInModuleBlock.js +0 -12
  659. package/lib/type-utils/isFromFile.d.ts +0 -2
  660. package/lib/type-utils/isFromFile.js +0 -11
  661. package/lib/type-utils/isFromPackage.d.ts +0 -2
  662. package/lib/type-utils/isFromPackage.js +0 -13
  663. package/lib/type-utils/matchesSpecifier.d.ts +0 -3
  664. package/lib/type-utils/matchesSpecifier.js +0 -18
  665. package/lib/type-utils/schemas.d.ts +0 -14
  666. package/lib/type-utils/schemas.js +0 -23
@@ -1,62 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/multilineAmbiguities.ts
5
- var multilineAmbiguities_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports ambiguous multiline expressions that could be misinterpreted.",
8
- id: "multilineAmbiguities",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { ambiguity: {
12
- primary: "This ambiguous line break before {{ after }} will be misinterpreted as a {{ interpretation }}.",
13
- secondary: ["When a line ends with an expression and the next line starts with {{ after }}, it may be interpreted as a {{ interpretation }} instead of two separate statements.", "This can lead to unexpected behavior and runtime errors that are difficult to debug."],
14
- suggestions: ["Add a semicolon after the first line to make it clear they are separate statements.", "Alternatively, move the {{ after }} to the same line as the first expression if a {{ interpretation }} is intended."]
15
- } },
16
- setup(context) {
17
- function checkMultilineDelimiter(expressionEnd, delimiterStart, after, interpretation, sourceFile) {
18
- const { line: expressionEndLine } = sourceFile.getLineAndCharacterOfPosition(expressionEnd);
19
- const { line: delimiterLine } = sourceFile.getLineAndCharacterOfPosition(delimiterStart);
20
- if (expressionEndLine < delimiterLine) context.report({
21
- data: {
22
- after,
23
- interpretation
24
- },
25
- message: "ambiguity",
26
- range: {
27
- begin: delimiterStart,
28
- end: getLineEndPosition(delimiterLine, sourceFile)
29
- }
30
- });
31
- }
32
- return { visitors: {
33
- CallExpression: (node, { sourceFile }) => {
34
- if (!node.arguments.length || node.questionDotToken) return;
35
- const openParen = findChildToken(node, ts$1.SyntaxKind.OpenParenToken, sourceFile);
36
- if (!openParen) return;
37
- checkMultilineDelimiter(getExpressionEnd(node, sourceFile), openParen.getStart(sourceFile), "parentheses", "function call", sourceFile);
38
- },
39
- ElementAccessExpression: (node, { sourceFile }) => {
40
- if (node.questionDotToken) return;
41
- const openBracket = findChildToken(node, ts$1.SyntaxKind.OpenBracketToken, sourceFile);
42
- if (!openBracket) return;
43
- checkMultilineDelimiter(node.expression.getEnd(), openBracket.getStart(sourceFile), "brackets", "property access", sourceFile);
44
- },
45
- TaggedTemplateExpression: (node, { sourceFile }) => {
46
- checkMultilineDelimiter(node.tag.getEnd(), node.template.getStart(sourceFile), "a template literal", "tagged template", sourceFile);
47
- }
48
- } };
49
- }
50
- });
51
- function findChildToken(node, kind, sourceFile) {
52
- for (const child of node.getChildren(sourceFile)) if (child.kind === kind) return child;
53
- }
54
- function getExpressionEnd(node, sourceFile) {
55
- return (node.typeArguments && findChildToken(node, ts$1.SyntaxKind.GreaterThanToken, sourceFile))?.getEnd() ?? node.expression.getEnd();
56
- }
57
- function getLineEndPosition(lineNumber, sourceFile) {
58
- const nextLineStart = sourceFile.getLineStarts()[lineNumber + 1];
59
- return nextLineStart === void 0 ? sourceFile.getEnd() : nextLineStart - 1;
60
- }
61
- //#endregion
62
- export { multilineAmbiguities_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports anonymous functions and classes as the default export.";
3
- readonly id: "namedDefaultExports";
4
- readonly presets: readonly ["stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "anonymousClass" | "anonymousFunction", undefined>;
9
- export default _default;
@@ -1,58 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts, { SyntaxKind } from "typescript";
4
- //#region src/rules/namedDefaultExports.ts
5
- function hasDefaultModifier(modifiers) {
6
- return modifiers?.some((mod) => mod.kind === SyntaxKind.DefaultKeyword);
7
- }
8
- function hasExportModifier(modifiers) {
9
- return modifiers?.some((mod) => mod.kind === SyntaxKind.ExportKeyword);
10
- }
11
- var namedDefaultExports_default = ruleCreator.createRule(typescriptLanguage, {
12
- about: {
13
- description: "Reports anonymous functions and classes as the default export.",
14
- id: "namedDefaultExports",
15
- presets: ["stylisticStrict"]
16
- },
17
- messages: {
18
- anonymousClass: {
19
- primary: "This default-exported class is missing an informative name.",
20
- secondary: ["Named default exports improve codebase searchability by ensuring consistent identifier use for a module's default export.", "When a class is anonymous, it becomes harder to find all usages and references in the codebase."],
21
- suggestions: ["Add a name to the exported class."]
22
- },
23
- anonymousFunction: {
24
- primary: "This default-exported function is missing an informative name.",
25
- secondary: ["Named default exports improve codebase searchability by ensuring consistent identifier use for a module's default export.", "When a function is anonymous, it becomes harder to find all usages and references in the codebase."],
26
- suggestions: ["Add a name to the exported function.", "Assign the arrow function to a named variable, then export it."]
27
- }
28
- },
29
- setup(context) {
30
- return { visitors: {
31
- ClassDeclaration: (node, { sourceFile }) => {
32
- if (hasExportModifier(node.modifiers) && hasDefaultModifier(node.modifiers) && !node.name) context.report({
33
- message: "anonymousClass",
34
- range: getTSNodeRange(node, sourceFile)
35
- });
36
- },
37
- ExportAssignment: (node, { sourceFile }) => {
38
- if (node.isExportEquals) return;
39
- if (ts.isArrowFunction(node.expression) || ts.isFunctionExpression(node.expression) && !node.expression.name) context.report({
40
- message: "anonymousFunction",
41
- range: getTSNodeRange(node.expression, sourceFile)
42
- });
43
- else if (ts.isClassExpression(node.expression) && !node.expression.name) context.report({
44
- message: "anonymousClass",
45
- range: getTSNodeRange(node.expression, sourceFile)
46
- });
47
- },
48
- FunctionDeclaration: (node, { sourceFile }) => {
49
- if (hasExportModifier(node.modifiers) && hasDefaultModifier(node.modifiers) && !node.name) context.report({
50
- message: "anonymousFunction",
51
- range: getTSNodeRange(node, sourceFile)
52
- });
53
- }
54
- } };
55
- }
56
- });
57
- //#endregion
58
- export { namedDefaultExports_default as default };
@@ -1,13 +0,0 @@
1
- import { z } from "zod/v4";
2
- declare const _default: import("@flint.fyi/core").Rule<{
3
- readonly description: "Reports using legacy `namespace` declarations.";
4
- readonly id: "namespaceDeclarations";
5
- readonly presets: readonly ["logical", "logicalStrict"];
6
- } & {
7
- readonly pluginId: string;
8
- readonly url: string;
9
- }, "preferModules", {
10
- allowDeclarations: z.ZodDefault<z.ZodBoolean>;
11
- allowDefinitionFiles: z.ZodDefault<z.ZodBoolean>;
12
- }>;
13
- export default _default;
@@ -1,35 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- import { z as z$1 } from "zod/v4";
6
- //#region src/rules/namespaceDeclarations.ts
7
- var namespaceDeclarations_default = ruleCreator.createRule(typescriptLanguage, {
8
- about: {
9
- description: "Reports using legacy `namespace` declarations.",
10
- id: "namespaceDeclarations",
11
- presets: ["logical", "logicalStrict"]
12
- },
13
- messages: { preferModules: {
14
- primary: "Prefer using ECMAScript modules over legacy TypeScript namespaces.",
15
- secondary: ["Namespaces are a legacy feature of TypeScript that can lead to confusion and are not compatible with ECMAScript modules."],
16
- suggestions: ["Modern codebases generally use `export` and `import` statements to define and use ECMAScript modules instead."]
17
- } },
18
- options: {
19
- allowDeclarations: z$1.boolean().default(false).describe("Whether to allow namespaces declared with the `declare` keyword."),
20
- allowDefinitionFiles: z$1.boolean().default(false).describe("Whether to allow namespaces in `.d.ts` and other definition files.")
21
- },
22
- setup(context) {
23
- return { visitors: { ModuleDeclaration: (node, { options: { allowDeclarations, allowDefinitionFiles }, sourceFile }) => {
24
- if (allowDefinitionFiles && sourceFile.isDeclarationFile) return;
25
- if (node.parent.kind !== SyntaxKind.SourceFile || node.name.kind !== SyntaxKind.Identifier || node.name.text === "global") return;
26
- if (allowDeclarations && tsutils.includesModifier(node.modifiers, SyntaxKind.DeclareKeyword)) return;
27
- context.report({
28
- message: "preferModules",
29
- range: getTSNodeRange(node.getChildAt(0), sourceFile)
30
- });
31
- } } };
32
- }
33
- });
34
- //#endregion
35
- export { namespaceDeclarations_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports declared namespaces that implicitly export all members.";
3
- readonly id: "namespaceImplicitAmbientImports";
4
- readonly presets: readonly ["stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "implicitExports", undefined>;
9
- export default _default;
@@ -1,38 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts, { SyntaxKind } from "typescript";
4
- //#region src/rules/namespaceImplicitAmbientImports.ts
5
- function hasExportModifier(node) {
6
- return !!(ts.canHaveModifiers(node) && ts.getModifiers(node)?.some((modifier) => modifier.kind === SyntaxKind.ExportKeyword));
7
- }
8
- function hasNamedExport(statements) {
9
- return statements.some((statement) => statement.kind === SyntaxKind.ExportDeclaration && statement.exportClause?.kind === SyntaxKind.NamedExports);
10
- }
11
- function hasNonExportedMember(statements) {
12
- return statements.some((statement) => !hasExportModifier(statement) && (statement.kind === SyntaxKind.TypeAliasDeclaration || statement.kind === SyntaxKind.InterfaceDeclaration || statement.kind === SyntaxKind.ClassDeclaration || statement.kind === SyntaxKind.EnumDeclaration || statement.kind === SyntaxKind.FunctionDeclaration || statement.kind === SyntaxKind.VariableStatement || statement.kind === SyntaxKind.ModuleDeclaration));
13
- }
14
- var namespaceImplicitAmbientImports_default = ruleCreator.createRule(typescriptLanguage, {
15
- about: {
16
- description: "Reports declared namespaces that implicitly export all members.",
17
- id: "namespaceImplicitAmbientImports",
18
- presets: ["stylisticStrict"]
19
- },
20
- messages: { implicitExports: {
21
- primary: "Declared namespaces without explicit exports implicitly export all members.",
22
- secondary: ["When a declared namespace has no named export statements, all its members are implicitly exported.", "This can lead to unintended exports and make it harder to understand what the namespace exposes."],
23
- suggestions: ["Add an `export {};` statement to opt out of implicit exports, then explicitly export the members you intend to expose."]
24
- } },
25
- setup(context) {
26
- return { visitors: { ModuleDeclaration: (node, { sourceFile }) => {
27
- if (!node.modifiers?.some((modifier) => modifier.kind === SyntaxKind.DeclareKeyword) || node.name.kind !== SyntaxKind.Identifier || node.body?.kind !== SyntaxKind.ModuleBlock) return;
28
- const statements = node.body.statements;
29
- if (!statements.length || hasNamedExport(statements) || !hasNonExportedMember(statements)) return;
30
- context.report({
31
- message: "implicitExports",
32
- range: getTSNodeRange(node, sourceFile)
33
- });
34
- } } };
35
- }
36
- });
37
- //#endregion
38
- export { namespaceImplicitAmbientImports_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using `module` keyword instead of `namespace` for TypeScript namespaces.";
3
- readonly id: "namespaceKeywords";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferNamespace", undefined>;
9
- export default _default;
@@ -1,38 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- //#region src/rules/namespaceKeywords.ts
5
- var namespaceKeywords_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports using `module` keyword instead of `namespace` for TypeScript namespaces.",
8
- id: "namespaceKeywords",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { preferNamespace: {
12
- primary: "The `namespace` keyword is preferred over `module` for TypeScript namespaces.",
13
- secondary: [
14
- "TypeScript originally used the `module` keyword to declare internal modules (namespaces).",
15
- "The `namespace` keyword was later introduced to avoid confusion with ES6 modules.",
16
- "Using `namespace` makes it clear you are defining a TypeScript namespace, not an ES6 module."
17
- ],
18
- suggestions: ["Replace `module` with `namespace`."]
19
- } },
20
- setup(context) {
21
- return { visitors: { ModuleDeclaration: (node, { sourceFile }) => {
22
- if (node.name.kind === SyntaxKind.StringLiteral) return;
23
- const moduleKeywordToken = node.getChildren(sourceFile).find((child) => child.kind === SyntaxKind.ModuleKeyword);
24
- if (!moduleKeywordToken) return;
25
- const range = getTSNodeRange(moduleKeywordToken, sourceFile);
26
- context.report({
27
- fix: {
28
- range,
29
- text: "namespace"
30
- },
31
- message: "preferNamespace",
32
- range
33
- });
34
- } } };
35
- }
36
- });
37
- //#endregion
38
- export { namespaceKeywords_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports extending the prototype of native JavaScript objects.";
3
- readonly id: "nativeObjectExtensions";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noExtendNative", undefined>;
9
- export default _default;
@@ -1,112 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/nativeObjectExtensions.ts
5
- const nativeConstructors = /* @__PURE__ */ new Set([
6
- "AggregateError",
7
- "Array",
8
- "ArrayBuffer",
9
- "BigInt",
10
- "BigInt64Array",
11
- "BigUint64Array",
12
- "Boolean",
13
- "DataView",
14
- "Date",
15
- "Error",
16
- "EvalError",
17
- "FinalizationRegistry",
18
- "Float16Array",
19
- "Float32Array",
20
- "Float64Array",
21
- "Function",
22
- "Int8Array",
23
- "Int16Array",
24
- "Int32Array",
25
- "Map",
26
- "Number",
27
- "Object",
28
- "Promise",
29
- "RangeError",
30
- "ReferenceError",
31
- "RegExp",
32
- "Set",
33
- "SharedArrayBuffer",
34
- "String",
35
- "Symbol",
36
- "SyntaxError",
37
- "TypeError",
38
- "Uint8Array",
39
- "Uint8ClampedArray",
40
- "Uint16Array",
41
- "Uint32Array",
42
- "URIError",
43
- "WeakMap",
44
- "WeakRef",
45
- "WeakSet"
46
- ]);
47
- function getPrototypeObject(node) {
48
- return ts$1.isIdentifier(node.expression) && node.expression;
49
- }
50
- function isPrototypeAccess(node) {
51
- switch (node.kind) {
52
- case ts$1.SyntaxKind.ElementAccessExpression: return ts$1.isStringLiteral(node.argumentExpression) && node.argumentExpression.text === "prototype";
53
- case ts$1.SyntaxKind.PropertyAccessExpression: return node.name.text === "prototype";
54
- default: return false;
55
- }
56
- }
57
- var nativeObjectExtensions_default = ruleCreator.createRule(typescriptLanguage, {
58
- about: {
59
- description: "Reports extending the prototype of native JavaScript objects.",
60
- id: "nativeObjectExtensions",
61
- presets: ["javascript"]
62
- },
63
- messages: { noExtendNative: {
64
- primary: "Extending the {{ name }} prototype modifies built-in behavior that other code depends on.",
65
- secondary: [
66
- "Adding properties to native prototypes affects all instances of that type across the codebase.",
67
- "This can cause conflicts with other libraries that expect standard prototype behavior.",
68
- "Future ECMAScript versions may add methods with the same name, causing unexpected behavior."
69
- ],
70
- suggestions: ["Create a wrapper class or utility function instead of extending the prototype.", "Use composition rather than modifying the prototype chain."]
71
- } },
72
- setup(context) {
73
- function checkNode(node, { program, sourceFile, typeChecker }) {
74
- if (!isPrototypeAccess(node)) return;
75
- const objectIdentifier = getPrototypeObject(node);
76
- if (!objectIdentifier) return;
77
- const name = objectIdentifier.text;
78
- if (!nativeConstructors.has(name) || !isGlobalDeclarationOfName(objectIdentifier, name, typeChecker, program)) return;
79
- switch (node.parent.kind) {
80
- case ts$1.SyntaxKind.CallExpression: {
81
- if (node.parent.arguments[0] !== node) break;
82
- const callee = node.parent.expression;
83
- if (!ts$1.isPropertyAccessExpression(callee) || !ts$1.isIdentifier(callee.expression) || callee.expression.text !== "Object" || callee.name.text !== "defineProperty" && callee.name.text !== "defineProperties" || !isGlobalDeclarationOfName(callee.expression, "Object", typeChecker, program)) break;
84
- context.report({
85
- data: { name },
86
- message: "noExtendNative",
87
- range: getTSNodeRange(node.parent, sourceFile)
88
- });
89
- break;
90
- }
91
- case ts$1.SyntaxKind.ElementAccessExpression:
92
- case ts$1.SyntaxKind.PropertyAccessExpression: {
93
- if (node.parent.expression !== node) break;
94
- const grandparent = node.parent.parent;
95
- if (!ts$1.isBinaryExpression(grandparent) || grandparent.operatorToken.kind !== ts$1.SyntaxKind.EqualsToken || grandparent.left !== node.parent) break;
96
- context.report({
97
- data: { name },
98
- message: "noExtendNative",
99
- range: getTSNodeRange(grandparent, sourceFile)
100
- });
101
- break;
102
- }
103
- }
104
- }
105
- return { visitors: {
106
- ElementAccessExpression: checkNode,
107
- PropertyAccessExpression: checkNode
108
- } };
109
- }
110
- });
111
- //#endregion
112
- export { nativeObjectExtensions_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Prefer negative index over `.length - index` for `at`, `slice`, `splice`, and similar methods.";
3
- readonly id: "negativeIndexLengthMethods";
4
- readonly presets: readonly ["stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferNegativeIndex", undefined>;
9
- export default _default;
@@ -1,178 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
3
- import { isTypeRecursive } from "./utils/isTypeRecursive.js";
4
- import { getTSNodeRange, hasSameTokens, typescriptLanguage, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
5
- import * as ts$1 from "typescript";
6
- //#region src/rules/negativeIndexLengthMethods.ts
7
- const typedArrayNames = /* @__PURE__ */ new Set([
8
- "BigInt64Array",
9
- "BigUint64Array",
10
- "Float32Array",
11
- "Float64Array",
12
- "Int8Array",
13
- "Int16Array",
14
- "Int32Array",
15
- "Uint8Array",
16
- "Uint8ClampedArray",
17
- "Uint16Array",
18
- "Uint32Array"
19
- ]);
20
- const methodConfigurations = /* @__PURE__ */ new Map([
21
- ["at", {
22
- argumentIndexes: [0],
23
- supportedTypes: /* @__PURE__ */ new Set([
24
- "Array",
25
- "String",
26
- ...typedArrayNames
27
- ])
28
- }],
29
- ["slice", {
30
- argumentIndexes: [0, 1],
31
- supportedTypes: /* @__PURE__ */ new Set([
32
- "Array",
33
- "String",
34
- ...typedArrayNames
35
- ])
36
- }],
37
- ["splice", {
38
- argumentIndexes: [0],
39
- supportedTypes: /* @__PURE__ */ new Set(["Array"])
40
- }],
41
- ["subarray", {
42
- argumentIndexes: [0, 1],
43
- supportedTypes: new Set(typedArrayNames)
44
- }],
45
- ["toSpliced", {
46
- argumentIndexes: [0],
47
- supportedTypes: /* @__PURE__ */ new Set(["Array"])
48
- }],
49
- ["with", {
50
- argumentIndexes: [0],
51
- supportedTypes: /* @__PURE__ */ new Set(["Array", ...typedArrayNames])
52
- }]
53
- ]);
54
- function getNegativeIndexLengthNode(node, target, sourceFile) {
55
- const unwrapped = unwrapParenthesizedNode(node);
56
- if (!ts$1.isBinaryExpression(unwrapped) || unwrapped.operatorToken.kind !== ts$1.SyntaxKind.MinusToken) return;
57
- const right = unwrapParenthesizedNode(unwrapped.right);
58
- if (!isPositiveNumericLiteral(right)) return;
59
- const left = unwrapParenthesizedNode(unwrapped.left);
60
- if (isLengthPropertyAccess(left, target, sourceFile)) return {
61
- binaryExpression: unwrapped,
62
- lengthNode: left,
63
- rightOperand: right
64
- };
65
- return getNegativeIndexLengthNode(unwrapped.left, target, sourceFile);
66
- }
67
- function isLengthPropertyAccess(node, target, sourceFile) {
68
- return ts$1.isPropertyAccessExpression(node) && node.name.text === "length" && hasSameTokens(node.expression, target, sourceFile);
69
- }
70
- function isPositiveNumericLiteral(node) {
71
- if (!ts$1.isNumericLiteral(node)) return false;
72
- const value = Number(node.text);
73
- return Number.isInteger(value) && value > 0;
74
- }
75
- function isSupportedType(node, typeChecker, supportedTypes) {
76
- return isTypeRecursive(getConstrainedTypeAtLocation(node, typeChecker), (constituent) => {
77
- if ((constituent.flags & ts$1.TypeFlags.Any) !== 0) return true;
78
- if (typeChecker.isArrayType(constituent) || typeChecker.isTupleType(constituent)) return supportedTypes.has("Array");
79
- const typeName = constituent.getSymbol()?.getName();
80
- if (typeName) return supportedTypes.has(typeName);
81
- if (constituent.isStringLiteral() || (constituent.flags & ts$1.TypeFlags.String) !== 0) return supportedTypes.has("String");
82
- return false;
83
- });
84
- }
85
- function isValidPrototypePattern(node, method) {
86
- if (ts$1.isArrayLiteralExpression(node) && !node.elements.length) return true;
87
- if (method === "slice" && ts$1.isStringLiteral(node) && node.text === "") return true;
88
- if (!ts$1.isPropertyAccessExpression(node) || node.name.text !== "prototype") return false;
89
- const object = node.expression;
90
- if (!ts$1.isIdentifier(object)) return false;
91
- return !!methodConfigurations.get(method)?.supportedTypes.has(object.text);
92
- }
93
- function parseCallExpression(node) {
94
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
95
- const methodName = node.expression.name.text;
96
- const receiver = node.expression.expression;
97
- if (methodConfigurations.has(methodName)) return {
98
- argumentNodes: node.arguments,
99
- method: methodName,
100
- target: receiver
101
- };
102
- if (methodName !== "call" && methodName !== "apply") return;
103
- return parsePrototypeCall(node, methodName === "apply");
104
- }
105
- function parsePrototypeCall(node, isApply) {
106
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
107
- const callee = node.expression.expression;
108
- if (!ts$1.isPropertyAccessExpression(callee)) return;
109
- const method = callee.name.text;
110
- if (!methodConfigurations.has(method)) return;
111
- const prototypeObject = callee.expression;
112
- if (!isValidPrototypePattern(prototypeObject, method)) return;
113
- const [targetArgument, ...restArguments] = node.arguments;
114
- if (!targetArgument) return;
115
- if (isApply) {
116
- const arrayArgument = restArguments[0];
117
- if (!arrayArgument || !ts$1.isArrayLiteralExpression(arrayArgument)) return;
118
- return {
119
- argumentNodes: arrayArgument.elements.filter((element) => !ts$1.isSpreadElement(element)),
120
- method,
121
- target: targetArgument
122
- };
123
- }
124
- return {
125
- argumentNodes: restArguments,
126
- method,
127
- target: targetArgument
128
- };
129
- }
130
- var negativeIndexLengthMethods_default = ruleCreator.createRule(typescriptLanguage, {
131
- about: {
132
- description: "Prefer negative index over `.length - index` for `at`, `slice`, `splice`, and similar methods.",
133
- id: "negativeIndexLengthMethods",
134
- presets: ["stylisticStrict"]
135
- },
136
- messages: { preferNegativeIndex: {
137
- primary: "Prefer using a negative index over `.length - index` for `{{ method }}`.",
138
- secondary: ["Negative indices are more concise and express the intent of accessing from the end more clearly.", "Methods like `.at()`, `.slice()`, and `.splice()` support negative indices natively."],
139
- suggestions: ["Use a negative index instead of subtracting from `.length`."]
140
- } },
141
- setup(context) {
142
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
143
- const parsed = parseCallExpression(node);
144
- if (!parsed) return;
145
- const { argumentNodes, method, target } = parsed;
146
- const methodConfiguration = methodConfigurations.get(method);
147
- if (!methodConfiguration) return;
148
- if (!isSupportedType(target, typeChecker, methodConfiguration.supportedTypes)) return;
149
- const fixableArguments = [];
150
- for (const index of methodConfiguration.argumentIndexes) {
151
- const argument = argumentNodes[index];
152
- if (!argument) continue;
153
- const info = getNegativeIndexLengthNode(argument, target, sourceFile);
154
- if (info) fixableArguments.push({
155
- argument,
156
- info
157
- });
158
- }
159
- if (!fixableArguments.length) return;
160
- context.report({
161
- data: { method },
162
- fix: fixableArguments.map(({ info }) => {
163
- return {
164
- range: {
165
- begin: info.binaryExpression.getStart(sourceFile),
166
- end: info.binaryExpression.getEnd()
167
- },
168
- text: `-${info.rightOperand.getText(sourceFile)}`
169
- };
170
- }),
171
- message: "preferNegativeIndex",
172
- range: getTSNodeRange(node, sourceFile)
173
- });
174
- } } };
175
- }
176
- });
177
- //#endregion
178
- export { negativeIndexLengthMethods_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports comparisons with -0 that may not behave as expected.";
3
- readonly id: "negativeZeroComparisons";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unexpectedNegativeZeroComparison", undefined>;
9
- export default _default;
@@ -1,46 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isComparisonOperator, isEqualityOperator, isNegatedEqualityOperator } from "./utils/operators.js";
3
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import { SyntaxKind } from "typescript";
5
- //#region src/rules/negativeZeroComparisons.ts
6
- function isNegativeZero(node) {
7
- return node.kind === SyntaxKind.PrefixUnaryExpression && node.operator === SyntaxKind.MinusToken && node.operand.kind === SyntaxKind.NumericLiteral && node.operand.text === "0";
8
- }
9
- var negativeZeroComparisons_default = ruleCreator.createRule(typescriptLanguage, {
10
- about: {
11
- description: "Reports comparisons with -0 that may not behave as expected.",
12
- id: "negativeZeroComparisons",
13
- presets: ["logical", "logicalStrict"]
14
- },
15
- messages: { unexpectedNegativeZeroComparison: {
16
- primary: "Comparisons with -0 using {{ operator }} do not distinguish between -0 and +0.",
17
- secondary: ["In JavaScript, -0 and +0 are considered equal when using comparison operators like === or ==, even though they are distinct values.", "To properly check for -0, use `Object.is(value, -0)` which correctly distinguishes between -0 and +0."],
18
- suggestions: ["Use `Object.is()` to reliably check if a value is -0."]
19
- } },
20
- setup(context) {
21
- function generateObjectIsText(node, isNegated, sourceFile) {
22
- const objectIsCall = `Object.is(${node.left.getText(sourceFile)}, ${node.right.getText(sourceFile)})`;
23
- return isNegated ? `!${objectIsCall}` : objectIsCall;
24
- }
25
- return { visitors: { BinaryExpression: (node, { sourceFile }) => {
26
- if (!isComparisonOperator(node.operatorToken) || !isNegativeZero(node.left) && !isNegativeZero(node.right)) return;
27
- const operator = node.operatorToken.getText(sourceFile);
28
- const range = {
29
- begin: node.getStart(sourceFile),
30
- end: node.getEnd()
31
- };
32
- context.report({
33
- data: { operator },
34
- message: "unexpectedNegativeZeroComparison",
35
- range,
36
- suggestions: isEqualityOperator(node.operatorToken) ? [{
37
- id: "useObjectIs",
38
- range,
39
- text: generateObjectIsText(node, isNegatedEqualityOperator(node.operatorToken), sourceFile)
40
- }] : void 0
41
- });
42
- } } };
43
- }
44
- });
45
- //#endregion
46
- export { negativeZeroComparisons_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports `if` statements that are the only statement inside an `else` block or inside another `if` without an `else`.";
3
- readonly id: "nestedStandaloneIfs";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "lonelyIfInElse" | "lonelyIfInIf", undefined>;
9
- export default _default;